找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 23645|回复: 13

[转贴] 族表使用详解

[复制链接]

52

主题

178

回帖

57

威望

工程师

积分
367

希望之星勋章

发表于 2008-2-19 22:49 | 显示全部楼层 |阅读模式
族表使用详解
        发布者:袖珍天使     来源:(iCAx)开思网     发布日期:     点击: 27695
什么是族表
族表是很多相似零件(或组件或特征)的集合,这些零件(组件/特征)从结构上看很相似,但在一些细节部份不同,比如尺寸大小或详细特征等。一个典型的例子就是螺钉、螺母,同一个标准(如GB/T819.1)里,会有多达上百种不同规格,但它们看起来是一样的并且具有相同的功能,所以我们把这上百种规格的螺钉看成是一个零件族。“族表”(Family Table) 中的零件也称表驱动零件。
下图(index.gif)是螺钉族。图的左面是普通模型,右面是它的实例。普通模型为父项。

族表的作用:
产生和存储大量简单而细致的对象
把零件的生成标准化,既省时又省力
从零件文件中生成各种零件,而无需重新构造
可以对零件产生细小的变化而无需用关系改变模型
产生可以存储到打印文件并包含在零件目录中的零件表
族表实现了零件的标准化并且同一族表的实例相互之间可以自动互换。  

关于族表的许可
Pro/ENGINEER 模块许可证不同,允许实现的族表内容也不同。
有Pro/FEATURE许可,可以:创建表驱动的自定义组,组特征尺寸可以是表驱动的、不变的或可变的。向零件“族表”(Family Table) 中添加表驱动的组。
基本的 Pro/ENGINEER许可,可以:通过向“族表”(Family Table) 中添加尺寸创建表驱动零件。
Pro/ASSEMBLY许可,可以:通过添加“族表”(Family Table) 子组件、零件名称以及组件尺寸来创建表驱动的组件。
族表结构
族表,本质上是用电子表格来管理模型数据,它的外观体现也是一个由行和列组成的电子表格。还是用螺钉来说,GB/T819.1里的上百种螺钉,外形都是一样的,只是尺寸有变化,比如螺纹规格、螺钉总长、螺纹长等等,在标准里,是这样描述这些数据的:(1.gif)

我们把这个表格变换一下,变成下面这样(部份数据):(2.gif)

这个表里,第一行是表头,列出了各列的抬头,第二行起,每一行是一个规格的螺钉的具体尺寸,也就是说,每一行是一个具体的螺钉规格,我们称之为一个实例,第一列是所有规格的螺钉的规格名,从每二列开始,每一列都是螺钉的一个尺寸参数的取值,我们称之为一个项或列。
现在,我们建一个螺钉的模型,模型先随便用一个实例的参数来建,比如用M3x5的参数。建好后再建一个族表,将这个模型里的对应于上表的那些尺寸都加入到族表里,再把各个实例都加入表族表,最后的族表结构如下:(4.gif)

可见,族表就是一个简单的电子表格。在这个电子表格里,表头的p、d、l、Dk、k等就是各个实例里要变化的项的代号,这些项最常见的是尺寸,也可以是特征、零件、参数、符号、阵列表、UDF等等。表头列就是每一个实例的名字,对第一个实例,它的名字就是模型的名字,这是不能在族表里改变的,其它的实例的名字,都是在族表里命名和修改的。第一个实例,实际就是当前模型,是所有其它实例的父模型,第一行里的所有项的值,也是直接调入当前模型的当前值(要修改也只能直接修改模型而不能修改第一行里各个项的值),其它所有实例的各个项的值,都是根据实际需要确定。
多层族表
上一节的族表(4.gif)是用一个表来管理所有数据。但我们可以看到,这个表里有些实例的某些项的取值是相同的,比如M3x4/M3x5/M3x6/M3x8/M3x10这五个实例,除了总长L这一项取值不同外,其它各项的值都是一样的,M2x5/M3x5/M4x5这三个实例相互之间差别比较大,但也有一个相同取值的项。所以,我们可以再变换一下,见下图(5.gif):

在这个表里,只取了四个项,用这四个项将全部M2的规格合为一个实例,全部M3的规格合为一个实例,合部M4的规格合为一个实例。余下总长L这一项在这个表里不存在。接下来分别做这样三个表(6.gif):
侯红旗

52

主题

178

回帖

57

威望

工程师

积分
367

希望之星勋章

 楼主| 发表于 2008-2-19 22:50 | 显示全部楼层

族表使用详解

这三个表分别与前一表(5.gif)中的实例M2、M3、M4相关联,在Excel里,就是建一个链接,在PROE里,就是打开M2实例,在此实例里再建一个族表,族表内容即是上图的M2这个表(M3、M4同理)。这就是族表的层级,实例M2、M3、M4所在族表为父族表,其它三个族表是它的子族表。同理,子族表还可以有它的子族表,父族表也还可以有它的父族表,也就是说,族表可以多级级联,见下图(7.gif):

但要注意:同一个对象(同一尺寸/参数/特征/参数表/UDF/元件…)只能出现在同一分枝的同一级的族表里。比如尺寸K,它出现于二级族表1中,那么,在二级族表1的所有实例中定义的三级族表(及这些族表的实例中定义的更下级族表)里就不能再使用它,重定义其上级族表(及更上级族表)也不能再使用它;但如果它所依附的特征在定义二级族表K的实例K里存在并且它没在二级族表K中出现,那么它可以出现于二级族表K(或这个族表的实例所定义的某级下级族表)里。
创建族表
1. 创建一个普通模型,作为原始模型来使用。
2.创建族表:(2001):零件(组件)----族表;(WF):工具----族表。进入族表编辑器,如下图(8.gif,2001、WF同一界面):

3.加入项,点上图第二个彩色按钮(增加/删除表列),进入项目选取窗口,如下图(9.gif,2001、WF同一界面):

选取一个项目类型,再选取相应项目加入项目列表里。如果选错了,点减号按钮将其从项目列表里去掉。选择完毕点“确定”返回族表编辑器。
注意:族表编辑器里各个列项的排列,是根据选取的顺序排列的,所以最好选取时把相关项挨着选在一起,以免数据乱七八糟;并且最好给各个项对应的对象(尺寸、特征等)取个有点实际意义的名字,这些名字将在族表编辑器的表头里显示出来,便于以后的数据管理。
4.加入实例行:点第2步图(8.gif)上的第一个彩色按钮(在所选行插入新的实例),编辑器里增加多个行,如下图(10.gif):

5.输入各新实例数据,把每一个实例对应的各个项的取值输入到表里。“实例名”对应的那一列是每个实例的名字,在此为每个实例取个名字,将来用这个名字来调用这个实例。各个项输入的值,如果与第一行(原始模型的数据)的值相同,那么可以用一个星号(*)代替。注意一个细节:如果某个项是阵列的阵列数,那么子项取值为0的话,与用星号同效果(PTC的帮助上说的是取值为0的话,实例连阵列的原始特征都不生成,与软件的实际情况不同)。
6.输入完毕,校验实例。点上图右起第二个按钮(校验族的实例)。系统即开始运算,尝试生成每一个实例。校验完毕如果没有实例生成失败,族表定义就可以结束了,点工具栏上的小眼镜图标(预览选定实例)会弹出一个小窗口,可以预览实例的最后形状,点“打开”可以在一个新窗口里打开一个实例;如果有实例校验失败,一般来说是此实例的某些项的取值有误,影响了模型的生成,需要检查此实例的各项取值,修正错误。
注:尺寸、参数、元件、特征的加入族表,都按上述过程加入即可,选取类型后,会有提示选取具体的尺寸、参数、元件、特征,“元件”是只有在组件里才可用的。其它类型的加入族表及其管理,请参考后文。公差的使用与尺寸相同,如果尺寸有公差,开启公差显示,即可将公差当普通尺寸一样选取中入族表。
创建多层族表
1.创建原始模型。
2.规划数据管理。根据原始模型的建模手法和各实例的具体变化,确定哪些项(尺寸、参数、特征、零件…)要用族表进行管理,再根据各个项的变化情况确定哪些项放在第一级族表里,哪些项放在第二级族表里,如果数据很多,还可能要规划哪些放在第三级族表里(或更多级族表)。因为同一个项只能出现在族表树的某一个层级里,所以一个项位于哪个层级一定要规划好,否则后期数据录入量会很大,尽可能的把取值重复较多的项放在靠前的层级里。例如原始模型里有A、B、C、D、E五个尺寸,五个尺寸项取值组合共生成100个实例,那么如何规划族表呢?
方案A:只用一级族表,那么每个尺寸取值都要录入100次,需要输入数据5x100=500次。
方案B:经分析后发现100个实例中A、B、C这三个尺寸组合重复较多,其不同组合只有5种,那么把A、B、C放在第一级族表,D、E放在第二级族表,则A、B、C这三个尺寸取值各只需录入5次,D、E这两尺寸还是需要各录入100次,总共需要输入数据5x3+100x2=215次。
方案C:分析后也发现,100个实例中B、E这两个尺寸组合重复更多,其不同组合只有2种,那么把B、E放在第一级族表,A、C、D放在第二级族表,则B、E这两个尺寸取值各要录入2次,A、C、D这三个尺寸各要录入100次,总共需要输入数据2x2+100x3=304次。
从以上的分析可以看到,不同的规划,数据录入量是差很远的。所以,在建族表之前先分析一下数据,确定一个较好的族表方案是很重要的,特别是在有大量实例的情况下。好的族表分级管理规划,不仅能大大减少数据录入量,降低错误发生率,还能为查找实例提供一个清晰明朗的指引,便于检索实例与修改数据。
3.建立第一级族表。
4.在族表编辑器里,选取第一级族表的某一个实例行,“插入”---“实例层表”,系统打开一个新的族表编辑器,按照上一节创建单层族表的步骤创建属于这个实例的二级族表。同理,创建其它实例的二级族表。创建完后,在原始模型里看到的族表编辑器如下:(12.gif)

可以看到,带有子族表的实例行前都有一个文件夹标记,不带子族表的实例行前是没有的。要查看子族表的内容,可以在工具栏“查找”的实例列表(这里只显示带有子族表的实例名)里找到那个子族表所依附的实例名并将其设为当前实例(默认情况下是本级族表的原始实例名,对第一级族表,就是原始模型名)。
5.多层族表的第二种创建方法:在建立了第一级族表后,选中要加入子族表的实例,打开它,系统在一个新窗口打开所选实例,接下来在此窗口里按照上一节创建单层族表的步骤创建一个新族表,所创建的新族表就是依附于此实例的二级族表。更多层级族表创建同理。
参考模型:GBT819_1.rar(装配体中所有元件被隐含,先打开零件再打开装配体反隐含)

修改族表内容
1.方式一:直接修改族表。
也就是打开族表编辑器,直接修改族表里各实例的值。要注意一下的是星号(*)的使用,星号表示所选实例的这个项的取值与原始模型的值相同,如果原始模型变化,那么,实例也跟着变化,如果不想实例跟着原始模型变化,就不要使用星号。另外,对于阵列数这种尺寸值,实例里取值也可以是0(直接修改模型不可以是0的!),但如果取0的话,实际效果也是星号的效果。族表里的数值型项的取值,必须是一个确定的数值或星号(*),不能是一个范围或变量名;特征、元件、组、参照元件、合并零件、UDF等项的取值,可以是“Y”、“N”、“*”或这个元素(无件、参照元件、合并零件、UDF)所带的子族表中的各个实例的实例名。
族表里原始模型的各项值只能在模型窗口修改模型来实现,不能在族表里修改(也有例外,见下文)。
2.方式二:修改实例模型。
侯红旗
回复

使用道具 举报

52

主题

178

回帖

57

威望

工程师

积分
367

希望之星勋章

 楼主| 发表于 2008-2-19 22:51 | 显示全部楼层

族表使用详解

打开要修改的实例(“文件---打开---选取实例名”或在族表编辑器里选中要修改的实例后点“打开”),可以像普通模型一样修改实例模型。修改原始模型,如是非族表控制内容,则所有实例都被修改,如是族表控制内容,则仅对原始模型和项取值为星号(*)的实例有效。修改实例模型,影响如下:
修改由族表控制的尺寸,系统会提示此尺寸由族表控制,确认后修改此尺寸,再生后族表自动更新此实例的取值;
修改非族表控制的尺寸,系统没有任何提示信息,但所有实例连同原始模型的该尺寸都修改了;
修改参数与修改尺寸类似,不论是否由族表控制,都没有提示信息,族表控制的参数修改再生后族表自动更新实例对应的项值,非族表控制的参数修改再后后,所有实例连同原始模型的值都修改了;
隐含一个特征(元件),不管这个特征是否由族表控制,系统会提示隐含只是暂时有效,再生后特征就解除隐含,对族表没有任何影响。
删除一个特征(元件),如果它有子特征,子特征也会一起被删除,这些被删除的特征,如果是由族表控制的,那么族表里该实例的值被更新为“N”,如果不是由族表控制的,那么族表里会自动增加相应数目的新列,这些列对应原始模型的项值为“Y”,对应此实例的项值为“N”,对应其它实例的项值为“*”;
增加一个特征,族表里会自动增加一列,此列对应原始模型的项值为“N”(注:这种情况下,可修改族表里原始模型的项值为“Y”,如果所增加的特征能在原始模型中生成,那么再生后这个特征将被加入到原始模型里,---接下来,所有其它的实例也都由星号把这个特征加入进去),对应此实例的项值为“Y”,对应其它实例的项值为“*”;
修改尺寸名、特征名等,会自动更新族表内容;
给任何一个实例增加参考尺寸、几何公差、表面粗糙度,都会自动在所有实例及原始模型中增加;
族表内容的阵列
阵列族表内容,实际上是一种快速输入族表数据的方法,其作用是减少编辑族表的时间。当一个族表里的多个项内容按一定规律变化时,我们就不必一个个项的输入,可以用阵列来快速输入。因此,这里说的“阵列”,只是一个快速复制族表实例的方法,与建模的“阵列”是完全不同的。
1.创建族表,加入族表的各个列(项);
2.创建一个实例,作为阵列复制的源,如下图(16.gif):

3.选中要阵列复制源实例,“编辑”----“用增量复制”,弹出设置窗口,如下图(17.gif):

4.在左侧项目列表里选中要增量变化的项,比如d0,点“》”将其放入右侧列表里,并设定其增量为20;同样,将p7放入右侧列表,设定其增量为2。在方向数量里设定为5,结果如下图(18.gif):

5.上面例子为一个方向变化,当然也可以设定为多个方向变化,最终的变化与模型中多方向阵列的变化相似,可自行尝试体会。如果某项没有被加入到右侧列表并给定一个非零增量,那么该项的值在所有生成的实例中保持源实例的值。
附:其它快速修改族表内容的方法:
A.用Excel编辑,在族表编辑器里,“文件”---“用Excel编辑当前表”,系统启动Excel,并将当前表调入Excel内,然后像编辑普通Excel表那样编辑表,编辑完毕更新族表即可。要注意的是,机器上必须装有Excel程序,编辑好的表里不可有PROE不接受的字符或符号,在某些版本里,这种做法不能成功(编辑完后更新不了)。
B.用记事本或其它编辑器编辑,在族表编辑器里,“文件”---“输出表”---“文本族表”,系统将当前表存为一个文本格式的文件,文件名为“name_tmp.ptd”(name为此族表的原始模型名,当然你也可以给它另外命名),然后用记事本或其它文本编辑器修改此文件,见下图(19.gif):

修改后保存,然后在族表编辑器里,调入刚才修改的文件即可(“文件”---“输入表”)。要注意:文件保存时应保存为文本格式,不能带有PROE不接受的字符或符号;文件名应是“原始模型名_tmp.ptd”,特别是在建多层族表时要注意,对于多层族表,这个“原始模型名”应是当前定义的子族表的原始实例名,这是系统命名规则,当然你可以按自己的规则去命名,只要不会搞错就好;对于多层族表,如同一层级有多个族表,族表结构都相同,则可以保存一个原始的文本文件,再复制出多个文件,按命名规则命名,并编辑好内容,然后创建每一个实例的子族表,只需要按文本文件中的项目排列顺序加入表控项目(即创建一个表头),然后就可以读入此实例对应的文本文件。
族表使用参照模型
当一个元件(B)参照了组件(AB)中的另一个元件(A)或子组件时,它(B)所参照的这个元件(A)或子组件带有族表,则取不同实例(A1、A2、A3…)时,此元件(B)也会跟着变化,在此情况下,我们可以使用族表控制“参照模型”,给此元件(B)建一个族表,在此族表中定义与所参照的模型的实例相对应的实例。例见下(13.gif):

零件A(L形)的两个直边厚度由族表控制,实例分别如下(分别对应上图中110、130长的直边):A1—35/25;A2—30/20;A3—25/15。在矩形零件B上创建一个直径30的孔,此孔轴线到零件A的外侧距离分别为60、50且固定不变。则当零件A取不同实例时,此孔在零件B上的位置是不同的。在此情况下,要给B创建一个族表确定此孔在每一个实例中的具体位置的话,就要用“参照模型”来解决。步骤如下:
1.创建零件A、B。
2.零件A中创建族表,用族表控制两直边厚度尺寸,三个实例A1、A2、A3。
3.创建装配体AB。
4.在装配体AB中创建族表,用族表控制每一个实例中如何取A的实例,三个实例AB1(取A1)、AB2(取A2)、AB3(取A3)。
5.零件B中创建族表,选取项类型时选“参照模型”,系统列出B所参照的文件名,选取AB.asm,确定。回族表编辑器,加入实例行,实例行中的各项取值分别为AB的实例名AB1、AB2、AB3,如下:(14.gif)
侯红旗
回复

使用道具 举报

52

主题

178

回帖

57

威望

工程师

积分
367

希望之星勋章

 楼主| 发表于 2008-2-19 22:52 | 显示全部楼层

族表使用详解

6.编辑装配体AB的族表,加入一列以确定B的实例取值,各项分别为B的实例名B1、B2、B3,如下:(15.gif)

7.结束,保存文件。
另:上面讲述了族表中如何使用参照模型,其中零件B的族表是手动完成的。根据WF2.0在线帮助,这个内容都是可以自动完成的。不过,我的版本的不能做到,因此,这里只简单的提一下,具体操作请参考以下内容自行试验:
首先完成上一节步骤的第1~4步。
打开装配体AB的族表编辑器,选“工具”---“将外部参照转换到实例”,系统运算,发现元件B有外部参照,“更新参照”对话框打开,并建议将实例B01、B02、B03加入到元件B族表中,点“确定”系统自动在元件B中生成一个族表,包含以上实例。
(使用参照模型需要注意:零件B参照零件A或其它零件或组件,那么,需要先打开被参照的零件或组件并更新,然后再生零件B,被参照零件或组件里的变化才能体现到零件B中。)
参考模型:ref.rar
族表中使用合并零件
PROE组件里的零件合并,实际上就是PROE中的实体布尔运算之实体相加,零件切除,也就是实体相减。将零件A合并到零件C中后,如果零件A带有族表,其不同实例的结构、尺寸不同,那么,在零件C中也可创建族表,给零件C定义多个实例,分别对应零件A的每一个实例。过程:
1.创建零件A、C;
2.在零件A中创建族表,各实例名为A1、A2、A3…;
3.创建组件AC;
4.在组件AC中执行合并操作(或切除操作),将零件A合并到零件C中;
5.打开零件C,创建族表,加入列项时选“合并零件”,系统列表提示当前零件所拥有的外部合并,选取零件A。加入族表实例,各项取值分别用零件A中的实例名A1、A2、A3…,见下图:(23.gif)

使用合并零件实际上也是一种零件间的相互参照,有关合并零件的操作请自行试验掌握。
参考模型:merge.rar



族表中使用符号
可以根据需要自已在模型中定义符号,对于零件part或组件part来说,最常见的一种符号就是表面粗糙度符号及系统内部定义的C1、C2、C3、C4这些符号。可以在族表中管理这些符号,以便使符号的可变内容在不同的实例中取不同的值。下面以表面粗糙度符号及C1、C2为例,说明符号的族表管理方法:
1.创建原始模型;
2.加入表面粗糙度;(零件—设置—曲面光洁度)
3.创建族表,加入列项,在“增加项目”下方的类型列表里点“其它”,系统不会提示当前有哪些可用内容,只在信息区出一行提示,要求输入符号名,输入“sf0”;重复点“其它”---输入符号名的过程,继续输入sf1、C1、C2等等;
4.增加实例,编辑各实例的取值,如下:(27.gif)

以上只是示例,当然其它的符号也可同样管理。
参考模型:sign.prt.rar(为了验证C1、C2等符号的取值变化,加入了几个赋值关系式)
族表中使用阵列表
一种比较特殊的情况,在模型中存在非规律性阵列,比如随意点阵,这种阵列一般用表阵列来实现。如果随意点阵排布方式有多种不同的变化,我们需要根据一些其它的条件来确定到底使用哪种具体的点阵排布方式,这时用族表来管理阵列表就是一种很有效的数据管理方法。做法过程:
1.创建零件。
2.创建对应第一种点阵排布方式的阵列表TA。
3.创建其它点阵排布方式的阵列表TB、TC…
2001:零件---修改—阵列表,进入阵列表编辑器内新增、编辑其它的表,并可随时根据需要选定哪个表为当前表,见下图:(20.gif)

WF2.0:在阵列定义托盘的“表”定义页里新增、编辑,见下图:(21.gif)

4.创建族表,加入列项时选取“阵列表”,选取用阵列表生成的阵列的一个子特征即可。然后加入实例,每一个实例对应的项取值为上一步所定义的各个阵列表的表名。见下图:(22.gif)

族表管理阵列表,实际就是为每一个实例指定活动阵列表名字,这样,当打开这个实例时,模型自动使用指定表名的那个阵列表。
参考模型:nn.prt.rar

带族表零件的布局声明
为了自动装配或数据传递,带族表的零件也可像普通零件一样声明使用布局。但需要注意以下问题:
1.声明必须在第一级族表的原始模型里声明,不能在任何一个实例里进行声明;
2.声明时必须保证只有第一级族表的原始模型被打开,有任何一个实例被打开,声明都不可进行;
3.在原始模型里声明过的基准,即使它在某个实例里被隐含,在自动装配时,它也会像没有隐含一样使用;
4.在装配体的某个实例里隐含了一个元件,这个元件被声明过,则这个实例作为另一个装配的子装配体时,所声明的基准会被使用(虽然在这个实例里它并不存在);
侯红旗
回复

使用道具 举报

1272

主题

4万

回帖

900

威望

管理员

积分
47433

社区建设勋章优秀斑竹勋章原创先锋勋章热心助人勋章宣传大使勋章斑竹勋章

发表于 2008-2-20 07:59 | 显示全部楼层
Pro/E族表创建详解教程
http://www.proewildfire.cn/thread-103-1-1.html

这里发过了,可惜图片连接失效了
努力,认真解答网友的每一个问题,共同学习,一起进步!  请勿发论坛消息求助。
回复

使用道具 举报

16

主题

311

回帖

1

威望

工程师

积分
376
发表于 2008-2-20 14:42 | 显示全部楼层
我来听课了了.谢谢分享!
回复

使用道具 举报

4

主题

204

回帖

3

威望

工程师

积分
247
发表于 2008-3-21 00:17 | 显示全部楼层
XIEXIE
回复

使用道具 举报

0

主题

5

回帖

0

威望

实习生

积分
5
发表于 2008-3-24 23:00 | 显示全部楼层
我来听课了了.谢谢
回复

使用道具 举报

3

主题

17

回帖

0

威望

实习生

积分
23
发表于 2011-4-19 10:55 | 显示全部楼层
好贴!可惜没图!
回复

使用道具 举报

1

主题

33

回帖

0

威望

实习生

积分
41
发表于 2011-6-1 14:16 | 显示全部楼层
高人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请发邮件联系我们,本站将立即改正或删除。

手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号|站长QQ28016688

GMT+8, 2024-11-23 10:20 , Processed in 0.167064 second(s), 21 queries .

快速回复 返回顶部 返回列表