求助!关于按dfx码属性修改实体的函数,急急急!
<p><table cellspacing="0" cellpadding="0"><tbody><tr><td class="t_msgfont" id="postmessage_10322">想做一个按dfx码属性修改实体的函数,不知道对不对,有没有高手告知 分割线处出了什么问题?还有更好的解决办法吗?请不吝赐教谢谢了!刚学arx 不懂的地方请大家多指点。</td></tr></tbody></table></p><p>static void leiArxMFC1_plist(void)<br/> {<br/> // 判断是否存在名称为“dgx”的图层<br/> AcDbLayerTable *pLayerTbl;<br/> acdbHostApplicationServices()->workingDatabase()<br/> ->getSymbolTable(pLayerTbl, AcDb::kForRead);<br/> if (!pLayerTbl->has("dgx"))<br/> {<br/> acutPrintf("\n当前图形中未包含\"dgx\"图层!");<br/> pLayerTbl->close();<br/> return;<br/> }<br/> AcDbObjectId layerId; // “测试”图层的ID<br/> pLayerTbl->getAt("dgx", layerId);<br/> pLayerTbl->close();<br/> <br/> //AcDbObjectIdArray entIds;<br/> //entIds.append(pEnt->objectId());<br/> // 获得当前数据库的块表<br/> AcDbBlockTable *pBlkTbl;<br/> acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForRead);<br/> <br/> // 获得模型空间的块表记录<br/> AcDbBlockTableRecord *pBlkTblRcd;<br/> pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,<br/> AcDb::kForRead);<br/> pBlkTbl->close();<br/> <br/> // 创建块表记录遍历器<br/> AcDbBlockTableRecordIterator *pItr; // 块表记录遍历器<br/> pBlkTblRcd->newIterator(pItr);<br/> AcDbEntity *pEnt; // 遍历的临时实体指针<br/> ads_name entName;</p><p> for (pItr->start(); !pItr->done(); pItr->step())<br/> {<br/> // 利用遍历器获得每一个实体<br/> pItr->getEntity(pEnt, AcDb::kForWrite);<br/> AcDbObjectId entId;<br/> entId = pEnt->objectId();<br/> ------------------------------------------------------------------ <br/> acdbGetAdsName(entName,entId);<br/> struct resbuf *rbEnt; // 保存实体数据的结果缓冲区<br/> struct resbuf *rb; // 用于遍历rbEnt的结果缓冲区<br/> // 从entName获得保存实体数据的结果缓冲区<br/> rbEnt = acdbEntGet(entName);<br/> rb = rbEnt;</p><p>------------------------------------------------------<br/> while (rb != NULL)<br/> {<br/> switch (rb->restype)<br/> {<br/> case 8: // 图层<br/> acutPrintf("\n图层:%s", rb->resval.rstring);<br/> break;<br/> case 39: // 厚度<br/> acutPrintf("\n厚度:%s", rb->resval.rstring);<br/> break;<br/> case 30: // 高程<br/> if (rb->resval.rreal == 60)<br/> {<br/> pEnt->setColorIndex(1);<br/> }<br/> acutPrintf("\n高程:%d", rb->resval.rreal);<br/> break;<br/> default:<br/> break;<br/> } // switch<br/> rb = rb->rbnext; // 切换到下一个节点<br/> } // while<br/> // 注意需要关闭实体<br/> pEnt->close();<br/> }<br/> delete pItr; // 遍历器使用完毕之后一定要删除!<br/> pBlkTblRcd->close();<br/> }</p>
页:
[1]