[ARX求助]ARX怎样获得模型空间中点中的实体并获得其对象数据
本帖最后由 作者 于 2006-7-18 9:12:03 编辑 <br /><br /> <P>各位大侠,我有几个问题请教,一直没解决,请各位帮忙</P><P>)(感谢高手批评,第一次发帖一着急贴错了,现更正如下)</P>
<P>(1)在CAD的模型控件直接点击选中一个实体,ARX怎样得到这个实体的句柄</P>
<P>(2)如果这个不能实现,那么我的下面的用选择集的程序有什么问题,为什么pEntity为空,如何再获得VBA里的Handle值</P>
<P> AcDbObject * pEntity;<BR> Acad::ErrorStatus es;<BR> long n=0 </P>
<P>ads_name ssname;<BR> AcDbObjectId eId;<BR> acedSSGet(NULL,NULL,NULL,NULL,ssname);<BR> if(acedSSLength(ssname,&n)!=RTNORM)<BR> { acutPrintf("<A href="file://n/" target="_blank" >\\n</A>获取选择集长度出错!"); <BR> return; <BR> }<BR> ads_name ent;<BR> for(long i=0;i<=n;i++)<BR> {<BR> if(acedSSName(ssname,i,ent)!=RTNORM)<BR> {<BR> acutPrintf("<A href="file://n/" target="_blank" >\\n</A>获取选择集内第%d个实体出错!",i); </P>
<P> return; <BR> }<BR><BR> acdbGetObjectId(eId, ent);<BR> acdbOpenObject(pEntity, eId, AcDb::kForWrite);<BR> }<BR> acedSSFree(ssname);</P>
<P>(3)用VBA获得对象数据的如下程序如何用ARX实现?</P>
<P>Public Function GetOD(acadObject As AcadEntity)<BR> Dim AcadMap As Object<BR> Dim prj As Project<BR> Dim odTbl As odTable<BR> Dim odRds As ODRecords<BR> <BR> Set AcadMap = ThisDrawing.Application.GetInterfaceObject("AutoCADMap.Application.2")<BR> Set prj = AcadMap.Projects(ThisDrawing)<BR> prj.ProjectOptions.DontAddObjectsToSaveSet = True<BR> Set odTbl = prj.ODTables.Item("ObjectInfo")<BR> Set odRds = odTbl.GetODRecords<BR> boolVal = odRds.Init(acadObject, True, False)</P>
<P> GetOD = odRds.Record.Item(1).Value <BR>End Function</P> 本帖最后由 作者 于 2006-7-18 10:56:52 编辑 <br /><br /> 不好意思,
<P>long n=0 ads_name ssname;是上来的时候粘错了</P>
<P>AcGePoint3d ptInsert=pEntity->startPoint();也是后面的</P>
<P>现在把AcDbEntity * pEntity改为AcDbEntity * pEntity = NULL就可以了</P>
<P>请问楼上的高手我现在想由pEntity获得他的句柄应该怎么做</P>
页:
[1]