leigis 发表于 2009-2-6 00:41:00

求助!关于按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/>&nbsp;{<br/>&nbsp;&nbsp;// 判断是否存在名称为“dgx”的图层<br/>&nbsp;&nbsp;AcDbLayerTable *pLayerTbl;<br/>&nbsp;&nbsp;acdbHostApplicationServices()-&gt;workingDatabase()<br/>&nbsp;&nbsp;&nbsp;-&gt;getSymbolTable(pLayerTbl, AcDb::kForRead);<br/>&nbsp;&nbsp;if (!pLayerTbl-&gt;has("dgx"))<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;acutPrintf("\n当前图形中未包含\"dgx\"图层!");<br/>&nbsp;&nbsp;&nbsp;pLayerTbl-&gt;close();<br/>&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;AcDbObjectId layerId; // “测试”图层的ID<br/>&nbsp;&nbsp;pLayerTbl-&gt;getAt("dgx", layerId);<br/>&nbsp;&nbsp;pLayerTbl-&gt;close();<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;//AcDbObjectIdArray entIds;<br/>&nbsp;&nbsp;//entIds.append(pEnt-&gt;objectId());<br/>&nbsp;&nbsp;// 获得当前数据库的块表<br/>&nbsp;&nbsp;AcDbBlockTable *pBlkTbl;<br/>&nbsp;&nbsp;acdbHostApplicationServices()-&gt;workingDatabase()-&gt;getBlockTable(pBlkTbl, AcDb::kForRead);<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;// 获得模型空间的块表记录<br/>&nbsp;&nbsp;AcDbBlockTableRecord *pBlkTblRcd;<br/>&nbsp;&nbsp;pBlkTbl-&gt;getAt(ACDB_MODEL_SPACE, pBlkTblRcd,<br/>&nbsp;&nbsp;&nbsp;AcDb::kForRead);<br/>&nbsp;&nbsp;pBlkTbl-&gt;close();<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;// 创建块表记录遍历器<br/>&nbsp;&nbsp;AcDbBlockTableRecordIterator *pItr; // 块表记录遍历器<br/>&nbsp;&nbsp;pBlkTblRcd-&gt;newIterator(pItr);<br/>&nbsp;&nbsp;AcDbEntity *pEnt; // 遍历的临时实体指针<br/>&nbsp;&nbsp;ads_name entName;</p><p>&nbsp;&nbsp;for (pItr-&gt;start(); !pItr-&gt;done(); pItr-&gt;step())<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;// 利用遍历器获得每一个实体<br/>&nbsp;&nbsp;&nbsp;pItr-&gt;getEntity(pEnt, AcDb::kForWrite);<br/>&nbsp;&nbsp;&nbsp;AcDbObjectId entId;<br/>&nbsp;&nbsp;&nbsp;entId = pEnt-&gt;objectId();<br/>&nbsp;&nbsp;------------------------------------------------------------------&nbsp;<br/>&nbsp;&nbsp;&nbsp;acdbGetAdsName(entName,entId);<br/>&nbsp;&nbsp;&nbsp;struct resbuf *rbEnt; // 保存实体数据的结果缓冲区<br/>&nbsp;&nbsp;&nbsp;struct resbuf *rb;&nbsp;&nbsp;&nbsp; // 用于遍历rbEnt的结果缓冲区<br/>&nbsp;&nbsp;&nbsp;// 从entName获得保存实体数据的结果缓冲区<br/>&nbsp;&nbsp;&nbsp;rbEnt = acdbEntGet(entName);<br/>&nbsp;&nbsp;&nbsp;rb = rbEnt;</p><p>------------------------------------------------------<br/>&nbsp;&nbsp;&nbsp;while (rb != NULL)<br/>&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;switch (rb-&gt;restype)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 8: // 图层<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;acutPrintf("\n图层:%s", rb-&gt;resval.rstring);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 39: // 厚度<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;acutPrintf("\n厚度:%s", rb-&gt;resval.rstring);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 30: // 高程<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (rb-&gt;resval.rreal == 60)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pEnt-&gt;setColorIndex(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;acutPrintf("\n高程:%d", rb-&gt;resval.rreal);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;default:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;} // switch<br/>&nbsp;&nbsp;&nbsp;&nbsp;rb = rb-&gt;rbnext; // 切换到下一个节点<br/>&nbsp;&nbsp;&nbsp;} // while<br/>&nbsp;&nbsp;&nbsp;// 注意需要关闭实体<br/>&nbsp;&nbsp;&nbsp;pEnt-&gt;close();<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;delete pItr; // 遍历器使用完毕之后一定要删除!<br/>&nbsp;&nbsp;pBlkTblRcd-&gt;close();<br/>&nbsp;}</p>
页: [1]
查看完整版本: 求助!关于按dfx码属性修改实体的函数,急急急!