DCM介绍
- 格式:doc
- 大小:116.00 KB
- 文档页数:11
DCM介绍
1 DCM简介
DCM全称为Dimensional Constraint Manager(标注约束管理器)。它是由软件模块的形式发布,可以和应用程序进行集成,来完成二维CAD领域的参数化设计功能。
1.1 DCM提供的功能
DCM作为一个软件组件,可以操作几何设计来满足给定的约束条件。DCM关注于二维空间(或者三维空间的二维子空间)的无界限的直线、圆、点和参变量几何体。它包括了两类约束,分别是标注约束(长度和角度)以及逻辑(几何)约束(比如平行、垂直、相切和同心)。
当调用DCM进行计算约束时,以下两个步骤会执行:
DCM首先分析几何体之间的相对关系,并且决定使用什么样的解决方案;
DCM重新计算几何体以满足标注约束的需要。
在使用约束的设计过程中,这两个步骤可以识别和求解问题域。它可以保证几何体不依赖于任何的问题域进行重新求解,同时可以避免任何可能影响几何体的相对位置的改变。它还可以保证仅仅当标注值改变时快速的进行重新计算(因为求解过程的第一个步骤不需要进行重复)。
为了给设计者提供最大的灵活性,DCM使用的算法与几何约束体以及标注约束的顺序是无关的,也就是说可以在任意时刻添加、删除以及改变约束。通过上述机制,应用程序可以通过恢复相关的约束几何体以及标注约束找回先前的状态。
DCM的一个最主要的特性是它可以用来处理欠约束和过约束数据,这样用户就可以很容易的建立完全约束。欠约束是指没有足够的标注和逻辑约束来唯一的确定几何体数据;而过约束是指几何体数据含有过多的或者相冲突的标注和逻辑约束。
欠约束几何体通过计算可以满足应用到其的任何约束,即使这些约束不能唯一的定义这个几何体。这种情况下,应用程序可以影响DCM返回的实际的求解
值。
1.2 在应用程序中使用DCM
DCM有一个很大的优点,就是它专门设计为一个模块,可以加入到任何的应用程序中。在任何可能的地方,DCM总是使用非迭代的算法从而使得DCM运算速度非常快。另外,DCM的计算时间是和几何体数量以及约束数量成线性关系的。
在使用DCM时,几何体和约束关系是在应用程序中定义的,DCM通过预先定义的求值函数(回调函数)来访问上面的定义,这些求值函数被称为Frustum接口。这样就可以将DCM需要的额外内存降到最低,同时意味这应用程序对几何体和约束数据具有控制权。
2 基本的DCM概念
2.1 数据类型
DCM使用的几何体类型(Geomtery types)包括无限长的直线、圆、椭圆、点、样条曲线以及可估算的参数曲线(evaluated parametric curves,通常是指自由曲线)。所有的几何体都假设分布在二维情况下。
带值的标注类型包括长度,角度和半径。除此以外,还有一个特殊的标注,她们仅仅是一些逻辑约束(比如平行)。在DCM中,这两种情况都被称为标注约束(dimension)。DCM也可以求解方程式(equation)而得到变量的值。变量可以被用来表示标注的值。
2.1.1 几何体类型
DCM支持下面类型的几何体:
解析几何:点,直线,圆和椭圆。
样条曲线,支持通用的NURBS曲线。
可估算的参数曲线。
严格集(Rigid sets)。一个严格集是若干几何体的集合,并且将其看做严格约束的。
除了上述的约束几何体,DCM还支持Offset curves和Scaleable sets。经过研究AUTOCAD,发现其并不支持上面两种几何体,估不做详细介绍。
2.1.2 标注和约束
DCM支持下面类型的标注和约束。
标注:长度,角度,半径和曲线长度。
约束:平行,垂直,重合,同心,相切,对称,等长,中点,patterned,等半径,equal parameter and normal。
标注会和一个值关联(标注值),而约束没有。长度和角度标注值可以为0,但在这种情况下,最好是使用逻辑约束替代标注。同理,当角度标注值是180时,也可以使用逻辑约束来替代角度标注。
2.1.3 变量、等式和不等式
DCM可以通过求解等式和不等式来得到变量的值,DCM支持下面的变量类型:
变量和标注相关联,变量表示的是标注的大小。
简单变量,例如不与标注相关联的变量。
上面两种变量都可以在等式和不等式中使用。DCM可以求解等式和不等式。
2.2 固定、冻结和自由几何体
几何体第一次被创建的时候,它们是自由的。应用程序可以通过DCM固定和冻结几何体。当几何体被固定或者冻结后,DCM不能再移动几何体。自由、固定和冻结几何体的区别如下:
自由:一个几何体既没有被固定也没有被冻结,它就是自由的。当模型被求解时,DCM可以任意地移动自由几何体。
固定:DCM无法移动被固定的几何体。在固定几何体间的标注和约束将会被DCM忽略并且绝不会影响求解结果。
DCM求解时,假设固定几何体永远在指定的位置。当DCM成功的求解了一个模型后,应用程序将固定几何体移动了一个位置,DCM不会重新求解此模型。
冻结:DCM无法移动被冻结的几何体。DCM不会求解应用在两个处于冻结几何体上的标注和约束,即使有些情况下它们可能会影响求解结果。
DCM求解时,不会假设冻结几何体永远保持在指定的位置。因此应用程
序可以比较容易地移动冻结实体,这是因为DCM的求解结果会更容易预测。
2.3 自由度(degree of freedom)
当DCM求解或者计算模型时,它会依次地使用几何体的自由度来求解所有的标注和约束。在二维空间中,点和直线有两个自由度,圆有三个自由度,椭圆有五个自由度。不论集合中的几何体个数多少,它一共有三个自由度。样条曲线的自由度是定义此曲线的所有几何体的自由度之和,也就是说,如果一个样条曲线有n个点定义,此样条曲线就有n2自由度。
DCM无法移动固定和冻结几何体,所以它们的自由度为0。当集合(set)被固定或者冻结后,自由度将多3变为0。
应用程序可以利用DCM获得几何体和变量的所有自由度,被标注约束和等式去掉的自由度个数以及刚体剩下的自由度个数,这些数量被称为constraint
balance,被调用的DCM函数为constraint_ balance。这个函数告诉应用程序是否有足够的标注可以去除掉几何体的所有自由度。
2.4 模型求值(Evaluating the model)
求值过程中,DCM试图处理如下的事情:
DCM求解等式并且得到变量的值,
DCM得到应用到实体的变换矩阵以保证当前所有的标注将被满足,
DCM返回每个实体的状态码表明求解的成功后者失败。
在整个求解过程中,上面的步骤是同时进行的。
经过DCM的求解,可以得到唯一的解。此唯一的解由几何体的初始配置,标注和等式决定。另外,传递给DCM的属性也可以影响到解。对欠约束几何体,DCM提供了很多影响结果的选项,但是这些选项对完全约束的几何体是没有意义的。
2.4.1 分辨率与精度(Resolution and accuracy)
分辨率指的是DCM进行比较时使用的数值。DCM有两个分辨率:角分辨率(angular resolution)和线性分辨率(linear resolution),DCM比较角度时使用角分辨率,比较长度时使用线性分辨率。
如图1所示,当DCM判断两条直线是否平行时,将会使用角度分辨率。相似情况,当DCM判断两个标注值的和是否和一个标注值相等时,就会使用线性分辨率。
图1 分辨率的使用
2.4.2 增量求解(Incremental evaluation)
DCM有两种方式进行模型求解,完全(full)和增量(incremental)模式。前面曾经提到过,DCM求解包含两个过程,首先DCM对模型进行分析,并且决定求解模型的方法;第二,DCM求解模型,得到满足约束条件的解。DCM分两部求解的可以使得在很多情况下(没有增加或者减少约束),只使用第二个步骤进行重新求解,从而节省时间,提高性能。我们将其称为增量求解。
为了能够使用增量求解,必须保证没有增加或者删除约束。否则,DCM会发现无法使用增量求解,取而代之使用完全求解方式求解。
增量求解时,即使几何体的位置发生改变,模型原来的手性会被保留。这就意味着:1)如果应用程序希望通过移动几何体来改变模型的手性,则必须使用完全求解模式;2)应用程序可以移动几何体,并且得到保存原来手性的解。
相关DCM函数:re_evaluate,dynamic_evaluate。
2.4.2.1 模型分区
如果模型中含有两组或者都组完全不相连的几何体(没有公用的约束),对其中一组几何体的修改不会影响到其他组的几何体。DCM求解时,可以识别出没有联系的模型,然后在内部进行分区。每一个分区后的子集合独立地进行求解,对其中任一个子集合的更改不会影响到其他的子集合。
例如,在同一子集合内的两个几何体之间添加约束不会影响的其他子集合内
部的节点。如果此时调用re_evaluate函数,被改变的子集合会进行完全求解,但是其他的子集合却可以使用增量求解方式。
DCM允许模型在若干情况下进行自动更新模型,比如增加或者删除一个节点。如果将约束添加到处于两个子集合中的两个节点中时,DCM会自动地将这两个子集合进行合并。
模型分区功能有DCM自动完成,应用程序不需要进行任何额外的操作。在一些模型中,使用分区机制可以有效地改善性能。
2.4.3 拖拽几何体
在进行设计时,经常先为草图添加一些几何约束。当移动包含几何约束的几何体时,希望与其相关的几何体进行相应的改变。当DCM求解时,可以将指定的变换矩阵应用到相关的几何体来完成上述功能。在欠约束状态下,这些函数可以提供复杂的变化。
上述机制被称为拖拽,它只适应于欠约束状态下。当使用拖拽时,下面几点需要注意:
任何数量和任何类型的几何体都可以被变换,包括固定和冻结几何体。但是拖拽很大数量的几何体会导致效率降低。
变换矩阵(不同几何体的变换矩阵可以不同)可以是下面类型的任意组合:平移,旋转和改变半径(圆和椭圆)。
拖拽时,DCM根据指定的变换矩阵变换相关几何体,其他的几何体同样会被变化以满足相应的几何和标注约束。
在很多情况下,指定的几何体没有足够的自由度来接受给定的变换矩阵。应用程序可以通知DCM需要怎样的行为,然后DCM回复是否可以完成指定的要求。详细解释参考dynamic_evaluate函数。
2.4.4 代数与非代数解决模式
不使用数值技术的计算方法被称为代数模式,反之被称为非代数模式或者数值模式。在求值过程中,只要有可能,DCM总是优先使用代数模式。相比数值模式,代数模式有下面的优点:
使用代数模式,设计中几何体的手性会被保留,无论相关的约束和标注有多大的变化。但是,数值模式可能会导致跳变或者滞后,这也是为什