[求助]如何获得CAD视图的左下角和右上角的坐标(ObjectARX)
<font face="Verdana">比如在cad上画了很多图形,然后绘图过程中会用到很多次缩放.我的目标是给一个命令,可以让所有的图形摆放到界面的中心,并且比例合适。<br/>所以,要首先获得所有图形的左下角和右上角的坐标,请问高手如何做到那,谢谢。PS我现在用的是ObjectARX 2007</font> 这个简单,让我帮你写一个! <p><font face="Verdana">static void ROYMyTest_Test2(void)<br/> {<br/> // Add your code for command ROYMyTest._Test2 here<br/> ads_name ssName;<br/> long ssLength;<br/> if (acedSSGet(_T("A"),NULL,NULL,NULL,ssName)!=RTNORM<br/> || acedSSLength(ssName,&ssLength)!=RTNORM)<br/> return;<br/> AcDbObjectId EntID;<br/> ads_name eName;<br/> AcDbEntity *pEnt;<br/> AcDbExtents extent;<br/> AcGePoint3d MaxPt,MinPt;<br/> Adesk::Boolean isFirstSet=Adesk::kTrue;<br/> for (long i=0;i<ssLength;i++)<br/> {<br/> if (acedSSName(ssName,i,eName)!=RTNORM<br/> || acdbGetObjectId(EntID,eName)!=Acad::eOk<br/> || acdbOpenAcDbEntity(pEnt,EntID,AcDb::kForRead)!=Acad::eOk)<br/> continue;<br/> if (pEnt->getGeomExtents(extent)!=Acad::eOk)<br/> {<br/> pEnt->close();<br/> continue;<br/> }<br/> pEnt->close();<br/> if (isFirstSet)<br/> {<br/> MaxPt=extent.maxPoint();<br/> MinPt=extent.minPoint();<br/> isFirstSet=Adesk::kFalse;<br/> }<br/> else<br/> {<br/> if (MaxPt.x<extent.maxPoint().x)<br/> MaxPt.x=extent.maxPoint().x;<br/> if (MaxPt.y<extent.maxPoint().y)<br/> MaxPt.y=extent.maxPoint().y;<br/> if (extent.minPoint().x<MinPt.x)<br/> MinPt.x=extent.minPoint().x;<br/> if (extent.minPoint().y<MinPt.y)<br/> MinPt.y=extent.minPoint().y;<br/> }<br/> }<br/> acedSSFree(ssName);</font></p><p><font face="Verdana"> acedCommand(RTSTR,_T("ZOOM"),<br/> RTSTR,_T("W"),<br/> RTPOINT,asDblArray(MinPt),<br/> RTPOINT,asDblArray(MaxPt),<br/> RTNONE);<br/> }</font></p> 以上代码仅适用于CAD2008,仅作参考! <p>rongyifei 兄,谢谢啦,我拿回去钻研一下。</p> 加你为好友,多向你学习。 QQ:<font face="Verdana">1258433045</font>,有空聊聊! <p>已阅!</p> rongyifei 发表于 2010-6-22 19:52 static/image/common/back.gif
static void ROYMyTest_Test2(void) { // Add your code for command ROYMyTest._Test2 he ...
HAO好!!!!!!!!!!!!!!!
页:
[1]