找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 785|回复: 5

[ARX程序]:一个看似简单的编程问题,困扰了我一个月....请高手指点!

[复制链接]
发表于 2004-5-28 10:41:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我想实现一个程序,在图纸空间内,用鼠标选择一个文, ,程序自动把文本的内容复制下来, 再用鼠标选择第二个文本, 这时程序会自动把第二个文本的内容替换成第一个文本的内容! 操作完毕!

我写了好多多次, 参考一些例子, 进行多次修改, 可就是无法把这个程序成功的写出来!
我是一个新手,苦于没有导师, 只能是自学了, 觉得很吃力, 连上面这样的简单(我想应该不会很难, 但对于我这瞎摸的新手, 已经是很难了 )的例子都写不成功, 心里真不是个滋味, 现在一点劲都提不起来, 恳请那位高手大虾好心能帮帮小弟. 完成这个程序咯! (核心代码就行了)
激不尽!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-5-28 11:44:29 | 显示全部楼层
選擇文本圖元會不會,會的話就沒有人和問題呀!

我會繼續灌注你這個帖子

直到你會了為止

很容易的

動手就會了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-28 19:11:17 | 显示全部楼层
Corilla ,  你在另外一个贴子中提出同样的问题,我在21日 把你的程序改写后已贴出,你没有看到
啊?该改写后的程序已在我的AutoCAD中试运行正常。在这里我再次 把该程序提供如下:


  1. void TextToText()
  2. {
  3.     struct resbuf *cb, *ed1, *ed2, *tmp;
  4.     ads_name   ent1,ent2;
  5.     ads_point  pickPt1,pickPt2;
  6.     char       *sp1, *sp2;
  7.     int        es;


  8.     es = acedEntSel("\nPick first text: ", ent1, pickPt1);
  9.     if (es != RTNORM) return;

  10.     ed1 = acdbEntGet(ent1);
  11.     for (cb =ed1; cb; cb =cb->rbnext) {
  12.         if (cb->restype==0) {
  13.             if (strcmp(cb->resval.rstring,"TEXT") != 0) {
  14.                 acutRelRb(ed1);
  15.                 acutPrintf("你选择的实体错误,请指定字符实体!");
  16.                 return;
  17.             }
  18.         } else if (cb->restype==1) {
  19.             sp1 = cb->resval.rstring;
  20.         }
  21.     }

  22.     es = acedEntSel("\nPick second text: ", ent2, pickPt2);
  23.     if (es != RTNORM) {
  24.         acutRelRb(ed1);
  25.         return;
  26.     }

  27.     ed2 = acdbEntGet(ent2);
  28.     for (cb =ed2; cb; cb =cb->rbnext) {
  29.         if (cb->restype==0) {
  30.             if (strcmp(cb->resval.rstring,"TEXT") != 0) {
  31.                 acutRelRb(ed1);
  32.                 acutRelRb(ed2);
  33.                 acutPrintf("你选择的实体错误,请指定字符实体!");
  34.                 return;  //
  35.             }
  36.         } else if (cb->restype==1) {
  37.             tmp = acutBuildList(RTSTR, sp1, 0);
  38.             sp2 = cb->resval.rstring;
  39.             cb->resval.rstring = tmp->resval.rstring;
  40.             tmp->resval.rstring = sp2;
  41.             acutRelRb(tmp);
  42.             break;
  43.         }
  44.     }

  45.     acdbEntMod(ed2);
  46.     acdbEntUpd(ent2);

  47.     acutRelRb(ed1);
  48.     acutRelRb(ed2);
  49. }
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-31 18:15:22 | 显示全部楼层
很感谢各位前辈以小弟的指点与帮助, 今天这个程序总算是通过测试了, 心里很振奋! 毕竟这是本人学习ARX以来所写的第一个用于应用的程序, 虽然是那么简单, 但对小弟来说已经是很艰辛了.
整个过程中,小弟犯了一个很严重的错误, 因为我对AutoCAD不熟悉, 我把多行文本误以为是单行文本, 用多行文本去测试程序, 所以程序肯定不会成功通过测试! (这算是这程序困扰差不多一个月的主要原因了.当然工作忙,未能专心学习ARX也是原因之一).

下一步工作: 是把这个这个程序写好,A)加入选中焦点功能,如选中一个文本,显示为虚字; B)加入一对多复制功能!如一次性可以修改后选择的多个文本里的内容,使它们和第一个文本内容一样.

希望各位大家能继续的支持我...
以后我将会把代码贴上来让大家来指正....


在这再次特别感谢ishou前辈!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-15 11:41:27 | 显示全部楼层
受教育了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-16 16:05:29 | 显示全部楼层
不错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 19:31 , Processed in 0.586072 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表