cad新学生 发表于 2007-7-16 10:09:00

[求助]如何删除选择集中的线实体

<p>哪位高手帮我看看程序,是关于删除选择集中的线实体问题,由于初学,可能程序不对,请各位大侠海涵!!!鞠躬180度!!!</p><p><br/>&nbsp;struct resbuf eb1;&nbsp; //定义结果缓冲区<br/>&nbsp;char sbuf1,sbuf2;&nbsp; <br/>&nbsp;&nbsp;&nbsp; ads_name ssname1,ssname2;&nbsp;&nbsp; //定义选择集名</p><p>&nbsp;&nbsp; &nbsp;eb1.restype=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //0表示实体名<br/>&nbsp;strcpy(sbuf1,"LINE");<br/>&nbsp;eb1.resval.rstring=sbuf1;<br/>&nbsp;&nbsp;&nbsp; eb1.rbnext=NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //没有其他要求匹配的实体属性 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获取所有的线形实体(在整个图形数据库中)<br/>&nbsp;&nbsp;&nbsp; acedSSGet(NULL,NULL,NULL,&amp;eb1,ssname1);<br/>&nbsp;&nbsp;&nbsp; &nbsp;long n=0;<br/>&nbsp;&nbsp;&nbsp; acedSSLength(ssname1,&amp;n);//获取实体个数<br/>&nbsp; if(n==0)<br/>&nbsp;{<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox("没有要删除的线!");<br/>&nbsp;&nbsp;acutPrintf("没有要删除的线!!");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;else<br/>&nbsp;{<br/>&nbsp;long entname;<br/>&nbsp;AcDbEntity *pEntity;<br/>&nbsp;AcDbLine *Pline;<br/>&nbsp;long startpt,endpt;<br/>&nbsp;&nbsp;&nbsp; AcGePoint3d start;<br/>&nbsp;&nbsp;&nbsp; AcGePoint3d end;<br/>&nbsp;ads_name ent;<br/>&nbsp; &nbsp;CString m_name;<br/>&nbsp;double m_startX,m_startY,m_startZ;<br/>&nbsp;CString ObjID;<br/>&nbsp;CString str2,str22;<br/>&nbsp;CString oldhandlerStr;<br/>&nbsp;&nbsp;&nbsp; float m_n1,m_e1,m_h1;<br/>&nbsp;&nbsp;&nbsp; float m1_n,m1_e,m1_h;<br/>&nbsp;float j=11;<br/>&nbsp;int linnum=1;<br/>&nbsp;CString lnum;<br/>&nbsp;char buffer;<br/>&nbsp;AcDbHandle objHandle;<br/>&nbsp; for(long i=0;i&lt;n;i++)<br/>&nbsp; {<br/>if(acedSSName(ssname1, i, entname) == RTNORM)<br/>&nbsp;{<br/>&nbsp;&nbsp;AcDbObjectId objId;<br/>&nbsp;&nbsp;acdbGetObjectId(objId,entname);<br/>&nbsp;&nbsp;acdbOpenAcDbEntity(pEntity,objId,AcDb::kForRead);</p><p>//强制类型转换,将AcDbEntity *转换为AcDbLine *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;Pline=(AcDbLine*)pEntity;<br/>&nbsp;&nbsp;start=Pline-&gt;startPoint();<br/>&nbsp;&nbsp;end=Pline-&gt;endPoint();<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获取并显示handle号<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pline-&gt;getAcDbHandle(objHandle);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;char handleStr;<br/>&nbsp;&nbsp;&nbsp;char oldhandler;<br/>&nbsp;&nbsp;&nbsp;objHandle.getIntoAsciiBuffer(handleStr);<br/><font color="#ff0000">&nbsp;&nbsp;&nbsp;Pline-&gt;erase();//出错不知到该怎样改</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pEntity-&gt;close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>}<br/>}<br/>&nbsp; }</p><p></p>
页: [1]
查看完整版本: [求助]如何删除选择集中的线实体