zdfwyh 发表于 2005-1-14 10:49:00

如何遍历图纸中所有实体

我希望能够检索图纸中我指定的类型实体信息,但不知如何遍历?

王咣生 发表于 2005-1-14 12:32:00

回复

acedSSGet做选择集(用过滤器)

pengst 发表于 2005-1-15 00:22:00

Acad::ErrorStatus es;


        AcDbBlockTable *pBlkTbl;


        es=CurrectWorkingDWG->getBlockTable(pBlkTbl, AcDb::kForRead);


        if (es!=Acad::eOk) {return;}


        AcDbBlockTableRecord *pBlkTblRcd;<BR>        es = pBlkTbl-&gt;getAt(ACDB_MODEL_SPACE,pBlkTblRcd,AcDb::kForRead);<BR>        pBlkTbl-&gt;close();<BR>        if (es!=Acad::eOk) {return;}


        AcDbBlockTableRecordIterator *pBlkTblRcdItr;<BR>        es=pBlkTblRcd-&gt;newIterator(pBlkTblRcdItr);<BR>        if (es!=Acad::eOk) {pBlkTblRcd-&gt;close();return;}


        AcDbEntity *pEnt;<BR>        for (pBlkTblRcdItr-&gt;start();!pBlkTblRcdItr-&gt;done();pBlkTblRcdItr-&gt;step()) {<BR>                pBlkTblRcdItr-&gt;getEntity(pEnt,AcDb::kForRead);<BR>//...........<BR>                pEnt-&gt;close();<BR>        }<BR>        pBlkTblRcd-&gt;close();<BR>        delete pBlkTblRcdItr;


看似麻烦,实际上比acedSSGet快且有效

王咣生 发表于 2005-1-15 00:36:00

回复

比acedSSGet快且有效?


不能这样说? 既然要寻找指定的类型信息实体, 就要用过滤器来选择, 比如:


图面上有2000个实体,其中只有一条LINE, 就要以LINE为过滤条件,而不能遍历全部实体!

zdfwyh 发表于 2005-1-20 08:29:00

谢谢各位
页: [1]
查看完整版本: 如何遍历图纸中所有实体