zfbj 发表于 2004-10-9 19:32:00

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

我在使用AcDbRegion类的时候,发现该函数执行时会在AutoCAD命令行输出一些乱码,不信你可以试一下下面的代码段。使用方法:创建一个新工程,下面的语句可以直接放在一个命令的执行函数中,然后创建一个新图形,在图形中创建两个有交集的面域,运行此段代码,分别选择两个面域进行操作,就会在命令行产生乱码。// 测试两个面域的交集
ads_name en1, en2;
ads_point pt;
int ss1 = acedEntSel("\n选择第一个面域:", en1, pt);
int ss2 = acedEntSel("\n选择第二个面域:", en2, pt);
   
if (ss1 == RTNORM && ss2 == RTNORM)
{
    AcDbObjectId entId;
    Acad::ErrorStatus es = acdbGetObjectId(entId, en1);
   
    AcDbEntity *pEnt1, *pEnt2;
    es = acdbOpenAcDbEntity(pEnt1, entId, AcDb::kForWrite);
   
    es = acdbGetObjectId(entId, en2);
    es = acdbOpenAcDbEntity(pEnt2, entId, AcDb::kForWrite);
   
    if (pEnt1->isKindOf(AcDbRegion::desc()) &&
      pEnt2->isKindOf(AcDbRegion::desc()))
    {
      AcDbRegion *pRegion1 = AcDbRegion::cast(pEnt1);
      AcDbRegion *pRegion2 = AcDbRegion::cast(pEnt2);
      
      if (pRegion1 != NULL &&pRegion2 != NULL)
      {
      es = pRegion1->booleanOper(AcDb::kBoolIntersect, pRegion2);      
      }
    }
    pEnt1->close();
    pEnt2->close();   
}    希望大家能试一下,如果确实都存在这个问题,我就公布我的处理方法。否则,就是画蛇添足了。: )
页: [1]
查看完整版本: 你是否遇到过下面的问题?