几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(C++) (http://www.dimcax.com/hust/forumdisplay.php?f=34)
-   -   【转帖】请教大虾们~~如何将一个多边形用矩形外接? (http://www.dimcax.com/hust/showthread.php?t=8130)

yang686526 2009-04-18 08:28 PM

【转帖】请教大虾们~~如何将一个多边形用矩形外接?
 
请教大虾们~~如何将一个多边形用矩形外接?
请教大虾们~~如何将一个多边形用矩形外接?
在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.