获取实体对象的捕捉点(最近点、端点、切点、像限点等)学习总结 - 精华帖集合
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++的强大功能。
没办法,我职业做鉴证的哈,认真惯了呵,但是喜欢这个,老大
业精于勤,而荒于嬉; 行成于思,而毁于随。勿以善小而不为,勿以恶小而为之。