几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-29, 05:45 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】获取实体对象的捕捉点(最近点、端点、切点、像限点等)学习总结 - 精华帖集合

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


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 04:17 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多