找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1112|回复: 8

[求助]:关于getXXX()和entsel()的返回值~~

[复制链接]
发表于 2003-7-30 15:46:32 | 显示全部楼层 |阅读模式

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

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

×
请教:
我用ads_getxxx()的时候,和ads_initget()与ads_getinput()组合起来一起用的时候没有问题。。


  1.   [FONT=courier new]
  2. ads_initget(RSG_OTHER,NULL);
  3. int ss = ads_getpoint(asDblArray(intrePt),"\n点取尺寸断开点 /输断开长度 /[/n]-n等分:",adsTmpPt2);
  4. if(ss == RTNORM)
  5. {}
  6. else if(ss  == RTKWORD)
  7. {
  8. ads_getinput(name);
  9. }
  10. 或者有关键字。。。
  11. ads_initget(RSG_NONEG,"A a H h");
  12. int ss = ads_getpoint(asDblArray(intrePt),"\nArc /HalfWith:",adsTmpPt2);
  13. if(ss == RTNORM)
  14. {}
  15. else if(ss  == RTKWORD)
  16. {
  17. ads_getinput(name);
  18. }
  19. 都没有问题。。。。
  20. 但是下面的却总是返回RTNORM。。。
  21.         ads_initget(RSG_NONEG,NULL);
  22.         int retCode = ads_entsel("\n请选取一条平行线/输入角度:",entname,prespt);
  23. if(retCode == RTNORM)
  24. {
  25. }
  26. else if(retCode == RTKWORD)
  27. {
  28.         ads_getinput(name);
  29. }

  30. ads_entsel[]返回的总是RTNORM,请高手指点。。。。
  31. 看联机帮助上好像没有说跟ads_initget()与ads_getinput()组合用的时候ads_getXXX()和ads_entsel[]有什么不同。。。

  32.   [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-7-30 15:55:19 | 显示全部楼层
看了一下ARX的帮助,里面有这样一句话:
The acedEntSel() function returns RTNORM if it succeeds

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

使用道具 举报

 楼主| 发表于 2003-7-30 15:58:23 | 显示全部楼层
斑竹~~
我用了ads_initget()以后,如果有值输入的时候,他的返回值是RTKWORD的,而且输入的值应该被ads_getinput()截获的,但这里就是不出来。。。返回的总是RTNORM,  一定是我在那个地方弄错了。。:(
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-30 16:06:55 | 显示全部楼层
看看这句:
ads_initget(RSG_NONEG,NULL);
你在这里应该设置你的关键字列表的,大致形式是这样:
ads_initget(RSG_NONEG,"Yes, No");
然后就可以捕获关键字Yes和No了!!
:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-30 16:12:28 | 显示全部楼层
呵呵,谢谢斑竹,不过这个方法我在贴贴子以前就用过了,关键字是可以的,但我现在想同时实现关键字输入和别的非关键字输入都能接受,然后在ads_getinput()里面去识别。。。这一点在ads_getXXX()里面可以实现,但是在ads_entsel()就~~~~

我见过别人一个软件——探索者用ads_entsel()跟ads_initget()与ads_getinput()组合,既可以输入关键字,又可以直接输入数据。。。不知道是怎么实现的。。。好羡慕~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-30 16:33:45 | 显示全部楼层
最初由 Echoyin 发布
[B]呵呵,谢谢斑竹,不过这个方法我在贴贴子以前就用过了,关键字是可以的,但我现在想同时实现关键字输入和别的非关键字输入都能接受,然后在ads_getinput()里面去识别。。。这一点在ads_getXXX()里面可以实现,但是在... [/B]


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

使用道具 举报

 楼主| 发表于 2003-7-30 16:41:39 | 显示全部楼层
下面是比较完整的代码,请帮我 看看 ,谢谢了~

  1.   [FONT=courier new]
  2. ads_name entname;
  3. ads_point prespt,pt;
  4. ads_real angle;
  5. AcDbObjectId objId;
  6. AcDbEntity *pEnt;
  7. Acad::ErrorStatus es;
  8. char name[50];
  9. AcGeVector3d vec(1,0,0);

  10. //选取直线或者输入角度,取得vec
  11. ads_initget(RSG_OTHER+RSG_NONEG,NULL);
  12. int retCode = ads_entsel("\n请选取一条平行线/A-输入角度:",entname,prespt);
  13. if(retCode == RTNORM)
  14. {
  15.         es = acdbGetObjectId(objId,entname);
  16.         es = acdbOpenAcDbEntity(pEnt,objId,AcDb::kForRead);
  17.                
  18.         if(pEnt->isKindOf(AcDbLine::desc()))
  19.         {
  20.                              AcDbLine *pline = AcDbLine::cast(pEnt);
  21.                 AcGePoint3d spt,ept;
  22.                 spt = pline->startPoint();
  23.                 ept = pline->endPoint();

  24.                 if(spt.x < ept.x)
  25.                        vec = ept - spt;
  26.                 else
  27.                          vec = spt - ept;
  28.         }
  29.         else
  30.         {
  31.                 ads_printf("\n没有选择或选择了不匹配的实体");
  32.         }
  33.                
  34. }
  35. else if(retCode == RTKWORD)
  36. {
  37.         ads_getinput(name);
  38.         if(!strcmp(name,""))
  39.         {
  40.                 if(name[0]=='A' || name[0] == 'a')
  41.                 {
  42.                         ads_getreal("\n请输入角度:",&angle);
  43.                         vec.rotateBy(angle*PI/180,AcGeVector3d(0,0,1));
  44.                 }
  45.                 else
  46.                 {
  47.                         vec.rotateBy(atof(name)*PI/180,AcGeVector3d(0,0,1));
  48.                 }
  49.         }
  50.          else
  51.                      return;
  52. }
  53. else
  54.         return;

  55. 我想实现的功能是当ads_entsel()调用时,用鼠标选择直线(此时应该返回RTNORM)或者直接输入数字(此时应该返回RTKWORD),至于输入的是什么东西,则在ads_getinput()所截获的内容进行判别。。。
  56. 但这里却不管是选择直线还是输入数据,返回的都是RTNORM。。。

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

使用道具 举报

发表于 2003-7-31 12:18:48 | 显示全部楼层
最初由 Echoyin 发布
[B]下面是比较完整的代码,请帮我 看看 ,谢谢了~
[CODE]
  
ads_name entname;
ads_point prespt,pt;
ads_real angle;
AcDbObjectId objId;
AcDbEntity *pEnt;
Acad::ErrorStatus es;
cha... [/B]



我想您的意图就是在输入角度的时候要省略输入“A”这个步骤,而直接输入角度。但是我考虑了好长时间感觉这样实现起来有问题,因为acedEntSel()函数是不允许任意输入的,只能接受选择实体和输入关键字列表里面设置的关键字,使得你就无法输入你的角度值。

在ARX中,acedGetXXX()(注:acedGetString()函数除外)的输入函数是可以设置任意输入的;
而acedEntSel()、acedNEntSelP() 以及acednEntSel() 函数是不可以设置任意输入的。

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

使用道具 举报

 楼主| 发表于 2003-7-31 22:27:31 | 显示全部楼层
谢谢斑竹先~

我费了好大的功夫,还是找不到好的解决办法,
现在是只能用关键字了——给蛇画一只脚~   :(,这是个笨办法,但也是没有办法的办法,唉~
如果有更好的办法,请大家多指点指点小弟~,谢谢了~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 02:35 , Processed in 0.202310 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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