明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3774|回复: 3

[ARX求助]ARX怎样获得模型空间中点中的实体并获得其对象数据

[复制链接]
发表于 2006-7-17 23:59:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2006-7-18 9:12:03 编辑

各位大侠,我有几个问题请教,一直没解决,请各位帮忙

)(感谢高手批评,第一次发帖一着急贴错了,现更正如下)

(1)在CAD的模型控件直接点击选中一个实体,ARX怎样得到这个实体的句柄

(2)如果这个不能实现,那么我的下面的用选择集的程序有什么问题,为什么pEntity为空,如何再获得VBA里的Handle值

 AcDbObject * pEntity;
 Acad::ErrorStatus es;
 long n=0 

ads_name ssname;
 AcDbObjectId eId;
 acedSSGet(NULL,NULL,NULL,NULL,ssname);
 if(acedSSLength(ssname,&n)!=RTNORM)
 {  acutPrintf("\\n获取选择集长度出错!");
  return;
 }
 ads_name ent;
 for(long i=0;i<=n;i++)
 {
  if(acedSSName(ssname,i,ent)!=RTNORM)
  {
   acutPrintf("\\n获取选择集内第%d个实体出错!",i);

    return;   
   }

    acdbGetObjectId(eId, ent);
    acdbOpenObject(pEntity, eId, AcDb::kForWrite);
 }
 acedSSFree(ssname);

(3)用VBA获得对象数据的如下程序如何用ARX实现?

Public Function GetOD(acadObject As AcadEntity)
    Dim AcadMap As Object
    Dim prj As Project
    Dim odTbl As odTable
    Dim odRds As ODRecords
   
    Set AcadMap = ThisDrawing.Application.GetInterfaceObject("AutoCADMap.Application.2")
    Set prj = AcadMap.Projects(ThisDrawing)
    prj.ProjectOptions.DontAddObjectsToSaveSet = True
    Set odTbl = prj.ODTables.Item("ObjectInfo")
    Set odRds = odTbl.GetODRecords
    boolVal = odRds.Init(acadObject, True, False)

    GetOD = odRds.Record.Item(1).Value  
End Function

发表于 2006-7-18 01:16:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-7-18 01:31:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2006-7-18 09:04:00 | 显示全部楼层
本帖最后由 作者 于 2006-7-18 10:56:52 编辑

不好意思,

long n=0 ads_name ssname;是上来的时候粘错了

AcGePoint3d ptInsert=pEntity->startPoint();也是后面的

现在把AcDbEntity * pEntity改为AcDbEntity * pEntity = NULL就可以了

请问楼上的高手我现在想由pEntity获得他的句柄应该怎么做

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 23:22 , Processed in 0.167445 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表