![]() |
【转帖】尺寸标注值
尺寸标注值
尺寸标注值 tchar s[100]; acgepoint3d ptemp; cstdiofile f; cfileexception e; double val; tchar *pfilename = _t("d:\\尺寸值.txt"); if (!f.open(pfilename, cfile::modecreate | cfile::modewrite, &e)) { acutprintf(_t("\n创建导出文件失败!")); return; } acdblayertable *playertbl; acdbhostapplicationservices()->workingdatabase() ->getsymboltable(playertbl, acdb::kforread); acedgetstring(null,_t("请输入要查找的图层名称:"),s); if (!playertbl->has(s)) { acutprintf(_t("\n当前图形中未包含你要查找的图层!")); playertbl->close(); return; } acdbobjectid layerid; // 图层的id playertbl->getat(s, layerid); playertbl->close(); // 获得当前数据库的块表 acdbblocktable *pblktbl; acdbhostapplicationservices()->workingdatabase() ->getblocktable(pblktbl, acdb::kforread); // 获得模型空间的块表记录 acdbblocktablerecord *pblktblrcd; pblktbl->getat(acdb_model_space, pblktblrcd, acdb::kforread); pblktbl->close(); // 创建块表记录遍历器 acdbblocktablerecorditerator *pitr; // 块表记录遍历器 pblktblrcd->newiterator(pitr); acdbentity *pent; // 遍历的临时实体指针 for (pitr->start(); !pitr->done(); pitr->step()) { // 利用遍历器获得每一个实体 pitr->getentity(pent, acdb::kforwrite); // 是否在图层上 if (pent->layerid() == layerid) { acdbaligneddimension *adimension = acdbaligneddimension::cast(pent);//对齐标注 acdbrotateddimension *rodimension =acdbrotateddimension::cast(pent);//转角标注 acdbradialdimension *rdimension =acdbradialdimension::cast(pent);//半径标注 acdbdiametricdimension *ddimension =acdbdiametricdimension::cast(pent);//直径标注 acdbordinatedimension *odimension =acdbordinatedimension::cast(pent);//坐标标注 acdb2lineangulardimension *ldimension=acdb2lineangulardimension::cast(pent);//角度标注 if (adimension != null) { acutprintf(_t("\n对齐标注文字是: %.0f"),adimension->measurement( val )); cstring duiqi; cstring str1; str1.format(_t("%d"), adimension->measurement( val)); duiqi="对齐标注文字是:"; duiqi+= str1; f.writestring(duiqi); f.writestring(_t("\n")); } if (rodimension != null) { acutprintf(_t("\n转角标注文字是: %.0f"),rodimension->measurement(val)); cstring zhuanjiao; cstring str2; str2.format(_t("%.0f"), rodimension->measurement(val)); zhuanjiao="转角标注文字是:"; zhuanjiao+= str2; f.writestring(zhuanjiao); f.writestring(_t("\n")); } if (rdimension != null) { acutprintf(_t("\n半径标注文字是: %.0f"),rdimension->measurement(val)); cstring banjing; cstring str3; str3.format(_t("%.0f"),rdimension->measurement(val)); banjing="半径标注文字是:"; banjing+= str3; f.writestring(banjing); f.writestring(_t("\n")); } if (ddimension!= null) { acutprintf(_t("\n直径标注文字是: %.0f"),ddimension->measurement(val)); cstring zhijing; cstring str4; str4.format(_t("%.0f"),ddimension->measurement(val)); zhijing="直径标注文字是:"; zhijing+= str4; f.writestring(zhijing); f.writestring(_t("\n")); } if (odimension!= null) { acutprintf(_t("\n坐标标注文字是: %.0f"),odimension->measurement(val)); cstring zuobiao; cstring str5; str5.format(_t("%.0f"),odimension->measurement(val)); zuobiao="坐标标注文字是:"; zuobiao+= str5; f.writestring(zuobiao); f.writestring(_t("\n")); } if (ldimension != null) { acutprintf(_t("\n角度标注文字是: %.0f"),ldimension->measurement(val)); cstring jiaodu; cstring str6; str6.format(_t("%.0f"),ldimension->measurement(val)); jiaodu="角度标注文字是:"; jiaodu+= str6; f.writestring(jiaodu); f.writestring(_t("\n")); } } // 关闭实体 pent->close(); } delete pitr; // 删除遍历器! pblktblrcd->close(); 高手帮忙看看这个程序啊,我调了好长时间了,就是达不到我要的结果,我想输出尺寸标注值! 代码是从哪里copy来的吧?这么简单的错误都没有发现? measurement(val),看下这个函数的返回值是什么? |
| 所有的时间均为北京时间。 现在的时间是 06:47 PM. |