特征建模(Featuremodeling)和参数化设计都是比较流行的概念,但是很多人容易混淆。

比如SolidWorks有基于特征的建模,提供了特征树,和相应的工作流程。同时,在草图阶段,尺寸驱动的操作方式,让人以为这就是参数化设计了。这两个概念理解都很微妙,很多时候大家都在混着用。CAD开发人员和用户,都在按照自己的理解来使用这两个词。

特征建模有着比较完整的特征定义,也就是说,软件中定义一个特征,意味着用户按照一定的规则生成设计结果。通常有历史记录,也就是特征树来配合建模。对于每一种特征,每个软件的定义不尽相同,但是每个软件的特征系统都试图准备出足够的特征种类,让用户能够设计出他们需要的结果。一般来说,这些特征系统都是封闭的,也就是说用户无法添加自己定义的特征到系统中去。而每个特征都是由一些基本操作生成,例如旋转,拉伸,布尔操作等等。用户需要经过训练,才能掌握软件。

在特征建模中,有参数化的影子,实际上特征证实由许多的参数来驱动,使得我们可以在固定的操作流程下(特征树),通过修改参数,得到不同的设计结果。特征树的每一个节点,实际上是一个特征建模过程的结果,也就是一个实际的设计结果,几何实体。

参数化建模含义要广阔的多。在机械CAD中,有着成熟的特征系统,开发人员和用户可以讲同一种语言。但是在其他行业,例如在建筑行业,特征的建立则相对困难,尽管几何操作没有机械行业那么复杂。在机械行业CAD中,特征建模系统是不欢迎新的特征的。但是在建筑等行业中,则必须开放特征系统。也就是说,一定要允许用户或者二次开发商定义自己的特征,也就是参数化组件(parametric
components)。这样的参数化系统中将给用户带来极大的方便,但同时也提高了开发的困难程度。

一种参数化实现的方式是提供基本的几何操作和其他数据操作的接口,然后提供一个依赖框架。在这两个基础上,实现一些基本的参数化组件,并实现组件框架,以便能够让其他的参数化组件加入进来。这种实现方式比较直接,CAD开发商有最大的控制权。但是,缺点是新的参数化组件需要做开发。对于最终的用户来说,效率不是最好。这种方式实现的例子有MicrosoftVisio,AutoCAD2010.

还有一种实现方式,就是过程式的。系统同样提供建模的核心支持,几何操作,数据操作等等。系统还要提供一个记录建模过程的建模环境,一般是使用脚本来记录用户的建模操作。用户在使用软件时,可以使用图形界面,或者结合简单的脚本,利用这些核心功能,来生成用户需要的设计结果。设计过程记录在脚本文件中。用户可以随时生成最终的设计结果;或者重新修改其中的某一些步骤;或者把某些步骤抽出来,组装成用户自己的组件。这个脚本依赖于这个CAD系统。同时这个脚本也可以作为交流的工具。这种方式,适合建筑师推敲式的建模习惯。使用这一方式的软件有Bentley的Generative
Components和Rhino Grasshoper。