如何通过实体的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);
这样做,对吗??
可是总有提示:没有选中实体!! No solids, regions or ACIS bodies selected
//你有沒有檢查從塊中取出實體的類型. 这样做对吗??你可以给我点提示吗 ?、
我的目的是想把窗口中的多个实体一个一个的输出,存到文件中!!!
与我回复过的一个三维旋转例子一样,不建议使用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]