![]() |
【转帖】获取实体对象的捕捉点(最近点、端点、切点、像限点等)学习总结 - 精华帖集合
获取实体对象的捕捉点(最近点、端点、切点、像限点等)学习总结 - 精华帖集合
www.dimcax.com 获取实体对象的捕捉点(最近点、端点、切点、像限点等)学习总结 , , , , 1. getobjectsnappoints函数的主要参数介绍 定义一: public virtual void getobjectsnappoints(objectsnapmodes snapmode, int gsselectionmark, point3d pickpoint, point3d lastpoint, matrix3d viewtransform, point3dcollection snappoints, integercollection geometryids); 定义二: public virtual void getobjectsnappoints(objectsnapmodes snapmode, int gsselectionmark, point3d pickpoint, point3d lastpoint, matrix3d viewtransform, point3dcollection snappoints, integercollection geometryids, matrix3d insertionmat) (1) snapmode 是enum类型 ,这是对象捕捉模式设置objectsnapmodes的枚举名称取值如下表: member name description value description的翻译 modenear nearest. 10 最近点 modetangent tangent. 9 切点 modeperpendicular perpendicular. 8 垂足 modeins insertion. 7 插入点 modequad quadrant. 5 象限点 modenode node. 4 节点;交叉点 modecenter center. 3 圆心 modemid midpoint. 2 中点 modeend endpoint. 1 端点 (2)gsselectionmark是int类型, graphics system selection mark,即选择集中图元的图形系统标记。每个实体可能包含多个子实体,一般设置为0,代表整个实体。可精细设置到具体实体内部的子实体。 (3)pickpoint是point3d 类型 ,设置拾取点,如果不是有具本要求如求最近点的话可以设置为(0,0,0) (4)snappoints是point3dcollection类型 ,获取捕捉点集合对象 (5)其它参数设置详见autodesk.autocad.geometry空间介绍 2.代码 [commandmethod("dispgetentsnap", commandflags.session)] public void dispgetentsnap()//遍历显示捕捉点(端点) { using (documentlock doclock = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument.lockdocument()) { database db = hostapplicationservices.workingdatabase; using (transaction trans = db.transactionmanager.starttransaction()) { entity ent = (entity)trans.getobject(getselectfirstentityid(), openmode.forwrite); point3d pickpt = new point3d(0, 0, 0); point3dcollection snappts = new point3dcollection(); integercollection geomids = new integercollection(); geomids.add(0); ent.getobjectsnappoints(objectsnapmodes.modeend, 0, pickpt, pickpt, matrix3d.identity, snappts, geomids); for (int i = 0; i < snappts.count; i++) { ed.writemessage("\n点是:" + (i + 1).tostring() + ":"+snappts.tostring()); } trans.commit(); } } } 复制代码 3.getselectfirstentityid() 4.参考: (1) (2) 业精于勤,而荒于嬉; 行成于思,而毁于随。勿以善小而不为,勿以恶小而为之。 写的很精彩,很用心 c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。 没办法,我职业做鉴证的哈,认真惯了呵,但是喜欢这个,老大 业精于勤,而荒于嬉; 行成于思,而毁于随。勿以善小而不为,勿以恶小而为之。 |
所有的时间均为北京时间。 现在的时间是 10:56 AM. |