注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

【原创】AutoCAD中实体对象的拾取(一)  

2010-12-02 17:57:37|  分类: ObjectARX |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这里介绍的是使用Autodesk.AutoCAD.EditorInput命名空间下的PromptEntityOptionsPromptEntityResult

一般流程是这样的,首先要创建一个Editor类的实例,然后给该实例的GetEntity方法传递一个PromptEntityOptions类的实例,该方法将返回一个 PromptEntityResult类的实例。

PromptEntityResult类包含两个只读的属性ObjectIdPickedPoint,以及一个方法ToString(),其中PickedPoint属性返回一个Point3d,表示用户选择该实体的点。ToString()则是将这两个属性整合在一起,包含了选择结果的状态、对象编号(ObjectId)和选择点。

下面是代码,参考了ObjectArx2006的SDK文档。

[CommandMethod("GetType")]

public void GetEntityType()

{

    Document doc = Application.DocumentManager.MdiActiveDocument;

    Database db = doc.Database;

    Editor ed = doc.Editor;

    PromptEntityOptions peo = new PromptEntityOptions("请选择一个实体");

    PromptEntityResult per = null;

    try

    {

        per = ed.GetEntity(peo);

        if (per.Status == PromptStatus.OK)

        {

            ObjectId id = per.ObjectId;

            Transaction trans = db.TransactionManager.StartTransaction();

            Entity ent = (Entity)trans.GetObject(id, OpenMode.ForRead, true);

            ed.WriteMessage("\n实体ObjectId为:"+ent.ObjectId+"\n实体类型为:" + ent.GetType().FullName);

            trans.Commit();

            trans.Dispose();

        }

    }

    catch (Autodesk.AutoCAD.Runtime.Exception exc)

    {

        ed.WriteMessage("发生异常,原因为:" + exc.Message);

    }

}

运行AutoCAD后加载,创建一些实体,然后键入“GetType”,选择实体,即可获取结果。

一个测试是这样的:

 命令: gettype
请选择一个实体: ((OK,),(2130046856),(332.802767443688,274.264948776533,0))
实体ObjectId为:(2130046856)
实体类型为:Autodesk.AutoCAD.DatabaseServices.Polyline

  评论这张
 
阅读(1265)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016