明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1123|回复: 0

你是否遇到过下面的问题?

[复制链接]
发表于 2004-10-9 19:32:00 | 显示全部楼层 |阅读模式
我在使用AcDbRegion类的时候,发现该函数执行时会在AutoCAD命令行输出一些乱码,不信你可以试一下下面的代码段。使用方法:创建一个新工程,下面的语句可以直接放在一个命令的执行函数中,然后创建一个新图形,在图形中创建两个有交集的面域,运行此段代码,分别选择两个面域进行操作,就会在命令行产生乱码。
  1. // 测试两个面域的交集
  2.   ads_name en1, en2;
  3.   ads_point pt;
  4.   int ss1 = acedEntSel("\n选择第一个面域:", en1, pt);
  5.   int ss2 = acedEntSel("\n选择第二个面域:", en2, pt);
  6.    
  7.   if (ss1 == RTNORM && ss2 == RTNORM)
  8.   {
  9.     AcDbObjectId entId;
  10.     Acad::ErrorStatus es = acdbGetObjectId(entId, en1);
  11.    
  12.     AcDbEntity *pEnt1, *pEnt2;
  13.     es = acdbOpenAcDbEntity(pEnt1, entId, AcDb::kForWrite);
  14.    
  15.     es = acdbGetObjectId(entId, en2);
  16.     es = acdbOpenAcDbEntity(pEnt2, entId, AcDb::kForWrite);
  17.    
  18.     if (pEnt1->isKindOf(AcDbRegion::desc()) &&
  19.       pEnt2->isKindOf(AcDbRegion::desc()))
  20.     {
  21.       AcDbRegion *pRegion1 = AcDbRegion::cast(pEnt1);
  22.       AcDbRegion *pRegion2 = AcDbRegion::cast(pEnt2);
  23.       
  24.       if (pRegion1 != NULL &&pRegion2 != NULL)
  25.       {
  26.         es = pRegion1->booleanOper(AcDb::kBoolIntersect, pRegion2);        
  27.       }
  28.     }
  29.     pEnt1->close();
  30.     pEnt2->close();   
  31.   }
复制代码
   希望大家能试一下,如果确实都存在这个问题,我就公布我的处理方法。否则,就是画蛇添足了。: )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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