[一]CATIA中的拓扑元素
不同于作为特征的点线面: Point, Curve, Surface
CATIA中的拓扑一般指
从几何特征上拾取的点线面:Vertex, Edge, Face。
最直观的特点就是拓扑元素不会在结构树中体现。
[二]拓扑的性质
拓扑性质的定义:在每个拓扑变换下都保持不变的性质,则称之为A的一个拓扑性质。拓扑性质某种程度上是几何性质中最深刻和最根本的,因为它们是图形在最剧烈的变化之下,仍然不变的性质。
(参考自《什么是数学》R·柯朗 H·罗宾)
基于上述定义,结合下述我们能够在CATIA这类基于特征的建模软件中可以观察到的现象:
1)一旦模型发生打断,合并时,拓扑一定会发生变化。
2)无论如何修改某一特征的控参数,其拓扑都是稳定的。
另一方面,在蒋俊锋等人的一篇文献中,对特征和拓扑之间的关系有过一些说明:
实体建模时,每加入一个特征时,原有的拓扑元素都将发生变化。
如果拓扑元素发生变化,其对应的拓扑元素编号也会发生改变,但其拓扑元素编号随机给定。
引自:蒋俊锋;陈正鸣;何坤金, 特征CAD模型中拓扑元素父子关系构建, 计算机辅助设计与图形学学报 (第3期), 2013: 417–24.
实体建模非常依赖于拓扑元素,为了避免在实体建模过程中拓扑元素的混乱,body下的特征必须遵守先后顺序。
[三]拓扑性质的验证
如图所示,在一个volume extrude特征中,
分别基于三个拓扑元素创建了新的子集特征。
通过调整volume extrude的拉伸方向,
可以看到拓扑元素未被破坏,子集特征无报错。
甚至添加一个倾斜的限制面之后,
拓扑元素依然未被破坏,子集特征无报错。
然而,若将volume extrude的输入几何改为一个新的矩形轮廓
则会发现,点,线的拓扑都会丢失。而面的拓扑还在。(主要是因为顶面的这个拓扑是由extrude特征本身所决定,与轮廓形状无关)
而若将point on face取在侧面的face上,则会在替换轮廓后也丢失。
可以看到,拓扑元素是直接取决于模型几何的连续变化。
一旦发生形状上的变更,哪怕是相似的两个对象(如案例中的矩形轮廓),
也必然会出现拓扑元素丢失的情况。
[四]拓扑和建模的关系
如图所示,做两个叠起来的盒子:
采用拓扑的做法如下(也是入门建模者都会直接采用的一种思路):
在 xy 底平面绘制矩形草图,建立拉伸体。其次在拉伸体的顶面 face 上建立草图,分别 将 4 条周围的边界投影/求交作为该草图的引用,以此绘制第二个盒体的矩形轮廓。
我比较推荐的建模思路如下:
通过草图的 Output 功能首先将草图中的两组轮廓线提出作为独立对象。如 下图所示,先定义定位平面 plane.1,其次在该平面对象上同时把两个轮廓定义出,分别上 下拉伸成体。在这个思路中,就全部引用了特征对象,而没有使用几何体的任何拓扑元素。
比较两种建模方法可以分析得出:
前者是以串行的方式建模(第二个盒子是基于第一个盒子创建的),整个建模流程是建立在拓扑连续性的基础上。
后者是以并行的方式建模(两个盒子特征之间无关联),几何之间的关系全都集中于草图这个对象中进行统一控制。建模流程是建立在特征的子父集的引用关系上。
[五]结论
尽管我们常说关联设计。
但是可以看到不同的建模方法,建立的关联基础并不相同。
采用拓扑的关联一旦发生设计变更,自然就是报错黑洞。
而另一方面,完全避免拓扑是不现实的,我们依然有大量的基于拓扑的特征,例如extract, boundary, extrapolate。更不用提实体建模中的refine, chamfer等等。。
但合理的使用拓扑,组织拓扑在建模流程中的位置是我们可以控制的。
而这些都是取决于我们本身对设计主体足够了解的前提之下进行的。
有不少人建模,就脚踩西瓜皮,想到哪儿做到哪儿,很容易大面积的使用拓扑元素,因为他很少去规划引用的父子级关系。那自然是看到模型上有什么就用什么(模型直接拾取到的都是拓扑)。
而正真以设计思路去建模的人,必然要对设计主体做好不同维度上的分解。合理的规划建模步骤,思考清楚特征之间的引用关系,这才是建模应该要去考虑的问题。