查看单个帖子
旧 2009-04-18, 08:28 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】请教大虾们~~如何将一个多边形用矩形外接?

请教大虾们~~如何将一个多边形用矩形外接?
请教大虾们~~如何将一个多边形用矩形外接?
在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软件开发
哇塞~~~~~~~
大虾
谢谢你啊~~!!!
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)