产品建模过程中,经常会遇到如下图所示的向两边对称阵列的情况。而通常采用的方法都是根据需要先算好数,然后再向一边阵列出特征。当与阵列相关的特征或阵列需要修改时,就必须重新再算一次数,否则模型不对称,显然这种方法是不能完全表达出设计的意图的。我们更希望即使改变了相关的参数时(阵列的数量和增量),不用算数模型就能自动更新保持对称。
为了能达到向两边阵列,得用上关系式阵列。我们要对奇偶的数量进行不同的处理。关系式如下:
increment=I 设定增量为I
A=floor(idx1/2)*2 用于每个阵列的奇偶判断
B=floor(P/2)*2 用于阵列总个数的奇偶判断
if B==P
L=increment/2
else
L=0
Endif 此段用于设定L值,当总个数为偶数时,L=I/2;当为奇数时,L=0
if A==idx1
memb_i=idx1*increment
else
memb_i=-idx1*increment
endif 奇偶个数分别左右对称阵列
显然在首次阵列过程中,我们跟本就不知道P在Pro/E模型中的代号。怎么办呢?方法是有的,首次阵列时我们不急于用上面的关系,随便填入一条关系式,如memb_i=idx1*10然后退出关系编辑,也随便输入阵列数量为5,生成阵列。然后就可以用Relations查出L和P在Pro/E模型中的代号了。重新修改阵列关系,把memb_i=idx1*10删除,写上上面正确的关系,L和P的代号就跟据刚才查出的改,重生模型就OK了。当我们任意改变P和I时(当然I要在关系编辑里改了),模型仍然保持对称的。
我们用实例简单说明一下。如上图,模型很简单,不多说,只说明一下关系的处理。当以随便的关系memb_i=idx1*10阵列时,可查出P和L在模型中的代号分别为P10和D8,因此重新填入的关系为:
increment=5
A=floor(idx1/2)*2
B=floor(P10/2)*2
if B==P10
D8=increment/2
else
D8=0
Endif
if A==idx1
memb_i=idx1*increment
else
memb_i=-idx1*increment
endif
保存并退出关系编辑,重新输入阵列的数量为42,再生OK。即使将数量改为任意值,模型仍然保持对称的。