分享

详解软件中的捕捉功能

 多物理场仿真 2022-05-30 发布于上海

注:本文针对软件研发,全文约1400字

捕捉是CAD/CAE和前处理等有建模功能软件的一个常用功能。

捕捉的目的是用来精确定位,是保证模型正确性,完整性的重要手段。


1. 捕捉类型

常用的捕捉类型有:

  1. 几何端点,比如线段的两端,长方体的八个顶点;

2. 几何的中点,比如线段的中点,三维实体的质心;

3. 圆心;

4. 最近距离捕捉;

5. 垂直捕捉,画一条直线,垂直于另一条直线或者平面;

6. 相切,比如直线和圆弧,曲线相切;

7. 背景网格;

8. 延长线捕捉;

9. 平行捕捉

10. 角度捕捉,即画出的对象保持一定角度;

11. 长度捕捉,比如画线,给定起始点后,线段的长度固定;

12. 投影捕捉,比如画多层对象,希望每一层对齐。可以先画一层,然后投影到下一层,然后在投影对象上进行捕捉;

13. 交点捕捉,比如两条或多条直线相较于一点;


2. 实现原理

捕捉通常是在创建和编辑对象用到,其原理类似拾取选择操作,在鼠标移动过程中,从鼠标的位置发出一条垂直视图的射线,然后计算射线和候选对象的位置关系。比如中点捕捉时,计算候选对象中点坐标和射线的距离,当距离小于捕捉的容差时,即可认为中点捕捉到。

鼠标事件和拾取选择操作类似

详解软件中的拾取(选择)功能(点击链接查看)

计算上,捕捉和拾取选择的区别是:一个是计算射线和候选对象的交点,一个是计算射线和候选对象特征的距离。

捕捉按照类型可分为

1. 单一对象捕捉

这一类比较简单,通常取得对象的几何数据即可,比如中点,端点,最短距离,圆心,网格等。只需计算射线到几何数据的距离,然后判断容差即可;

2. 和初始位置相关的捕捉

比如在画直线时要和候选直线相切,垂直,这时需要和候选对象满足一定位置关系,计算时要得到画线的初始点位置;

3. 和多个对象特征相关

最常见的交点捕捉,需要计算候选对象之间的交点,作为候选对象;

4. 约束捕捉

距离,角度,以及和初始位置的捕捉都算是约束捕捉,还有延长线垂直,相交,平行线等,计算时需要满足一个或多个特定约束关系。和几何约束求解器部分功能相同。参见深入剖析三维几何内核(8)--几何约束求解器(点击链接查看)


3. 结果处理

通常每一类捕捉可以用一个类来实现,和GUI上的选项关联。当开启多个捕捉,且多个捕捉都满足计算条件时,需要对结果进行后处理

1. 需要对每种类型的捕捉设置优先级,每一类捕捉会有一个默认优先级:比如端点捕捉优先级最高,最短距离优先级最低。设置的原因是当多个捕捉同时满足条件时,默认使用优先级最高的结果

2. 优先级相同的捕捉类型,按照距离远近设置优先级;

3. 当有多个捕捉结果时,可以都返回,用快捷键切换捕捉结果;

4. 每种捕捉类型结果可以设置不同的图标以示区别。


4. 性能问题

捕捉的性能问题同拾取选择操作一样,也存在性能问题。

其解决方法也是尽可能减少计算对象,一种方法是通过业务过滤器去除无效对象,另一方面通过各种结构比如树结构加快对象过滤。具体内容参见详解软件中的拾取(选择)功能(点击链接查看)。


5. 其它

1. 提供接口,用户可以设置捕捉容差;

2. 通常三维捕捉计算耗时,一般将其投影到二维平面,可显著提升性能;

3. 相比拾取选择操作,捕捉对实时性要求更高,因为捕捉到对象后,需要有吸附效果显示,所以计算时间尽可能控制在200毫秒以下,100毫秒以下更好;

4. 捕捉计算的设计和拾取选择一样,可以用几何数据计算,也可以用视图数据,根据实际需求决定。


讲了些原理性的东西,只要对几何图形有些开发经验,对照拾取选择功能介绍看,讲的还算是比较清楚。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多