daptop 发表于 2003-8-19 10:42:00

如何通过实体的ID号或实体名字得到实体的坐标!!!急急急急急急急急急

我已知同一图块中的各个实体的ID号,我如何才能通过ID号得到各个实体的坐标??
我是想把它们一个一个的输出到文件中保存!!
        AcDbEntity *pEntity;//定义指向实体的指针;
      pBlockIterator->getEntity(pEntity,AcDb::kForWrite);//获得指向实体的指针
       //得到块表中的实体类名
         AcDbObjectId eld;
                eld=pEntity->objectId();
                ads_namepCname;
                acdbGetAdsName(pCname,eld)
                      acedCommand(RTSTR,"acisout",RTENAME,"pCname",RTSTR,"");
         ads_command(RTSTR,"",RTSTR,"e:\\code\\",RTSTR,"dawing",RTSTR,"",0);
这样做,对吗??

可是总有提示:没有选中实体!!

funlxming 发表于 2003-8-19 11:31:00

No solids, regions or ACIS bodies selected
//你有沒有檢查從塊中取出實體的類型.

daptop 发表于 2003-8-19 11:48:00

这样做对吗??你可以给我点提示吗 ?、
我的目的是想把窗口中的多个实体一个一个的输出,存到文件中!!!

leeyeafu 发表于 2003-8-20 09:30:00

与我回复过的一个三维旋转例子一样,不建议使用acedCommand()函数

当然,你若认为acedCommand()函数更容易掌握也不是不可以,只是该函数内要用到的实体必须在用acedGetAdsName()函数获取实体的ads_name。详见:http://bbs.mjtd.com/forum.php?mod=forumdisplay&fid=14
提示未选择实体可能是因为ACISOUT命令只能输出面域、3D实体等对象,在你的程序中若pEntity指向的对象不是面域或实体就会出现以上提示。
建议使用ARX全局函数:acisOut()函数。
   AcdbEntity *pEntity;//定义指向实体的指针;
   AcDbVoidPtrArray ptr;//声明一个数组用于存放要输出的实体
   AcDbBlockTableRecordIterator *pBlockIterator;
   pBlockTableRecord->newIterator(pBlockIterator); //pBlockTableRecord是块表记录指针
for(pBlockIterator->start(); !pBlockIterator->done(); pBlockIterator->step())
{
   pblockIterator->GetEntity(pEntity,Acdb::kForWrite);//获得指向实体的指针
   if (pEntity->isKindOf(AcDbRegion::desc()) ||
      pEntity->isKindOf(AcDbSolid3d::desc()) ||
      pEntity->isKindOf(AcDbBody::desc()))
      //acisOut仅对于以上三个类型实体或者其派生类有效
   {
         ptr.append(*pEntity);
      }
}//end of for
if (acisOut("YourACISFileName", ptr)==Acad::eOk)
{
   acutPrintf("ACIS Out Successful!);
}
页: [1]
查看完整版本: 如何通过实体的ID号或实体名字得到实体的坐标!!!急急急急急急急急急