找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 605|回复: 3

[求助]:真是活见鬼了!

[复制链接]
发表于 2003-1-14 17:35:37 | 显示全部楼层 |阅读模式

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

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

×
明明选中的是一个PLine,可是程序中语句
pEnt->isKindOf(AcDbPolyline::desc()) (pEnt为选中的实体)
返回的总是false,可是昨天运行还没有这个问题,那位大侠给说说是什么原因呀?会不会是类库坏了,我装了那个VisualAssist.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-1-14 17:43:55 | 显示全部楼层

Re: [求助]:真是活见鬼了!

最初由 geminigui 发布
[B]明明选中的是一个PLine,可是程序中语句
pEnt->isKindOf(AcDbPolyline::desc()) (pEnt为选中的实体)
返回的总是false,可是昨天运行还没有这个问题,那位大侠给说说是什么原因呀?会不会是类库坏了,我装了那个Visua... [/B]


选择实体后,你用:

pEnt->isA()->name() 看看打印出来的是什么类?

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

使用道具 举报

 楼主| 发表于 2003-1-14 18:07:40 | 显示全部楼层

下面是我的代码,运行结果老是返回Adesk::kFalse

  1. <normalfont>
  2. Adesk::Boolean InputZuoxiArea(AcDbObjectId &PLineId)
  3. {       
  4.         ads_name  entname;
  5.         ads_point point;       
  6.         Acad::ErrorStatus retStat;
  7.         AcDbEntity *pEnt;
  8.         if( ads_entsel("\n请选择一个坐席区域:", entname, point) != RTNORM )
  9.         {
  10.                 ads_printf("\n坐席区域选择错误!");
  11.                 return Adesk::kFalse;
  12.         }
  13.        
  14.         acdbGetObjectId( PLineId, entname );
  15.         ads_redraw(entname, 3);                                        /* 加亮显示实体 */
  16.         if ((retStat=acdbOpenObject(pEnt,PLineId,AcDb::kForRead))!=Acad::eOk)
  17.         {               
  18.                 pEnt->close();
  19.                 ads_redraw(entname, 4);
  20.                 ads_printf("\n请选择正确的坐席区域!");
  21.                 return Adesk::kFalse;
  22.         }       
  23.         if (pEnt->isKindOf(AcDbPolyline::desc()))
  24.         {  // it is Polyline       
  25.                 if(pEnt->layer()!="ZuoxiArea")
  26.                         //如果该PLine不处于ZuoxiArray层
  27.                 {
  28.                         pEnt->upgradeOpen();
  29.                         pEnt->setLayer("ZuoxiArea",false);
  30.                 }
  31.                 pEnt->close();
  32.                 return Adesk::kTrue;       
  33.         }
  34.         else //
  35.         {               
  36.                 pEnt->close();               
  37.                 ads_redraw(entname, 4);
  38.                 ads_printf("\n请选择正确的坐席区域!");
  39.                 return Adesk::kFalse;// FALSE;
  40.         }

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-1-14 18:34:37 | 显示全部楼层

Re: 下面是我的代码,运行结果老是返回Adesk::kFalse

最初由 geminigui 发布
[B][code]<normalfont>
Adesk::Boolean InputZuoxiArea(AcDbObjectId &PLineId)
{       
        ads_name  entname;
        ads_point point;       
        Acad::ErrorStatus retStat;
        AcDbEntity *pEnt;
        if( ads_entsel("\n请选择一个坐?.. [/B]


上面有4个返回FALSE,你能确定具体是从哪个返回的?

还有字符串比较不应该用 != 应该改为 stricmp

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 11:15 , Processed in 0.465954 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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