文章来自于翻译,原文在:https://isicad.net/articles.php?article_num=14064

第三代同步技术

根据Deelip [Menezes, 2010]的说法,Solid Edge ST3的新版本具有显着修改的功能树。现在它包括三个部分:有序特征,同步特征和简化视图。首个部分对所有基于由Dr. Samuel Geisberg发展的概念的系统都是典型的,该概念首次在Pro / Engineer中实现(然后在CATIA,NX,Solid Edge,SolidWorks,Inventor和许多其他MCAD系统中重复)。它具有通常的参数特征(基于它们的平面草图以及垫片,孔,倒角,圆角,口袋等)。它们形成了一个基于历史的有序树,反映了它们之间的相互依赖。可以使用特殊的对话形式编辑此类特征(例如,可以更改孔的类型,直径,深度和位置)。专业的MCAD用户对此了如指掌。

Solid Edge树的另一部分具有同步特征,这些特征最初出现在同步技术的第一次实现中。它们看起来像普通的特征,但具有一个重要的优点:可以通过直接编辑几何图形,任意拖动3D体表面并更改它们的形状来更改这些特征。这就是用户看到的样子:

SolidEdge

Solid Edge树的第三部分(简化)包含简化的模型表示,可以轻松从模型中删除任何面,区域,孔或圆角。这部分与将特征划分为有序和同步无关。

从概念上讲,有序(传统)和同步特征具有不同的性质。前者是一种配方,根据该配方建立(并重建)模型。后者只是将实体的面组合在一起。事实上,同步特征不仅仅是面的简单组合。

在他的博客中,Deelip引用了Solid Edge开发总监Dan Staples [Staples, 2008]的话,他概述了同步特征和有序特征之间的一些关键区别。特别是,同步特征不是基于平面草图。更准确地说,像垫片或孔这样的元素确实是基于草图的,但以后可以在不更改初始草图的情况下通过参数修改它们,这与需要修改原始草图以改变垫片/孔基底形状的传统方法完全不同。由于不存在与草图的链接,同步特征可以在模型周围自由移动并转移到其他面,这当然是这种方法的主要优点之一。

同步技术使用户能够将面重新组合成新的特征(与它们被创建的方式不同),允许在传统的基于历史的系统中无法达到的灵活编辑。由上文可知,同步特征是这样一组实体面,它们使得能够自动保存它们之间的几何链接。西门子的开发者是如何实现这一目标的呢?我有一个假设,将在下面详细描述。

程序性特征和声明性特征

通常来说,两种特征表示的想法并不新鲜。 Shah和Mäntylä [Shah&Mäntylä,1995]描述了两种表示参数特征的方法:程序性和声明性。在第一种方法下,每个特征都用程序语言进行编码,并整合了属性的定义以及其与其他特征的关系,以及计算这些属性和关系的方法。在声明性定义下,特征用非程序性语言描述,其中关系的指定与它们的计算是分开的。在声明性方法中,可以通过规则或约束给出与其他特征的属性和关系。

在这两种情况下,特征并未取代几何体,而只是在一个更高级别上复制它。几何形状总是在几何建模框架内创建和维持(我们知道,西门子使用了Parasolid - 由ShapeData在1988年开发的基于边界几何表示(BRep)的最初的商业几何建模系统之一),而特征则作为最终用户与几何内核之间的高级接口。

在Solid Edge ST3中,有序特征显然代表了传统的程序化方法。实际上,有序树部分是一个几何形状建立指令:根据它们的顺序,依次为每个树特征调用建造程序,当参数改变时允许更新模型。同步特征的情况则不同。

我有理由怀疑,西门子的同步特征实现了声明性的方法,即通过几何约束(对最终用户不透明)给出属性和与其他特征的关系,并通过解决约束系统(西门子拥有必要的技术 - D-Cubed约束求解器,其中与同步技术的连接在公司的新闻发布中提及)来计算属性和关系(对于修改的特征)。

Shah和Mäntylä陈述了以下几个用约束设定特征的用途:

  • 内部特征依赖,
  • 复合依赖设定模板(例如,沿圆形对称地定位相同的孔),
  • 组件特征之间的依赖性,
  • 以及装配组件之间的依赖性。

所有约束都被分类为两组 - 设定特征的方向(平行、垂直、选定角度、共平面、同轴)和位置(距离)。因此,西门子的同步特征就是一组对最终用户不透明的几何和尺寸约束,它们将体表的子集(几何表现出特定特征的)与其他特征的面链接在一起。

在直接面编辑的过程中(鼠标拖动到新的位置)会发生什么?应该调用动态约束解决程序来在每一时刻保持特征的概念。

由于声明性特征设定是基于非程序性属性描述,所以属性可以传递给已经存在的几何体。因此,系统可以很容易地在无历史模型中区分出典型的特征(孔、倒角、圆角),并以同步特征的形式表示它们,供进一步的参数编辑。还可以重新组合模型特征,而无需重新建立其几何体。

在LEDAS,我们已经亲身体验到如何成功地使用几何和尺寸约束来参数化定界表示中的3D实体。LEDAS已经将这种方法作为其变量直接建模技术的一部分发展出来[Ushakov, 2008]。这个想法是,最终用户直接与几何体进行工作 - 绕过以特征形式出现的中间层。特别的是,我们的用户可以手动在边界模型的任何面、边和顶点之间设定任何几何或尺寸约束。更重要的是,我们的技术可以自动识别大多数几何约束(平行、垂直、共平、同轴、切、等距离和半径),并在执行直接建模操作时考虑它们。愿意的人可以下载RhinoDirect插件的最新beta版本,以确信如何简单地使用这个概念,以及它在保持设计意图的同时修改模型可以节省多少时间。

让我们回到Solid Edge ST3。

如何在同一系统中结合这两种方法

Solid Edge ST3的用户面临着一个选择:可以传统地创建特征(有序方法),也可以使用同步技术。这个选择非常重要,因为在Solid Edge ST 3中,特征可以从有序树部分转移到同步树部分,但不能反过来。

SolidEdge

从概念上讲,这样的翻译并无难处 - 只是定义特征的方法自动改变:从建造程序,系统转移到对边界元素的一组几何和尺寸约束。问题在于,反向操作是无法实现的:有序树部分的任何特征都有它在层次结构中的位置 - 这是程序化方法的本质,而所有的同步特征都是等效的,除了层次结构,它们还可以形成循环依赖关系(后者,然而,需要验证,由于我们手头没有必要的Solid Edge许可证,我们无法完成)。

顺便说一句,直接转移对用户来说并不那么简单和明显 - 在从有序部分转移到同步部分的特征之后,Solid Edge会自动转移所有的父特征(转移的特征依赖于这些特征)。这间接说明在Solid Edge中,同步部分的模型在有序部分之前被处理。

这暗示了同步技术当前实现的另一个缺点:当用户在同步树部分创建新的特征时,所有的有序特征暂时从模型中消失!可以理解,它们是建立在可以改变的同步部分上的,但不清楚的是,什么阻止了它们的表现和在那一刻的自动重新计算。然而,这个缺点不会干扰直接编辑操作,这些操作涉及到同步特征的脸在有序部分上的工作。特别的是,有可能通过公式将来自两个树部分的特征的参数链接起来。

参数之间的依赖关系

在MCAD中,公式依赖关系并不是新鲜事。确实,参数化建模的一个优点是可以互相定义参数。例如,在创建一个垫片时,可以设置其高度应该是早前创建的垫片的两倍。这种参数之间的依赖关系可以是任意复杂的,不仅包括算术操作,还可以包括任意函数(特别是由用户或外部程序确定的),并且可以使用自由变量、设计表、规则等。然而,有一个例外:参数不应该彼此循环依赖。特别是,树上位置比其他特征高的特征的参数,不能直接或间接依赖于其参数。

由于在Solid Edge ST3中,同步特征在有序特征之前构建,因此后者的参数可以通过公式与前者的参数链接。然后,特别是,将可以观察到直接建模的神奇效果,这在这种情况下将会改变有序特征的形状,在改变同步特征之后。

在LEDAS,我们认为基于公式的参数化建模过于限制用户的表达能力。特别是,并非所有的依赖关系都可以明确表达:在一般情况下,参数可以通过一个隐式方程(例如,x^2+y^2=1)或者甚至一个方程组来连接。此外,在每个公式中清晰地选择一个单独的输出参数,迫使用户在从直接任务转到反向任务时,必须完全修改规格。在变量直接建模中,变量可以通过显式和隐式方程互相连接。在这种情况下,参数之间不需要没有循环依赖性,当输入参数的集合被修改时,也不需要重写方程。

结论

让我们考虑一下Solid Edge的同步技术用户到底能得到什么。一方面,西门子的开发人员实现了一个非常强大且易于使用的声明性特征建模(他们称之为同步特征)。虽然约束性声明特征的概念在近二十年前就被提出了[Balakrishnan,1993; Ali,1994],但它是在一个流行的商业产品中的首次实现。

同步技术允许CAD用户以传统特征的方式进行操作,以传统方式设置和编辑它们。同时,它允许进行全面的直接几何编辑,将特征转移到任何模型部分,并且不仅在同一草图平面内;每个特征都独立于早先创建的特征;以及有可能将面重新组合成其他类型的特征。这为参数化建模打开了新的可能性,掌握了这些用户将能够更快地对模型进行更改。

另一方面,试图在同一边树上展示两种类型的特征(程序化和声明化,或者在西门子的术语中叫做有序和同步)看起来对用户来说是一种不必要的复杂化。一下子,西门子的专家使边树变得复杂了两倍,边树不同部分之间的特征复制拥有非常琐碎的语义(有些东西可以复制,有些不能复制;有些特征会带来其他特征,等等)。也许,开发人员是出于帮助习惯了基于历史的传统方法的用户掌握新的同步技术的愿望。也许,在Solid Edge的后续版本中,边树的有序部分将永远消失,因为基于历史的方法相较于基于约束的方法的唯一优点就是在参数更改时模型可以被重新计算的速度。然而,随着约束解决方法的发展和越来越多的生产计算机的出现,这一优点正在消失,只剩下不足:无法设置参数之间的循环依赖,缺少树中所需参数时需要重复设计模型,直接模型编辑的手段不足。

同步技术是我们的未来,但为什么它必须与基于历史的参数化建模的过时设备一起出现呢?这两种方法由于概念上的巨大差异,很难结合起来,结果是由组合解决方案引起的用户争议和不自然。西门子是否会因其复杂的组合解决方案而让用户感到失望呢?将同步技术保持在其纯粹的形式——无需与传统方法链接——会不会更好呢?我们现在无法得到这些问题的答案,但西门子的解决方案已经为其他厂商铺平了道路,他们可能更喜欢为启动类似的设备选择不同的策略。这仍有待观察。在LEDAS,我们打算积极参与这个过程。