![]() |
【转帖】请教大虾们~~如何将一个多边形用矩形外接?
请教大虾们~~如何将一个多边形用矩形外接?
请教大虾们~~如何将一个多边形用矩形外接? 在autocad中的一个多边形图形,想把它用矩形外接,框起来. 我对objectarx还不很熟悉,不清楚有那些方法实现 有没有直接操作的函数? 要不然就先读多边形的每个顶点,经过判断后用直线化一个矩形? 帮我讲讲可能实现的思路好吗?谢谢~~~~~~~~~~~~!! 用 getgeomextents 得到实体的外围框后再添加一个轻多段线就可以吧... void test() { ads_name en; ads_point pt; if(acedentsel("\nspecify a object:",en,pt)!=rtnorm) return; acdbobjectid eid; acdbgetobjectid(eid,en); acdbentity *pent; acdbopenacdbentity(pent,eid,acdb::kforread); acdbextents exts; if(pent->getgeomextents(exts)!=acad::eok) { acutprintf("\n**error on get the extents point..."); pent->close(); return; } acutprintf("\nthe maxpoint=%0.4f,%0.4f",exts.maxpoint()[x],exts.maxpoint()[y]); acutprintf("\nthe minpoint=%0.4f,%0.4f",exts.minpoint()[x],exts.minpoint()[y]); pent->close(); // will be add a polyline to the modelspace // the vertex point will be add to the ptarray acgepoint3darray ptarray; ptarray.append(exts.minpoint()); acgepoint3d pttemp; pttemp[x]=exts.maxpoint()[x]; pttemp[y]=exts.minpoint()[y]; pttemp[z]=exts.minpoint()[z]; ptarray.append(pttemp); ptarray.append(exts.maxpoint()); pttemp[x]=exts.minpoint()[x]; pttemp[y]=exts.maxpoint()[y]; pttemp[z]=exts.minpoint()[z]; ptarray.append(pttemp); acdb2dpolyline *pnewline=new acdb2dpolyline(acdb::k2dsimplepoly,ptarray,0.0,adesk::ktrue); pnewline->setcolorindex(1); acdbblocktable *pblocktable; acdbhostapplicationservices()->workingdatabase()->getsymboltable(pblocktable,acdb::kforread); acdbblocktablerecord *pms; pblocktable->getat(acdb_model_space,pms,acdb::kforwrite); pblocktable->close(); pms->appendacdbentity(eid,pnewline); pnewline->close(); pms->close(); } 江苏昆山小城,欢迎交流 本职工作五金模具设计及加工 及cad软件开发 哇塞~~~~~~~ 大虾 谢谢你啊~~!!! |
| 所有的时间均为北京时间。 现在的时间是 10:04 PM. |