明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1245|回复: 2

很奇怪的选择集问题.

[复制链接]
发表于 2008-5-21 16:02:00 | 显示全部楼层 |阅读模式

通过 int rc = ads_ssget(_T("W"), pt1, pt2, NULL, ssname);

拾取到一个实体后,用pEnt->transformBy将其移出拾取范围,

然而再次执行ads_ssget(_T("W"), pt1, pt2, NULL, ssname);

该实体再次被选中,不知道为什么?一直搞不清楚,希望有人能指点迷津啊


 楼主| 发表于 2008-5-21 16:05:00 | 显示全部楼层
  1. int rc = ads_ssget(_T("W"), pt1, pt2, NULL, ssname);
  2. if(rc != RTNORM)
  3. {
  4.   return  ;
  5. }
  6. long length;
  7. ads_sslength(ssname, &length);
  8. ads_name entName;
  9. AcDbObjectId oId;
  10. long rejected = 0;
  11. for(int i=0; i<length; i++)
  12. {
  13.   rc=ads_ssname(ssname, i, entName);
  14.   es=acdbGetObjectId(oId, entName);
  15.   AcDbEntity *pEnt ;
  16.   es = acdbOpenAcDbEntity( pEnt , oId , AcDb::kForWrite ) ;
  17.   AcGeMatrix3d mat ;
  18.   AcGeVector3d vec( pt1[X]-pt2[X] , pt1[Y]-pt2[Y] , 0 ) ;
  19.   mat.setTranslation( vec) ;
  20.   es = pEnt->transformBy( mat ) ;
  21.   pEnt->close() ;
  22. }
  23.   ads_ssfree(ssname);
  24. rc = ads_ssget(_T("W"), pt1, pt2, NULL, ssname);   //前面被移出的实体依旧被选中
  25. ads_sslength(ssname, &length);
  26. if(rc != RTNORM)
复制代码
 楼主| 发表于 2008-5-22 09:59:00 | 显示全部楼层

解决方法:

在移动完实体后,刷新视图就好了

actrTransactionManager->flushGraphics();  //刷新视图

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:03 , Processed in 0.178035 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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