2.1.1 关于关系
1.关系的基本概念
关系(也称参数关系)是用户定义的尺寸(或其他参数)之间关系的数学表达式。关系能捕捉特征之间、参数之间或装配元件之间的设计联系,是捕捉设计意图的一种方式。用户可用它驱动模型──改变关系也就改变了模型。例如在图2.1.1所示的模型中,通过创建关系d26=2*d23,可以使孔特征1的直径总是孔特征2的直径的两倍,而且孔特征1的直径始终由孔特征2的直径所驱动和控制。
图2.1.1 关系的基本概念
➢关系类型
有两种类型的关系:
●等式──使等式左边的一个参数等于右边的表达式。这种关系用于给尺寸和参数赋值。例如:简单的赋值d1=4.75,复杂的赋值d5=d2*(SQRT(d7/3.0+d4))。
●比较──比较左边的表达式和右边的表达式。这种关系一般是作为一个约束或用于逻辑分支的条件语句。例如:
作为约束(d1+d2)>(d3+2.5)
在条件语句中IF(d1+2.5)>=d7
➢关系层次
可以把关系增加到:
(1)特征的截面草图中(在二维草绘模式下)。
(2)特征中(在零件或装配模式下)。
(3)零件中(在零件或装配模式下)。
(4)装配中(在装配模式下)。
➢进入关系操作界面
要进入关系操作界面,可在功能选项卡区域的选项卡中单击
按钮,系统弹出图2.1.2所示的“关系”对话框,可在
区域指定要查看其中关系的对象的类型,然后选取某个对象。以装配模型为例,系统将显示如下几种对象类型:
●──访问装配中的关系。
●──访问装配中骨架模型的关系(只对装配适用)。
●──访问零件中的关系。
图2.1.2 “关系”对话框
●──访问元件中的关系(只对装配适用)。
●──访问特征中的关系。
●──访问继承关系。适用于“零件”和“装配”。
●──如果特征有一个截面,那么用户就可对截面中的关系进行访问。
●──访问阵列所特有的关系。
2.关系中使用的参数符号
在关系中,Creo支持四种类型的参数符号。
(1)尺寸符号:
―d#──零件模式下的尺寸。
―d#:#──装配模式下的尺寸。第二个#为装配或元件的进程标识。
―sd#──草绘环境中截面的尺寸。
―rd#──零件模式下的参考尺寸。
―rd#:#──装配模式中的参考尺寸。第二个#为装配或元件的进程标识。
―rsd#──草绘环境中截面的参考尺寸。
―kd#──在草绘环境中,截面中的已知尺寸(在父零件或装配中)。
(2)公差:当尺寸由数字转向参数的时候,会同时出现公差参数。
―tpm#──加减对称格式中的公差,#是尺寸数。
―tp#──加减格式中的正公差,#是尺寸数。
―tm#──加减格式中的负公差,#是尺寸数。
(3)实例数:这是整数参数,比如阵列方向上的实例个数。
注意:如果将实例数定义为一个非整数值,系统将截去其小数部分。例如,2.90将变为2。
(4)用户参数:这是由用户所定义的参数。
例如:Volume=d0*d1*d2 Vendor="TWTI Corp."
注意:
●用户参数名必须以字母开头(如果它们要用于关系的话)。
●用户参数名不能包含非字母数字字符,例如!、@、#、$。
●不能使用d#、kd#、rd#、tm#、tp#或tpm#作为用户参数名,因为它们是由尺寸保留使用的。
●下列参数是由系统保留使用的:
PI(几何常数):3.14159(不能改变该值)。
G(引力常数):9.8m/s2。
C1、C2、C3和C4是默认值,分别等于1.0、2.0、3.0和4.0。
3.关系中的运算符
下列三类运算符可用于关系中:
(1)算术运算符:
+加 -减 /除
*乘 ^指数 ()分组括号
(2)赋值运算符:
=是一个赋值运算符,它使得两边的式子或关系相等。应用时,等式左边只能有一个参数。
(3)比较运算符:只要能返回TRUE或FALSE值,就可使用比较运算符。
系统支持下列比较运算符:
== 等于 <= 小于或等于
> 大于 | 或
>= 大于或等于 & 与
<小于 ~或! 非
~= 不等于
运算符|、&、!和~扩展了比较关系的应用,它们使得能在单一的语句中设置若干条件。例如,当d1在2和3之间且不等于2.5时,下面关系返回TRUE:
d1>2&d1<3&d1~=2.5
4.关系中使用的函数
(1)数学函数:
cos()余弦 asin()反正弦 cosh()双曲线余弦
tan()正切 acos()反余弦 tanh()双曲线正切
sin()正弦 atan()反正切
sqrt()平方根 sinh()双曲线正弦
log()以10为底的对数 abs()绝对值
Ln()自然对数 ceil()不小于其值的最小整数
exp()e的幂 floor()不超过其值的最大整数
注意:
●所有三角函数都使用单位“度”。
●可以给函数ceil和floor加一个可选的自变量,用它指定要保留的小数位数。
这两个函数的语法如下:
ceil(参数名或数值,小数位数)
floor(参数名或数值,小数位数)
其中,小数位数是可选值:
☑可以被表示为一个数或一个用户自定义参数。如果该参数值是一个实数,则被截尾成为一个整数。
☑它的最大值是8。如果超过8,则不会舍入要舍入的数(第一个自变量),并使用其初值。
☑如果不指定它,则功能同前期版本一样。
使用不指定小数部分位数的ceil和floor函数,其举例如下:
ceil(10.2)值为11 floor(10.2)值为10
使用指定小数部分位数的ceil和floor函数,其举例如下:
ceil(10.255,2)等于10.26 floor(10.255,1)等于10.2
ceil(10.255,0)等于11 floor(10.255,2)等于10.25
(2)曲线表计算:曲线表计算使用户能用曲线表特征通过关系来驱动尺寸。尺寸可以是截面、零件或装配尺寸。格式如下:
其中graph_name是曲线表的名称,x是沿曲线表x轴的值,返回y值。
对于混合特征,可以指定轨道参数trajpar作为该函数的第二个自变量。
注意:
曲线表特征通常是用于计算x轴上所定义范围内x值对应的y值。当超出范围时,y值是通过外推的方法来计算的。对于小于初始值的x值,系统通过从初始点延长切线的方法计算外推值;同样,对于大于终点值的x值,系统将通过切线从终点往外延伸的方法计算外推值。
(3)复合曲线轨道函数:在关系中可以使用复合曲线的轨道参数trajpar_of_pnt。该函数返回一个0.0和1.0之间的值,函数格式如下:
其中,trajname是复合曲线名,pointname是基准点名。
5.关系中的条件语句
●IF语句
IF语句可以加到关系中以形成条件语句。例如:
条件是一个值为TRUE(或YES)或FALSE(或NO)的表达式,这些值也可以用于条件语句。例如:
IF ANSWER==YES
IF ANSWER==TRUE
IF ANSWER
●ELSE语句
即使再复杂的条件结构,都可以通过在分支中使用ELSE语句来实现。用这一语句,前一个关系可以修改成如下的样子:
在IF、ELSE和ENDIF语句之间可以有若个特征。此外,IF-ELSE-ENDIF结构可以在特征序列(它们是其他IF-ELSE-ENDIF结构的模型)内嵌套。IF语句的语法如下:
IF<条件>
若干个关系的序列或IF语句
ELSE(可选项)
若干个关系的序列或IF语句
ENDIF
注意:
●ENDIF必须作为一个字来拼写。
●ELSE必须本身占一行。
●条件语句中的相等必须使用两个等号(==),赋值号必须是一个等号(=)。
6.关系中的联立方程组
联立方程组是这样的若干关系,在其中必须联立解出若干变量或尺寸。例如有一个宽为d1、高为d2的长方形,并要指定下列条件:其面积等于200,且其周长要等于60。
可以输入下列方程组:
所有SOLVE和FOR语句之间的行成为方程组的一部分,FOR行列出要求解的变量。所有在联立方程组中出现而在FOR列表中不出现的变量被解释为常数。
联立方程组中的变量必须预先初始化。
由联立方程组定义的关系可以同单变量关系自由混合。选择“显示关系”时,两者都显示,并且它们可以用“编辑关系”进行编辑。
注意:即使方程组有多组解,也只返回一组。但用户可以通过增加额外的约束条件来确定他所需要的那一组方程解。比如,上例中有两组解,用户可以增加约束d1<=d2,程序为:
7.用参数来传递字符串
可以给参数赋予字符串值,字符串值放在双引号之间。例如,在工程图注释内可使用参数名,参数关系可以表示如下:
8.字符串运算符和函数
字符串可以使用下列运算符:
== 比较字符串的相等。
!=,<>,~= 比较字符串的不等。
+ 合并字符串。
下面是与字符串有关的几个函数:
(1)itos(int):将整数转换为字符串。其中,int可以是一个数或表达式,非整数将被舍入。
(2)search(字符串,子串):搜索子串。结果值是子串在串中的位置(如未找到,返回0)。
(3)extract(字符串,位置,长度):提取一个子串。
(4)string_length():返回某参数中字符的个数。例如,串参数material的值是steel,则string_length(material)等于5,因为steel有五个字母。
(5)rel_model_name():返回当前模型名。例如,当前在零件A中工作,则rel_model_name()等于A。要在装配的关系中使用该函数,关系应为:
名称=rel_model_name:2 ()注意:括号内是空的。
(6)rel_model_type():返回当前模型的类型。如果正在“装配”模式下工作,则rel_model_type()等于装配名。
(7)exists():判断某个项目(如参数、尺寸)是否存在。该函数适用于正在计算关系的模型。例如:
if exists("d5:20")检查运行时标识为20的模型的尺寸是否为d5。
if exists("par:fid_25:cid_12")检查元件标识12中特征标识为25的特征是否有参数par。该参数只存在于大型装配的一个零件中。例如,在机床等大型装配中有若干系统(如液压、气动、电气系统),但大多数对象不属于任何系统。在这种情况下,为了进行基于参数的计算评估,只需给系统中所属的模型指派适当的参数。例如,电气系统中的项目需要使用BOM报表中的零件号,而不是模型名,则可以创建一个报表参数bom_name,并写出如下关系:
9.关系错误信息
系统会检查刚刚编辑的文件中关系的有效性。如果发现了关系文件中的错误,则立即返回到编辑模式,并给错误的关系打上标记,然后可以修正有标记的关系。
在关系文件中可能出现三种类型的错误信息:
(1)长行:关系行超过80个字符。编辑改行,或把该行分成两行(其方法是输入反斜杠符号\,以表示关系在下一行继续)。
(2)长符号名:符号名超过31个字符。
(3)错误:发生语法错误。例如,出现没有定义的参数。此时可检查关系中的错误并编辑。
注意:这种错误检查捕捉不到约束冲突。如果联立关系不能成立,则在消息区出现警告;如果遇到不确定的联立关系,则在最后一个关系行下的空行上出现错误信息。