上个月, 欧洲论坛上的一个反馈是很多用户都想了解有关SPAresabs, SPAresfit, SPAresnor, 和 SPAresmch,“四个Reses”的问题。 (下边我把“SPA”省去了)
二个大的问题好象是:它们是什么?改变它们时我需要注意什么?
第二个问题可分成二部分:
2a. “永久性”改变,意即选好一组值后,在造型中就固定使用它们。
2b. “暂时性”改变,意即在某个特定造型操作中暂时改一下(例如布尔操作)。
我先简短说说第二个问题,最好不要改变原来设定的数值,因为ACIS在这些数值下最稳定。下面是详细的回答。
先来回答第一个问题: 这些误差数值是什么?(进一步的说明可参看在线求助部分的“误差数值和单位”章节。
resabs - 这是ACIS最基本的误差数值,也可称作“造型器精度”。假如两个分离点之间的距离少于resabs, 那么ACIS对於问题“它们是相同点吗?”, 就会给出肯定回答。
对用户来说最重要的是记住resabs应该 比关键的最小距离要小的多(小1000倍)。如果制造过程要求精度控制在0.1毫米,那么resabs最好选择不大于1.e-4毫米, 若resabs是1.e-6个造型单位(预设值),那就相当于每个造型单位有100毫米。如果使用resabs预设值(1.e-6),而造型单位是1毫米,这没问题;关键的自定标度比resabs大100000倍。但是,在造型单位为1米, 而仍用(1.e-6)resabs预设值, 那就开始有危险了— 此时关键的自定标度仅比resabs大100倍。
resfit -大多数几何量在ACIS内部都有一个对应的B-Spline近似几何量。很多内部算法都要用到这些近似量。Resfit是一个控制近似精度的参数,预设值是resabs的1000倍。取这个预设值是权衡了速度和内存消耗量的矛盾。同时也付合上面提到的关键的最小距离应该比resabs大得多的理念,从而保证在比resabs更低精度下,依然能够捕捉到曲线曲面的各项特征。当然,作为一个内部使用的控制量,是否应该让用户从代码中看到,值得商榷。
resnor–它有二个角色:一个是造型器的角度分辨率(造型器最小可以区分的角度),另一个是代表造型的动态范围 — 最大允许位置和造型器精度 (resabs)之比。这二者间有三角关系;造型器的角度分辨率就相当于这样一个视角,从造型器最大允许位置看一条长度为resabs的线段。恰是二长度之比。
resmch –这是一个与浮点计算误差有关的无长度单位的量, 它被用作比较二个浮点数时的相对误差。实际上,当距离远少于resabs 时,它常被用作绝对误差,这意味当resabs偏离预设值太大了,而ACIS就要失去稳定性了。
现在来回答第二个问题 – “我是否应该改变他们?”总的来说,任何偏离预设值的变化,都可能会降低ACIS的稳定性, 虽然危险程度各不一样。下面我根据危险程度强弱排列来回答这个问题。
“我是否应该改变resnor 或resmch?” –决不!它们都是与64-位浮点计算有关的无长度单位的量。 虽然没有设为常量,但还是不应作任何改变。
“我是否应该改变resfit?” –只有当你改了resabs时。(请看下文)。resfit是用于控制近似几何量精度的。与resabs一样它代表的是距离。预设值是resabs的1000倍;所以最好把它保持在100倍到1000倍的范围。若把resabs改得大于resfit那是很危险的。
“我是否可以临时改变一下resabs?” –这可能不是个好主意,尤其是我们现在已引入了模糊布尔操作。在内部,我们有这样做,但那是一种权宜之计,并不符合ACIS的设计初衷。而且我们自己也正在尽力地想去除这种做法,用相交误差来代替。用户临时改变resabs可能会使造型产生不易察觉的毁坏,而这是很难由用户自己来修补好的。注意我这里说的“临时”,是指对造型做操作时所用的resabs不是产生造型时所用的resabs值。
“我是否应可以永久改变resabs?” –这是最不危险的,你把它下调至1.e-8或上调至1.e-4 (当然,resfit也要作相应收扩), 可能没事。虽然这样说,下面几点还是值得注意的。
1) 如果把resabs设为1.e-30,ACIS将会运行不下去。
2) 如果把resabs设为1.e+30,ACIS也将会运行不下去。
3) 大多数情况下(在Spatial内部和用户处),ACIS都是在四个Reses 设为预定值下运行的。
在理想世界里,所有ACIS 软件编码中代表距离的数字都已乘上系数 resabs/1.e-6。现实中,“魔术般的数字”亦会悄然而生,假定resabs是O(1.e-6),造型尺度为O(1),而参数变化速率是O(1)。让ACIS在四个Reses为预设值下运行就意味着ACIS的稳定性正处这个美妙的点上。与其修改resabs,不如保持其在预定值下,而修正造型单位,使得终端用户关心的最小距离约为1.e-3(1000*resabs)。
注:我最早发出的版本中,对于保持resabs远小于用户距离作有相当详细的说明。–基本上就是把有关resabs的那些不易明白之处分开 加以论述(尤其细诉了“相同”操作不能传递)。假如大家都想看的话,我可以再发一遍
|