作者:IceFai
所谓阵列,是通过复制导引特征以生成大量有规律排布的相同或类似的结果几何.一般是用于表面花纹的生成.
从2001到wildfire,ProE的阵列功能有了长足的改进,变得更自由和强大。在WildFire中,可以选择的阵列方式有下面的几种:
尺寸阵列(Dimension) 方向阵列(Direction) 轴心阵列(Axis) 填充阵列(Fill) 表阵列(Table) 参考阵列(Reference)
要选择适合的阵列方式就要先对各种阵列方式有比较明确的了解,下面我们就对这些阵列进行详细的讲解.在详细的讲解之前,我们先来了解一下各种阵列的基本适合范围,以便先让大家有一个宏观上的了解.
尺寸阵列(Dimension Pattern)是一般的阵列,阵列的方式主要通过导引特征的尺寸发生变化来实现阵列,是应用最广泛的阵列方式,但对阵列的导引特征的尺寸标志以及参考的使用方式要求比较高,初学者容易失败.
方向阵列(Direction),是一种只能沿直线阵列的特殊阵列方式,
也是WildFire新引入的阵列方式,特的缺点自然是只能沿直线针列,优点是对导引特征的尺寸标志和参考使用方法基本无要求.比较方便.
轴心阵类(Axis),和方向阵列类似,轴心阵列对导引特征的标注和参考都基本不做要求,但它是只能做圆周阵列.导引特征沿选定的轴作圆周阵列.
填充阵列(Fill).这是一个比较特殊的阵列方式,也是WildFire新引入的,通过指定一个草绘的阵列区域,ProE就会自动用导引特征根据所给的间隔值以及形状来填满整个区域.
表阵列(Table).这是规则中的不规则.通过应用尺寸表来实现特征的阵列,优点是各个特征的尺寸变化可以无规律,缺点是需要逐个输入.
参考阵列(Reference).这个阵列的产生需要一个前提,也就是阵列的导引特征起码有一个父特征是某个阵列中的一员.这样,特征的阵列就会根据父特征的阵列方式来自动阵列. 1、尺寸阵列(Dimension) 典型的尺寸阵列如下图所示
在尺寸阵列中,只要有下面的几个要素: 导引特征,也就是要阵列的特征. 导引尺寸:用来发生改变的尺寸, 阵列组数:要阵列生成的数目,
尺寸增量:前后两个阵列实例的尺寸增量
进入阵列的对话框后,如下图所示.激活相应的栏然后选择/添加相应的值便可
需要注意的是同一个方向上允许有多个变化的尺寸值.要添加多个变化尺寸值,你可以在按住Ctrl键的前提下选择多个要作为变化尺寸的尺寸值.比如下图,在第一方向上除了水平距
离发生变化外,柱子的直径也逐渐增大
尺寸阵列中最关键是第一个导引特征的标注以及参考方法,基本上所有尺寸阵列的失败原因都是因为导引特征的问题的.所以要特别注意导引特征的标注方法.比如要阵列左下截面拉伸的特征.假设弦长的增量为0.5,而圆弧的半径维持R1.5不变的话,那么阵列到第四个实例的时候弦长变为3.5,而圆弧直径只有3.0,这样这个截面就会失败从而导致阵列的失败.而同样形状的截面,如果,改为右下图的标注方法,则不管弦长如何变化,阵列都不会失败.
但是你如果用右上图的标注方式进行阵列的话,就会发现,虽然阵列是成功了,但是在阵列方向上随着弦长增加而显得越来越”瘦”了,这个原因很简单,弦长变长了而弧高不变,所以圆弧的半径变化就越来越大,从而显得圆弧越来越瘦了.如右图所示.
如果你想在阵列方向上的圆弧形态基本不变的话又该如何做呢,很显然圆弧的半径要随弦长的增加而作适当的增加.再看下面的标注,是不是比上面的好多了?
通过这个简单的例子,我想大家已经对尺寸阵列的尺寸的重要性有了一定的了解了.下面再看一个比较常见的例子.在一个椭圆上等角度阵列圆柱
初学者很容易就会想到用左下图的标注方法,用中心来确定变化的尺寸角度.
但是很快就发现阵列出来的结果不对-----只有一半,另一半失踪了!如右上图所示,这又是为什么呢?其实,另一半不是失踪了而是和前一半重叠了.这是因为中心线是没有方向性的,也就是说超过180度就回到0度.这样自然没办法实现整周的阵列了.所以要实现整周的阵列就要换一种方法了,我们可以用构造直线段来代替中心线,因为直线段是有方向性的,所以可以实现从0到360度的变化,自然可以实现整周的阵列了.构造直线段在圆周阵列上的用途非常广泛,要善于利用.
还有一种情况的阵列,阵列的实例在阵列过程中基准也会发生角度的变化.一般来说自然也可以用构造直线来实现,但有时草绘会显得复杂些,这时候也可以引入一个在2001中称之为临时基准的方法.如下图的阵列不规则曲线上的均布阵列. 小椭圆间的曲线长度相等,每个小椭圆长轴都垂直在该处的大椭圆
对于这个阵列,有两个问题需要解决:均布,垂直.
不规则曲线上的均布一般用阵列点的方法来解决,也就是在曲线上作一个以长度比例为参考的点,然后用长度比例为增量作阵列.这样两个点之间的曲线长度就达到相等的目的了.
之后的小椭圆只要用参考点阵列就可以了.注意的是选择曲线的时候要用右键查询选择方法以保证选择的是整个椭圆曲线而不是一半。
至于垂直,就要用临时基准的方法.也就是在草绘第一个小椭圆的时候,参考的平面要用过第一个点并垂直于大椭圆(要注意用右键查询选择的方法选择整个椭圆而非一半)的临时创建的基准面.如下图所示。
为了避免在进入草绘的时候选错基准,建议在做第一个点的时候,比例值先设为非零,比如0.1什么的.然后创建完第一个草绘小椭圆后再把这个值改为0,这样就可以把小椭圆和点移到了起点而又不会因不小心选错参考而导致后面的参考失
败.
当第一个点和第一个小椭圆创建后了之后,你可以分开阵列也可以先作一个组在一起阵列.假设你要阵列20个,那么就可以用长度比例为0.05为增量来阵列就是了。
还有一种阵列是所谓的随形阵列,这种阵列是指阵列的某些
边沿着一定的曲线发生变化.
对于这种阵列,只需要在草绘第一个特征的截面的时候注意使用已有的曲线或边界作为参考或图元就行了。
1.1. 关系阵列
最后我们来看看尺寸阵列中的最后一个选项:用关系控制增量(Define increment by relation),在ProE中有几个涉及到关系的特征,比如这个阵列,可变扫出,扫描混成,行为建模.这些特征都有一个共性,也就是对初学者都有种神秘的吸引力,但同时也有种神秘的抗拒力.吸引力是因为它的变化多端,抗拒力是对他的关系的陌生感造成的.
要进入阵列关系,首先要把某个阵列增量转化成关系控制.如下图所示
要理解阵列关系,首先就要先理解阵列关系中的各个参数的指代含义.当进入阵列的关系编辑器时候,你就可以看到在前面有一些参数的用法说明.
Memb_v-----就是实例尺寸,也就是阵列的实例特征在这个阵列方向上发生变化后的实际尺寸值,比如上图中假设尺寸6是第一个方向上的阵列变化尺寸,增量是恒为4,那么这个方向上的第四个阵列实例的memb_v值就是6+4*3=18. Memb_i-----就是当前实例对前一个实例的的变化尺寸增量.注意和memb_v的不同是memb_v是绝对尺寸数,memb_i是相对增量.比如某个阵列的尺寸增量恒为4,那么memb_i的值就总是为4.
Lead_v------导引尺寸,也就是第一个阵列特征的用来发生变化的尺寸数,但是在关系中,这个尺寸恒为第一个特征的尺寸数不能改变.比如第一个特征在第一阵列方向上的变化尺寸数值为6.0,那么在所有的阵列过程中,第一方向上的lead_v的
值均为6。
Idx1和Idx2,分别是第一方向和第二方向上的实例索引,也就是代表当前实例在整个阵列中所处的位置.其值都是从0开始,第一个特征idx1和idx2均为0.其它的递增.比如第一方向上的第四个其idx1的值便为3。
阵列的关系是在每个实例的再生时同步计算的,也就是对于阵列中的每一个实例,系统都会根据当前的参数值代入关系中以求得实例的当前尺寸.下面就以一些具体的例子来详细说明一下阵列关系的使用. 例子一:
如下图,我们要阵列下图的小柱子,并且设定了阵列上的关系为
memb_i=4+idx1
这个关系表明阵列的实例的尺寸增量是递增的.第二个对第一个为4+1=5,第三个对第二个的增量为4+2=6……….以此类推,第6个对第5个的增量为4+5=9.
阵列后是这样的.可以看到间距不断增加
要实现相同的结果,你也可以用memb_v的表示方法来写关系,这时候memb_v的关系就要这样写: (实际就是相等于把增量求和再加上导引尺寸数)
Memb_v=lead_v+4*idx1+idx1*(idx1+1)/2 例子二;
假设我们把上面的阵列改为下面所示,在一个阵列方向上同时添加了横竖两个方向的尺寸作为变化尺寸,横方向的增量为恒定6,竖方向为关系 Memb_v=lead_v+sin(idx1*45)*4 这样,阵列出来又会怎样呢
我们先来分析一下关系.
sin(idx1*45)*4表明这个部分的值是作正弦变化,角度变化值
为每个实例增加45度,幅度为+-4; 而lead_v是导引尺寸阵列过程维持不变,在这里是8.所以阵个阵列的变化也比较显然了,是以高度8的水平线作基线作正弦的排布,结果也验证了我们的想法.
例子三:
再看下图的阵列,第一方向为关系阵列5组,第二方向为恒定阵列4组.第一方向上的关系为 if idx2/2==floor(idx2/2) memb_v=lead_v+idx1*5 else
memb_v=lead_v+idx1*5+2.5 endif
那么这个关系又代表什么呢?首先我们看第一句的判断语句
If idx2/2==floor(idx2/2)
这个语句的实际意义是如果idx2的一半正好等于不到idx2的一半的最大整数的话就进行下面的语句
:memb_v=lead_v+idx1*5,
否
则
就
执
行
memb_v=lead_v+idx1*5+2.5.换句话说如果idx2是偶数的话第一排的特征位置就不变,如果是奇数的话就要错位2.5.(慢慢理解)而增量恒为5.
明白了关系后,我想就很容易想到阵列后的排布是如何了。
基本上,所有可以在ProE中可以用的关系和函数在阵列中都可以用,甚至在某些特殊的用途中我们需要用控制图表来控制阵列的走势,这时候就可以结合evalgraph来控制阵列关系. 例子四:
下面的例子演示如何利用控制图表(graph)来进行阵列.首先我们创建一个名为”pat_gra”的控制图表(graph).注意要在阵列的第一个特征之前创建.
然后创建阵列,在阵列中添加关系: Memb_v=evalgraph(“pat_gra”,idx1)*4
这个关系表明,在阵列上该尺寸受graph:”pat_gra”所控制,其值是graph是对应的y方向值的四倍。
阵列的结果如下,是不是和控制的graph一致呢?所以,应用是要灵活应用的,有些看起来风牛马不相及的特征联合起来用就会产生令人惊讶的应用.
最后,我们再来可个复杂点的例子.这个例子在WildFire之后可以用填充阵列来完成,但也并不是可以随意控制。在这里引用主要是辅助关系阵列的讲解 例子五.
同心圆环阵列.每层数目递增6个。
首先我们先确定第一个特征(导引特征)的创建,很显然,这个特征起码要有两个可变化尺寸:半径尺寸和角度尺寸.为了这个目的,我们可以创建的截面如下:其中为了能全周阵列,我们用构造直线段来确定角度,并且用构造线段的端点到中心的
距离来确定半径.为了避免在第一个特征出现零直线长度的失败,特意把构造直线反向延长一点距离.画好下面的图后修改4.0的半径为0就可以回到原位并且还保留有这两个变化尺寸,为后续的阵列作好准备。
然后我们开始阵列,用一个方向的阵列就可,为了要确定两个尺寸的阵列关系.对于阵列实例,自然我们要先确定它的半径以及角度.
在进入关系之前,我们先添加两个参数,一个是实数n,一个是整数k,
因为径向是等距的,所以我们只需要知道实例所在是第几圈,比如用k表示,那么半径自然可以用k*8表示(8为径向间距). 而要确定角度,就要知道实例在该圈是第几个和该圈的角度增量.注意到自内到外各圈的小圆柱数目分别为
6*16*26*3……6*n. 那么很显然假设了阵列了完整的k圈后,所有的实例和为k*(k+1)/2*6+1.这样假设我们知道已经阵
列的完整圈数的话,我们就可以用idx1-k*(k+1)/2*6-1来表示该实例在当前圈的第几个.而当圈数确定后,我们就可以知道在当前圈总共有多少个,假设为第k圈,那么当前圈共有k*6个实例,所以角度间距为360/(k*6)=60/k.这样所有的问题便转化为如和确定当前圈数了. 我们又该如何确定圈数呢?
我们可以看看具体的情况,不难算到假设完整阵列了三圈,那么可以知道已经有3*4*3+1=37个实例.而完整阵列了四圈的话就会有4*5*3+1=61个实例.这样我们自然以推断idx1的值在37到60之间的实例都是第四圈的成员.而对于刚好整圈的阵列,都会有idx1=n*(n+1)*3的方程成立.也就是idx1=36的n=3,而idx1=60的话则n=4.那么对idx1在36到60这个范围内的的值n的值就是3到4之间的值.从这里就不能理解当我们解的n*(n+1)*3=idx1这个方程的解时,n的整数部分就是已经阵列完的圈数!这样圈数的确定便可迎刃而解了.在ProE中可以用solve…..for语句来解方程.具体格式如下: Solve
n*(n+1)/2*6=idx1---------------[要求解的方程] for n ---------------[要求解的未知数] 但细心的人可能看到我的方程是这样
的:n*(n+1)/2*6+0.5=idx1.为什么我会多加0.5呢?这是因为,对这个方程来说,n的解是无理数,也就是说对于软件来说,得到
的解都是近似的.比如本来应该是4的解或许就只能得到3.999999.这样显然和我们的结果有所偏差,但是我个增加一个小的方程增量的话(这里是0.5)得到的解就会是类似4.01的情况.由于我们只关心整数部分,所以这样做是完全没问题的.
得到n的实数值后,我们就可以用k=floor(n)来提取n的整数部分.那么k+1就是当前圈数.
而idx1-k*(k+1)-1(从0开始)就是该圈的当前序号.剩下的关系就一目了然了。
阵列关系就讲这么多了.要想熟练掌握自然要先掌握关系。 2、方向阵列(Direction)
方向阵列相对比较简单,对第一个特征的参考使用也没什么要求.属于真正的傻瓜式操作.确定方向可以是任何直线元或平面.下图是使用平面(法向
使用直线作为参考.
方向阵列有点类似是几何级别的特征.阵列的实例可以说是抛弃了所有和父特征的父子关系,完全忠实的把第一特征的几何进行阵列.比如下图,当选一个斜面作为阵列的参考时,柱子离开了实体表面”悬空”了.也就是说作为父特征的实
体表面已经没用了。
3、轴向阵列(Axis)
所谓的轴向阵列就是把导引特征绕指定的轴作圆周阵列.轴向阵列和方向阵列也有点类似,也是比较接近几何级别上的特征.对于第一特征的参考基本不作要求.
轴向阵列的参考必须是基准轴.而且这个基准轴必须是在导引特征(也就是第一特征)创建之前创立的.
脱离父特征。
4、填充阵列(Fill)
填充阵列就是把指定的特征在指定的区域内按指定的间距进行填充式的阵列.不过因为区域的特殊性,这里指定的间距只是个参考值,实际出来的结果会有所偏差,这点在使用填充式阵列的时候要注意.
填充阵列首先要指定或草绘一个区域.如下图
当区域曲线选好或创建好之后,你就可以设定fill阵列的各项内容了.你可以设定的内容有:
排布形式,阵列间距,留边间距,径向角度,径向间距等等.
排布的形式有Square(正方形),Diamond(棱形),Triangle(三角形),Circle(圆形),Curve(随曲线),Spiral(螺旋线)几种,它们各自的含义如下图所示. 间距是指两个相邻实例之间的距离,不过阵列出来的实际距离和输入的标称值一般有差异.
留边距离,是指最外圈的实例中心到曲域的最小边界距离. 径向角度是对圆形阵列是的角度增量.径向距离也是圆形阵
列的径向间距。
在填充阵列时,你可以手工选择不想阵列的实例,只需在不想生成的实例上单击一下便可.同时该实例的实心黑点也会变成空心点.再一次单击便可切换回实心点.
下面就是被取消的实例.是不是控制比较自由呢?
5、参考阵列(Reference)
参考阵列的意思就是,要阵列的特征有一个父特征是某个阵列中的一员.这样这个特征要阵列的时候可以选择和父特征一样的阵列关系去进行阵列.
比如下图,在线上有一个点阵列,pnt0为第一个阵列的特征.
然后我们创建一个圆柱拉伸,圆的中心设在pnt0上
那么这个圆柱在阵列的时候就会有Reference选项出现,done之后就会发现圆柱随点阵列了.这就是参考阵列的意思了。
6、表阵列(Table)
最后一个阵列形式就是表阵列了,表阵列通常应用于阵列的特征参数(形状)一致或类似但排布或尺寸的变化无统一规律的情况.也就上说当你用其他阵列方法找不到一个统一的阵列规律的描述的时候就该考虑使用表阵列了.在表阵列中,添加可变尺寸的方法和其他的一样,不过要修改尺寸值就要选定表然后点编辑(Edit).如下图所示
在表编辑器中,你就可以输入各个实例的索引和尺寸值,注意索引值在同一个表中要唯一.
输入完后退出就可以了。
在WildFire中,表阵列可以有多个阵列表.添加方法是打开表(table)选项然后在列表中点击右键选择添加,这样就可以创建另外的阵列表,同样的输入方法输入各实例尺寸和索引.
当有多个阵列表存在时要应用某个表时,就要选择该表并激活它,如下图所示.
阵列完成后,要修改某个实例中的尺寸,你可以重定义阵列然后编辑表,也可以直接在part环境下通过modify来直径修改某个实例的尺寸(当然是要在阵列中的某个变化尺寸).
这样,阵列的基本形式就讲完了,在WildFire中各个阵列的形式都是可以切换的,不过在某些切换是不可逆的,操作的时候注意看提示信息就行了.
再生选项:
在ProE阵列中还有一个可变的选项,那就是再生选项.在再生选项中,有三个选项Identical(相同):
再生速度最快也最简单的阵列,要使用这种阵列,必须要满足下面的条件,否则就会产生失败: 所有实例大小,尺寸相同 所有实例放置在同一曲面上
没有与放置曲面边、任何其它实例边或放置曲面以外任何特征的边相交的实例
Variable(可变):可变阵列自由度相对要比相同阵列大点,但再生速度也慢些.度于可变阵列有下面这几个特点和实例大小可变化。 实例可放置在不同曲面上。
没有实例与其它实例相交
General(一般):这是一般的阵列选项,自由度最大但也最耗计算资源,速度最慢的一种. 系统对一般特征的实例不做假设。因此,Pro/ENGINEER 计算每个单独实例的几何,并分别对每个特征求交。
比如下面的阵列,我们在第一方向上有两个增量,一个是水平尺寸一个是直径尺寸.
如果使用Identical选项,那么阵列出来的实例在水平尺寸上会按增量递增,但是直径则不会发生变化,如左下图所示.
如果改成variable选项那么直径也会按增量发生递增.
而同样的阵列,假如我们把水平的增量改为10,显然10比直径还要小,那么阵列出来的实例之间会有相交现象.这时如果用Identical或variable选项的话,阵列就会失败.这时候只能用General选项才可以成功阵列.
阵列实例之间有相交..
组的阵列
组的阵列其实和单个特征的阵列也并无不同.只不过是通过组的形式把相关的特征都集中在一起进行阵列而已,典型的组阵列形式如下
在上图中,要随曲线等分阵列的旋钮,其上的筋总是垂直于曲线的.要达到这个目的,我们首先在曲线上做一个点,然后过这个点作这条曲线的垂直基准面,最后用这个基准面作为草绘的方向参考平面做剩下的两个拉伸.做拉伸的草绘截面的参考选择要小心,只能选择上面两部得到的基准点和平面作为参考(切记).得到第一个组的全部特征.如下图所示.
然后就是选定所有这四个特征做成一个组,假设我们命名为
RR,那么对于RR这个组来说,它对外部的参考其实就只有点在曲线上的长度比例值了,也就是说当点的比例值改变了,那么整个组就会随之改变.所以对于组阵列来说,如何有效的封装参考是很重要的,在创建组内的单个特征时候一定要小心选择,避免使用不适当的组外参考而造成组阵列的失败.
阵列的阵列
利用组阵列,我们还可以实现阵列的阵列.
方法其实很简单,我们只需要把子阵列做为一个组(Group),然后再用这个组(Group)再一次阵列就行,不过第二次阵列的尺寸变化值不能和第一次的重合
一些实际使用的阵列技巧
至此,所有关于阵列的基本知识点都讲完了,剩下的就是如果根据需要选择适当的阵列方法.
实际的阵列中,同一种结果的阵列也是可以用多种.选用适当的阵列不单可以减少出错的机会还可以减少再生时间. a.规则面(平面,旋转面)上的组阵列
如下图所示,在平面上的阵列,但阵列的特征是由多个特征组成的,这个时候你可以用组(group)阵列或是参考阵列.但是这样对于每个实例来说都具体和同第一个组相同的特征.比如说第一个组有四个特征,要阵列100个的话,那么这个阵列就要400个特征.并且再生的时候要对每个特征进行计算.
但是,如果我们把第一个组全部复制成一个面组(或者直接做花纹的时候用封闭面组做),然后分别向两个方向移动0得到一个复制的新面组.如下图.这样我们就可以直接用这个新的面组进行两个方向的阵列了.得到曲面的阵列后,再用实体化来进行参考阵列就可以得到所有的实体了.这样不管一组内有多少个特征和复杂程度如何,都可以转化成两个简单的阵列.而且,系统对曲面移动的计算要比实体的计算时间短得多。
因篇幅问题不能全部显示,请点此查看更多更全内容