快速精通软件教程含系统化结构>>> (内含193处实战经验、106处小技巧分享,共270集)
请登录您的授权账号!本站目前可免费注册成为会员!
注册审批或者升级会员请联系站长!QQ:2621139966 微信:Creo2077
重要知识点笔记:
- 关系可以让特征跟特征之间连接更紧密,通关关系,可以将一些函数带入到建模当中。
免费系统化曲面教程>>>(思路细节精讲)
联系站长; QQ:2621139966 微信:Creo2077 学习交流群; QQ1群:602849358 QQ2群:916477208
关于视频:
视频编号<102> 视频已为您加入隐藏水印
学习遇到问题欢迎加群一起学习讨论!
与之相关:
参数>>> 切换尺寸>>>
一.关于关系
1.关于关系
关于关系:
关系(也被称为参数关系)是书写在符号尺寸和参数之间的用户定义的等式。这些关系可让您通过定义特征或零件内的关系,或者装配元件中的关系来捕捉设计目的。
可使用关系按以下方式控制建模过程:
•控制模型的修改效果
•定义零件和装配中的尺寸值
•设置设计条件的约束。例如,通过相对于零件的边指定孔的位置。
•描述模型或装配的不同零件之间的条件关系
关系可以是简单值 (例如 d1=4) 或复杂的条件分支语句。
也可在关系中使用单位。有关单位的详细信息,请单击此处。
访问关系
要访问关系,可打开模型并单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
关系类型
有两种类型的关系:
•等式 (Equality) - 使方程左边的参数等于右边的表达式。这类关系用于给尺寸和参数赋值。例如:
◦简单的赋值:d1 = 4.75
◦复杂的赋值:
d5 = d2*(SQRT(d7/3.0+d4))
•比较 (Comparison) - 比较方程左边的表达式和右边的表达式。这种关系通常用于作为一个约束或用于逻辑分支的条件语句中。例如:
◦作为约束:(d1 + d2) > (d3 + 2.5)
◦在条件语句中:IF (d1 + 2.5) >= d7
2.使用关系的规则
使用关系的规则:
请考虑下列规则:
•如果试图将截面之外的关系分配给已经由截面关系驱动的参数,则系统重新生成模型时给出错误信息。如果试图将截面中的关系分配给一个已经由截面之外另一关系驱动的参数,则适用相同规则。移除关系之一并重新生成模型。
•如果装配试图给已经由零件或子装配关系驱动的尺寸变量分配值时,将得到错误消息。移除其中一种关系,然后重新生成模型。
•修改模型的单位可使关系无效,因为它们没有随该模型缩放。
•从上到下计算关系。执行关系后,参数的最终值将被锁定。但是,如果参数值基于条件,则只有在执行所有关系后条件仍为真时,参数才被锁定。
此参数可以锁定,具体取决于下列关系使用情况:
◦参数用于无条件关系时,例如 MYPARAM = 5。
◦参数用于有条件关系时,如果在关系执行结束时至少有一个条件为 true,则会锁定此参数。
PS:锁定的参数值可能与条件中指定的值有所不同。
在下列关系中:
A = 0
IF a==0
b=5
endif
if a ==5
b = 10
endif
a = 5
如果 A==5 在执行结束时为 true,则参数 B 为锁定;但是如果 A==5 为 false,则 B 的值在执行过程中将为 5。
PS:在有些情况下,在不同层级定义的关系会相互矛盾。单击 检查关系的有效性,确保关系实现了设计目的。
3.关于重新生成期间的关系计算顺序
关于重新生成期间的关系计算顺序:
直到模型重新生成时才计算关系。重新生成过程中,按如下顺序计算关系:
1.重新生成开始时,系统按输入模型关系的顺序对其进行求解。
在装配中,首先计算装配关系。然后,系统按放置元件的顺序计算全部子装配关系。这就意味着系统会在所有特征或元件开始重新生成前计算全部子装配关系。
2.系统按创建的顺序开始重新生成特征。如果某个特征具有依附自身的特征关系,则系统会在重新生成该特征之前求解这些关系。
3.如果用户将某些关系指定为“后重新生成”,则系统会在重新生成完成后求解这些关系。
4.关于联立方程组
关于联立方程组:
联立方程组是这样的若干关系,在其中必须联立解出若干变量或尺寸。
创建联立方程组时,请考虑以下规则:
•必须在方程组的开头先声明用于联立方程组中的变量。例如,area = 100,如下例所示。
•求解联立方程时,即使系统方程可能有多组解,但系统也只会返回一组。
•可把联立方程组同单变量关系互相混合。
示例: 联立方程组示例
例如,有一个宽度为 d1、高度为 d2 的盒子,并要指定下列条件:
•其面积等于 100
•周长等于 50
可以键入下列方程组:
SOLVE
d1*d2 = 100
2*(d1+d2) = 50
FOR d1 d2 ...or... FOR d1,d2
SOLVE 和 FOR 语句之间的所有行都成为联立方程组的一部分。FOR 行列出要求解的变量。所有在联立方程组中出现而在 FOR 列表中不出现的变量被解释为常数。
另外,可通过输入以下联立方程组设置相同的条件:
area = 100
perimeter = 50
SOLVE
d1*d2 = area
2*(d1 + d2) = perimeter
FOR d1 d2
创建联立方程组的提示如下:
•省略前述关系中的 area = 100 会出现错误。
•可在联立方程组后面添加额外的代码,以便在解多于一组时指定一组解。例如,在上一个例子中,两组可能的解为 d1=5,d2=20 和 d1=20,d2=5。可通过添加以下条件代码来增加约束 d1 <= d2:
IF d1 > d2
temp = d1
d1 = d2
d2 = temp
ENDIF
5.关于关系错误
关于关系错误:
添加或编辑关系后,单击“确定”(OK) 退出“关系”(Relations) 对话框,Creo Parametric 会检查关系的有效性。如果发现错误,Creo Parametric 会标志错误的关系以便能改正它们。
Creo Parametric 检测到的错误类型包括:
•长的行 - 引号内的字符将被视为字符类型。关系行最多可包含 80 个字符。如果超出此限制,则会收到有关字符的行长度超出限制的错误通知。
•长的符号 - 引号外的字符将被视为符号。符号名称最多可包含 31 个字符。如果超出此限制,则会收到有关符号的行长度超出限制的错误通知。
•关系语句长度 - 关系语句的单行长度限制为 162 个字符。如果关系行包含超过 162 个字符和一个空格,则会显示错误消息,提醒用户关系行太长。
•解析错误 - 出现解析错误,例如,参数未定义。
PS:这种错误检查捕捉不到约束冲突。如果联立关系不能成立,则在消息区出现警告。如果系统检测到不确定的联立关系,则在最后一个关系行下的空行上出现出错消息。
避免循环关系
可能会错误地创建类似下面的循环关系:
d0 = d1
d1 = d0
关系进行排序时,排序实用程序会检测到循环关系并发出警告。但是,前面的行仍将是联立方程组的有效部分。
下面的循环关系示例说明在输入关系期间错误重新定义符号的过程:
d0 = d1
...
d0 = 2*d1
这些关系是依赖于顺序的,故不能进行排序。系统会发出警告。
6.关于关系中使用的运算符
关于关系中使用的运算符:
可在关系 (包括方程和条件语句) 中使用下列运算符。
算术运算符
+
|
加
|
–
|
减
|
/
|
除
|
*
|
乘
|
^
|
指数
|
()
|
分组圆括号,例如:d0 = (d1–d2)*d3
|
赋值运算符:
可在关系 (包括方程和条件语句) 中使用下列运算符。
算术运算符
+
|
加
|
–
|
减
|
/
|
除
|
*
|
乘
|
^
|
指数
|
()
|
分组圆括号,例如:d0 = (d1–d2)*d3
|
赋值运算符
=
|
等于
|
等于号 (=) 是一个赋值运算符,它使得方程或关系两边相等。使用等号时,方程在左侧只能有一个参数。
比较运算符
在能够返回 TRUE/FALSE 值时,将使用比较运算符。例如,只要 d1 大于或等于 3.5,下面的关系就返回 TRUE。只要 d1 小于 3.5,就返回 FALSE:
d1 >= 3.5
系统支持下列比较运算符:
==
|
等于
|
>
|
大于
|
> =
|
大于或等于
|
!=, <>,~=
|
不等于
|
<
|
小于
|
<=
|
小于或等于
|
|
|
或
|
&
|
与
|
~, !
|
非
|
PS:“等于”赋值运算符不同于“等于”比较运算符。
运算符 |、&、! 和 ~ 扩展了比较关系的应用,它们使得能在一个语句中设置若干条件。例如,只要 d1 介于 2 和 3 之间并且不等于 2.5,下面的关系就返回 TRUE:
d1 > 2 & d1 < 3 & d1 ~= 2.5
7.关系中的条件语句
关系中的条件语句:
PS:不对包含条件语句的关系进行排序。条件是指表达式,这种表达式可以为 TRUE (或 YES) 或 FALSE (或 NO)。这些值可以在条件语句中互换使用。例如,下列语句都可以用同样的方式计算:
IF ANSWER == YES
IF ANSWER == TRUE
IF ANSWER
IF 语句
可将 IF 语句添加到关系中来创建条件语句。例如,
IF d1 > d2
length = 14.5
ENDIF
IF d1 <= d2
length = 7.0
ENDIF
ELSE 语句
通过在分支中添加 ELSE 语句,可创建更多复杂的条件结构。使用这些语句,上面的关系可修改如下:
IF d1 > d2
length = 14.5
ELSE
length = 7.0
ENDIF
在 IF, ELSE, 和 ENDIF 语句之间可以有若个特征。此外,还可将 IF|ELSE|ENDIF 结构嵌套在特征序列内。
IF 子句的语法如下:
IF <condition>
Sequence of 0 or more relations or IF clauses
ELSE <optional>
Sequence of 0 or more relations or IF clauses <optional>
ENDIF
请考虑下列规则:
•ENDIF 作为一个字来拼写。
•ELSE 需要添加在单独一行。
•条件语句中的相等关系以两个等号 (==) 的形式输入。赋值号以一个等号 (=) 的形式输入。
8.关于关系中使用的函数
关于关系中使用的函数:
可在关系中使用数学、曲线表和曲线计算函数。
数学函数
可在关系 (包括方程和条件语句) 中使用下列运算符。
关系中也可以包括下列数学函数:
sin(x),cos(x),tan(x)
|
标准三角函数,其中 x 是以度为单位的角度值
|
asin(x)
|
反正弦函数,其中 x 是介于 -1.0 和 1.0 间的值。结果是以度为单位的角度值。
|
acos(x)
|
反余弦函数,其中 x 是介于 -1.0 和 1.0 间的值。结果是以度为单位的角度值。
|
atan(x)
|
反正切函数,其中 x 是数值。结果是以度为单位的角度值。
|
atan2(y,x)
|
y/x 的反正切函数,其中 x 和 y 是任意数值。结果是以度为单位的角度值。
|
sinh(x)
|
双曲线正弦函数,其中 x 是 -85.0 和 85.0 间的值
|
cosh(x)
|
双曲线余弦函数,其中 x 是 -85.0 和 85.0 间的值
|
tanh(x)
|
双曲线正切函数,其中 x 是 -85.0 和 85.0 间的值
|
sign(x,y)
|
将 y 的符号传递给 x。如果 y<0,结果是 –abs(x);如果 y>=0,结果是 abs(x)。
|
mod(x,y)
|
余项函数,即 x–int(x/y)*y,其中 int() 表示“整数部分”。结果的符号始终与 x 的符号相同。
|
if(c,x,y)
|
“if”测试或切换功能,其中 c 是条件,x 和 y 是返回值。如果条件结果是非零值,则函数的结果是 x;如果条件结果不是非零值,函数的结果是 y。
|
bound(x,lo,hi)
|
将 x 限制为“lo”和“hi”间的值。如果 x < lo;函数的结果是 lo;如果 x > hi,结果是 hi;对于 x 的全部其他值,函数的结果是 x。“lo”值必须小于“hi”值。
|
dead(x,lo,hi)
|
定义 x 的值范围,其中此函数结果是 0。使用“lo”和“hi”定义值范围。如果 x < lo,函数的结果是 x–lo;如果 x > hi,函数的结果是 x–hi,如果 x 介于“lo”和“hi”之间,函数的结果是 0。
|
near(x,y,delta)
|
测试 x 和 y 两个值是否接近,而增量将定义 x 和 y 的允许差异。如果 x 在 y 的增量范围内,函数的结果是 1.0 (true)。如果 abs(x–y) <= 增量,函数的结果是 1.0;如果 abs(x-y) > 增量,函数的结果是 0.0。
|
min(x,y)
|
无论最小值是几,都将返回 x 或 y。如果 x < y,函数的结果是 x;如果 x >=y,函数的结果是 y。
|
max(x,y)
|
无论最大值是几,都将返回 x 或 y。如果 x > y,函数的结果是 x;如果 x<=y,函数的结果是 y。
|
log(x)
|
常用对数 (以 10 为底的对数)
|
ln(x)
|
自然对数 (以 e 为底的对数)
|
exp(x)
|
e 的幂
|
pow(num1, num2)
|
获得 num1 到 num2 幂次方的值。
|
sqrt(x)
|
x 的平方根
|
abs(x)
|
返回 x 的绝对值。如果 x≥0,函数的结果是 x;如果 x<0,函数的结果是 –x。
|
ceil(x)
|
向正无穷大方向舍入 (x – 0.000 000 001)。
|
floor(x)
|
向负无穷大方向舍入 (x + 0.000 000 001)。
|
dbl_in_tol (arg1, arg2, arg3)
|
检查实数 arg 1 与另一个实数 arg 2 在指定公差 arg 3 范围内是否相符。如果 arg 1 的值介于 (arg 2 – arg 3) 与 (arg 2 + arg 3) 之间,则该函数会返回 TRUE。
如果满足以下条件,则该函数会返回 TRUE:arg1 <= arg2+arg3 && arg1 >= arg2-arg3。
例如,要检查给定角度是否在 45 度的 3 度公差范围内。如果给定角度 (arg 1) 为 47,则其在 arg 2 – arg 3 (45 – 3) 与 arg 2 + arg 3 (45 + 3) 范围内。
|
所有三角函数都使用度作单位。
缆模式函数:
可以使用缆模式函数确定缆、线或束的长度与最大直径。
•计算缆长度
◦使用以下语法计算缆或束的当前长度:
cable_len ("cable_name",location_id1,location_id2)
▪cable_name 是当前线束中您要测量的缆或束的名称。
▪location_id 是 cable_name 布线所经过位置的内部特征 ID,其中 location_id1 和 location_id2 表示要计算其间长度的两个位置。
◦使用以下语法计算整个缆的长度:
cable_len ("cable_name",-1,-1)
•计算缆、线或束的最大直径
◦使用以下语法计算特定位置处缆、线或束的最大直径:
cable_thick ("cable_name",location_id)
▪cable_name 是当前线束中您要测量的缆、线或束的名称。
▪location_id 是 cable_name 布线所经过位置的内部特征 ID。
•使用以下语法计算缆、线或束的最大直径:
cable_thick ("cable_name",-1)
Cabling Logical Data File Name Function
使用 cbl_logical_file 函数可创建与在装配中导入的逻辑数据文件名之间的关系。请注意,只有在具有逻辑数据的装配级上定义时,此关系才会返回值。关系会将文件的名称作为值返回。可将此关系分配至参数。指定后,此参数可在 Windchill 中使用,以标识缆装配中使用的逻辑文件名,而无需检索该装配。此参数可帮助您在更新参考的逻辑数据文件时对其进行查找。
实例研究功能:
eang(e_ID1, e_ID2)
|
实例研究中两个图元 e_ID1 和 e_ID2 间弧度的角度
|
elen(e_ID1)
|
实例研究中 e_ID1 图元的长度
|
edistk(e_ID1, e_ID2)
|
e_ID1 和 e_ID2 两个图元间的距离
|
ecoordx(e_ID1)
|
实例研究中 e_ID1 图元的 x 坐标
|
ecoordy(e_ID1)
|
实例研究中 e_ID1 图元的 y 坐标
|
e_ID1 和 e_ID2 是标识“实例研究”图元的整数。
曲线表计算函数:
利用曲线表计算函数,可使用曲线表特征通过关系驱动尺寸。这些尺寸可为截面、零件或装配尺寸。格式如下:
evalgraph("graph_name", x)
其中:
•graph_name - 曲线表的名称。
•x - 是沿曲线表 x 轴的值,为其返回 y 值。
对于扫描特征,可指定轨迹参数 trajpar 作为该函数的第二个自变量。
PS:曲线图特征通常是用于计算 x 轴上所定义范围内 x 值对应的 y 值。当超出范围时,y 值是通过外推的方法来计算的。对于小于初始值的 x 值,系统通过将切线从起始点往回延伸计算外推值。同样,对于大于终值的 x 值,系统通过将切线从终点往外延伸计算外推值。
复合曲线轨道函数:
可在关系中使用复合曲线的轨迹参数 trajpar_of_pnt。
下列函数返回一个 0.0 和 1.0 之间的值:
trajpar_of_pnt("trajname", "pointname")
其中:
•trajname - 复合曲线的名称。
•pointname - 基准点的名称。
轨线是一个沿复合曲线的参数,在它上面垂直于曲线切线的平面通过基准点。基准点不必位于曲线上 - 在曲线上离基准点最近的点计算参数。
如果复合曲线被用作多轨迹扫描的骨架,则 trajpar_of_pnt 要么与该平面上的参数 trajpar 一致,要么与 1.0 – trajpar 一致 (取决于为扫描特征选择的起点)。
9.字符串运算符和函数
字符串运算符和函数:
字符串可以使用下列运算符和函数:
==
|
比较字符串相等。
|
!=, <>, ~=
|
比较字符串不等。
|
+
|
合并字符串。
|
itos(int)
|
将整数转换为字符串。其中,int 可以是一个数字或表达式。对非整数进行四舍五入。
|
search(string, substring)
|
搜索子串。结果值是子串在串中的位置 (如未找到,返回 0)。可用单引号或双引号指定子字符串。
|
extract(string, position, length)
|
提取一个子串。
|
string_starts (字符串 1, 字符串 2)
|
如果字符串 1 的值以字符串 2 的值开头,则为 TRUE。
|
string_ends (字符串 1, 字符串 2)
|
如果字符串 1 的值以字符串 2 的值结尾,则为 TRUE。
|
string_match (字符串 1, 字符串 2)
|
如果字符串 1 的值与字符串 2 的值相符,则为 TRUE。
|
例如:
如果 param = abcdef,则:
•flag = param == abcdef - 返回 TRUE
•flag = abcdef != ghi - 返回 TRUE
•new = param + ghi - new 是 abcdefghi
•new = itos(10 + 7) - new 是 17
•new = param + itos(1.5) - new 是 abcdef2
•where = search(param, bcd) - where 是 2
•where = search(param, dcd) - where 是 0
•new = extract(param,2,3) - new 是 bcd
PS:如果用户使用参数值为零 (0) 的 itos 函数,则返回值将为空字符串。
以下示例对 itos 函数进行了说明:
integer_param = 4
string_param = itos(integer_param)
/*string_param 将返回 4 */
integer_param = -7
string_param = itos(int_param)
/*string_param 将返回 -7 */
对于零 (0) 值整数,itos 函数将返回一个空 ("") 值,如下所示:
integer_param = 0
string_param = itos(int_param)
/*string_param 将返回一个空字符串 ("") */
要返回一个零字符串值 ("0"),可使用下面的 IF 语句:
integer_param = 0
string_param = itos(integer_param)
IF string_param == ""
string_param = "0"
ENDIF
10.指定小数位数
指定小数位数:
可以给函数 ceil 和 floor 添加一个可选自变量,用以指定要圆整的小数位数。带圆整参数的函数的语法如下:
ceil (parameter_name 或 number, number_of_dec_places)
floor (parameter_name 或 number, number_of_dec_places)
其中,number_of_dec_places 为可选值。
考虑有关 number_of_dec_places 的如下信息:
•它可以用一个数字或用户定义参数来表示。如果参数值是一个实数,则它将被截尾成为一个整数。
•其最大值为 8。如果值超过 8,则要圆整的数不会被圆整 (第一个自变量),而是使用其初值。
下例表明如何在不指定小数位数的情况下使用 ceil 和 floor:
ceil (10.2) 估算为 11
floor (-10.2) 估算为 -11
下例表明指定小数位数时,ceil 和 floor 的用法:
ceil (10.255, 2) 估算为 10.26
ceil (10.255, 0) 估算为 11 [这与 ceil (10.255) 相同]
floor (10.255, 1) 估算为 10.2
floor (-10.255, 2) 估算为 -10.26
11.将字符串作为关系的自变量来传递
将字符串作为关系的自变量来传递:
下列函数允许用户使用串作为自变量:
•string_length() - 返回参数中字符的个数。例如,如果字符串参数 material 的值定义为 steel,则 string_length(material) 等于 5,因为单词 "steel" 有 5 个字母。
•rel_model_name() - 返回当前模型名称。例如,如果当前正在处理零件 A,则 rel_model_name() 等于 A。要在装配的关系中使用它,则照如下所示书写关系:
name = rel_model_name:2()
PS;圆括号 ( ) 是空的。
•rel_model_type() - 返回当前模型类型。如果正在“装配”模式中工作,则 rel_model_type() 等于装配。
•exists() - 判断某个项 (如参数或尺寸) 是否存在。该函数适用于正在计算关系的模型,或任何模型\元件或子模型结构。
例如:
◦if exists("d5:20") - 检查运行时间 ID 为 20 的模型是否具有 d5 尺寸。
◦if exists ("par:fid_25:cid_12") - 检查元件 ID 12 中的特征 ID 25 是否具有参数 par。
这允许进行基于参数的评估,该参数只存在于大型装配的一个零件中。例如,假设在大型装配中有若干系统 (诸如液压的、气动的、电子的系统),但大多数对象不属于任何系统。
在这种情况下,要基于参数进行评估,必须将适当的参数分配给属于系统的那些模型。例如,如果电子系统中的项需要使用 BOM 报表中的零件号,而不是模型名,则可以创建一个报告参数 bom_name,并写出以下关系:
ifexists("asm_mbr_cabling")
bom_name = part_no
else
bom_name = asm_mbr_name
endif
12.示例:曲线表计算函数
示例:曲线表计算函数:
利用曲线表计算函数,可使用曲线表特征通过关系来驱动尺寸。这些尺寸可为截面、零件或装配尺寸。格式如下:
evalgraph("graph_name", x)
其中
•graph_name 是图形的名称。
•x 是沿曲线图 x 轴的值,为其返回 y 值。
下图显示一个曲线表示例。

图形名称:stretch
•d1=0.5
•d2=1.5
•d1=evalgraph ("stretch", 1)
•d2=evalgraph ("stretch", d1*4)
PS:对于扫描特征,可指定轨迹参数 trajpar 作为该函数的第二个自变量。
13.质量属性函数
质量属性函数:
质量属性函数
|
说明
|
||
---|---|---|---|
massprop_param
|
获取质量属性参数的值。
使用以下关系获取质量属性参数的值:
“Paramname” = massprop_param(<“mass property name”>)
其中,mass property name 可以为以下其中一项:AREA、VOLUME、DENSITY、XCG、YCG、ZCG、IXX、IYY、IZZ、IXY、IXZ、IYZ、INRT1、INRT2 和 INRT3。
例如:
My_volume = massprop_param(“VOLUME”) – 获取给定模型的体积值。
|
||
material_param
|
material_param (“PARAM_NAME”、“MATERIAL_NAME”) – 从当前模型的“MATERIAL_NAME”返回“PARAM_NAME”的值。
material_param (“PARAM_NAME”) – 从当前模型中当前分配的材料返回“PARAM_NAME”的值。
|
||
mp_mass
|
返回模型零件或装配的质量。
mp_mass (<“string”>)
其中,string 是计算结果为字符串值的表达式。
例如:
•mp_mass (“”) – 返回给定模型的质量。
•mp_mass (“25:”) – 返回属于装配的元件模型 (ID=25) 的质量。
•mp_mass(“25:32:”) – 返回属于顶层装配的子装配 (具有元件 ID=25) 的元件 (ID=32) 质量。
|
||
mp_assigned_mass
|
获取模型的质量。
mp_assigned_mass (<“string”>)
|
||
mp_surf_area
|
返回模型零件或装配的面积。
mp_surf_area (<“string”>)
|
||
mp_volume
|
返回模型零件或装配的体积。
mp_volume (<“string”>)
|
||
mp_cg_x
|
获取模型重心的 X 坐标。
mp_cg_x (<“string1”>, <“coordinate system name”>, <“string2”>)
所有 3 个自变量均为字符串。
例如,mp_cg_x (“”, “my_csys”, “”) – 在名为 my_csys 的坐标系中获取给定模型的 X 坐标。
|
||
mp_cg_y
|
获取模型重心的 Y 坐标。
mp_cg_y (<“string1”>, <“coordinate system name”>, <“string2”>)
|
||
mp_cg_z
|
获取模型重心的 Z 坐标。
mp_cg_z (<“string1”>, <“coordinate system name”>, <“string2”>)
|
二.关系的应用
1.关于添加关系
关于添加关系:
通常,可通过单击“工具”(Tools) > “关系”(Relations) 并使用“关系”(Relations) 对话框来添加关系。
另外,也可通过以下方法添加关系:
•编辑关系文件并添加更多的关系。
•创建特征时,可在操控板的尺寸框中键入表达式。编辑特征时,可键入表达式作为尺寸的值。
•在图形窗口编辑尺寸时,可双击尺寸,再键入表达式作为尺寸值。
为不同类型的对象添加关系
可为不同类型的对象添加关系。在“关系”(Relations) 对话框中“查找范围”(Look In) 下列出的所支持的对象类型有:
•零件 (Part) - 在“零件”和“装配”模式下访问零件关系。
•装配 (Assembly) - 访问装配中的关系。
•特征 (Feature) - 在“零件”或“装配”模式下访问专用于某个特征的关系。
•继承 (Inherited) - 在“零件”和“装配”模式下访问各种关系。
•截面 (Section) - 如果特征具有截面,则在“零件”或“装配”模式下访问“草绘器”中的截面关系。
•阵列 (Pattern) - 在“零件”或“装配”模式下访问专用于某个阵列的关系。
•骨架 (Skeleton) - 在“装配”模式下访问骨架模型的关系。
•元件 (Component) - 访问装配元件的关系。
在零件中创建关系时应遵循的规则
下列规则适用于创建或修改零件中的关系:
•受驱动的变量可以是:
◦零件中的尺寸 (d#)
◦零件中的用户参数 (parameter_name)
◦特征中的用户参数 (parameter_name:fid_N 或 parameter_name:fid_feature_name)
•驱动变量可与被驱动变量相同。此外还可以使用:
◦来自零件的参考尺寸 (rd#)
◦以下格式的计算特征度量:
▪measurement_name:fid_N
▪measurement_name:fid_feature_name
在特征中创建关系时应遵循的规则
当在特征中创建关系时,它们同特征一起保存、一起驻留,而不管使用该特征的模型如何。
特征关系在零件关系之后进行计算,并在其所属的特征重新生成后进行求解。因此,在关系执行几何计算(诸如两点之间的距离)时,如果与用作零件关系相对,它被用作特征关系,则可能给出不同的结果。
PS:可通过特征级名称修改已存在的模型参数。
2.给模型增加关系
给模型增加关系:
1.模型打开时,单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.“查找”(Look in) 框会显示其中应用关系的对象类型(例如,零件或特征)。如果处于“零件”模式中,默认情况下,会在零件级添加关系。可通过更改“查找范围”(Look in) 框中的选择内容来更改对象类型,例如,可更改特征关系或截面关系。
PS:如果将配置选项 pattern_relations_copy 设置为 true,那么为阵列几何而定义的关系将会被复制到阵列的其它实例中。
3.如果选择“特征”(Feature)、“继承”(Inherited)、“截面”(Section) 或“阵列”(Pattern) 作为对象类型,则必须选择要为其列出关系的对象。选定对象会以符号形式显示尺寸。
4.在文本框中键入关系并按 ENTER 键。可在键入每个关系后按 ENTER 键来键入多个关系。使用以下工具添加关系:
◦要插入尺寸、几何公差或表面粗糙度,可在图形窗口内单击相应选项。
PS:如果未显示尺寸,双击特征以显示其尺寸。
◦要插入函数,可单击
。
◦要插入运算符,可单击对话框左侧工具栏上列出的运算符。
◦要从现有参数列表中插入参数,可单击
。
PS:参数、变量或符号的名称不能超出 31 个字符。
5.要指定关系是应按常规顺序计算,还是在重新生成后计算,可从列表中选择“初始”(Initial) 或“后重新生成”(Post Regeneration)。
6.可单击
校验已输入关系的有效性。
7.若接受这些关系,请单击“确定”(OK)。要重新开始,可单击“重置”(Reset)。
3.在关系中指定特征和模型
在关系中指定特征和模型:
可以写出使用特征用户参数和制造参数的关系。
在特征关系中,可通过参数名称标识附加到该特征的参数。例如:
XYZ = parameter_name
其中 parameter_name 是用户参数。
然而,如果在该特征的父模型(零件或装配)或另一个特征中写入关系,则必须用下列格式之一参考该特征:
XYZ = parameter_name:fid_N
or
XYZ = parameter_name:fid_feature_name
其中:
•parameter_name - 特征的用户参数。
•N - 内部特征 ID (对应于使用“工具”(Tools) > “特征”(Feature) 时的显示)。
•feature_name - 可选的用户定义的特征名称。
在装配模式下,使用下列形式访问另一模型特征中的用户参数。
XYZ = parameter_name:fid_N:session_id
or
XYZ = parameter_name:fid_feature_name:session_id
其中:
session_id— - 模型的会话标识。
例如,假设 dia 是名为 CUT_A, CUT_A 的零件特征中的数值型用户参数,CUT_A 的内部特征 ID 是 20,并且 d5 是另一特征中的尺寸。
可在零件中建立 d5 和 dia 之间的如下关系:
d5 = dia:fid_20
or
d5 = dia:fid_CUT_A
在装配中,如果驱动参数属于另一个“会话标识”为 12 的模型,可按如下方式编写关系:
d5 = dia:fid_20:12
or
d5 = dia:fid_CUT_A:12
4.示例:特征关系示例
示例:特征关系示例:
下表显示一个列出特征关系的“关系和参数信息”窗口的示例。
关系
|
参数
|
新值
|
---|---|---|
/*** BRICK 特征标识 = 282 的关系:
|
||
param_feat2_x = 6.666
|
param_feat2_x
|
6.666000e+00
|
param_feat2_yy = param_feat1_1:FID_1
|
param_feat2_yy
|
4.567000e+00
|
param_feat2_xy:FID_1 = param_feat2_x
|
param_feat2_xy:FID_1
|
6.666000e+00
|
/*
|
||
DEPTH = 2*param_feat2_x
|
DEPTH
|
1.333200e+01
|
/*** 特征标识 282 的关系,部分 1:
|
||
param_sect_1 = sd0
|
param_sect_1
|
5.500000e+00
|
sd1 = 2*sd0
|
sd1 (D32)
|
1.100000e+01
|
/*
|
||
sd3 = 0.03*param_part_angle1
|
sd3 (D34)
|
2.700000e+00
|
符号常数
|
x-参考
|
当前值
|
PARAM_FEAT_X
|
局部 (Local)
|
6.666000e+00
|
PARAM_FEAT2_YY
|
局部 (Local)
|
4.567000e+00
|
PARAM_FEAT2_X
|
局部 (Local)
|
6.666000e+00
|
5.示例:零件关系示例
示例:零件关系示例:
下表显示“关系和参数信息”窗口的示例并列出零件关系。
关系
|
参数
|
新值
|
---|---|---|
/*** BRICK 关系:
|
||
param_part_1 = 1.234
|
param_part_1
|
1.234000e+00
|
/*
|
||
/* 零件参数 part_param_part_angle1 起中间桥梁作用,
/* 因此计算函数参数
/* “angle:fid_angle1” 可通过截面进行访问。
|
||
param_part_angle1 = angle:FID_ANGLE1
|
param_part_angle1
|
9.000000e+01
|
/*
|
||
param_part_1 = 1.234
|
param_part_1
|
1.234000e+00
|
/*** 特征标识 282 的关系,部分 1:
|
||
param_sect_1 = sd0
|
param_sect_1
|
5.500000e+00
|
sd1 = 2*sd0
|
sd1 (D32)
|
1.100000e+01
|
/*
|
||
sd3 = 0.03*param_part_angle1
|
sd3 (D34)
|
2.700000e+00
|
符号常数
|
x-参考
|
当前值
|
PARAM_PART_1
|
局部 (Local)
|
1.234000e+00
|
PARAM_PART_ANGLE1
|
局部 (Local)
|
9.000000e+01
|
PARAM_SECT_1
|
局部 (Local)
|
5.500000e+00
|
6.使用关系中的备注
使用关系中的备注:
在关系中使用备注是一个好习惯。备注可帮助您记住添加关系的意图。使用模型的其他人也会从中受益。
每一个备注行必须以一个斜杠和一个星号开始。例如:
/* Width is equal to 2*height
d1 = 2*d2
备注必须在应用关系之前编写。关系进行排序时,备注会随关系移动并保持在备注的上方。
7.确定表达式的值
确定表达式的值:
可获得一个表达式(可以是单个参数或一个方程)的值,而不必将其作为关系添加到模型中。
1.单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.单击
。“计算表达式”(Evaluate Expression) 对话框打开。
3.在“表达式”(Expression) 框中输入参数符号 (例如,d20、$d20、d10:2、depth)、用户参数 (例如,颜色),或表达式 (例如,d5 + d6, d2!= d4)。
4.单击“评估”(Evaluate)。计算结果出现在“结果”(Result) 框。诸如 d2!= d4 或 d3 == d2 之类的比较方程会返回 0 (假) 或 1 (真)。
5.单击“关闭”(Close)。
8.编辑关系
编辑关系:
可使用“关系”(Relations) 对话框中的编辑工具来编辑现有的关系。
1.单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开并列出现有零件关系。
2.要显示不同对象类型的关系,可更改“查找范围”(Look in) 框中的选择内容。
3.单击“编辑”(Edit) 并选取编辑命令。
4.完成编辑后,单击“确定”(OK)。
5.重新生成模型以反映关系中所作的更改。
9.删除废弃的关系
删除废弃的关系:
删除或更改关系中所使用的尺寸或参数时,该关系就会变成废弃的关系。该被驱动的符号保持最后一次的尺寸值。
PS:Creo Parametric 不会自动将它们删除。必须手动删除废弃的关系。
要删除废弃的关系,请在“关系”(Relations) 对话框中单击“编辑”(Edit) > “删除”(Delete)。
10.要查看关系
要查看关系:
可使用“关系”(Relations) 对话框中的“显示”(Show) 命令查看现有关系。
PS:也可使用“工具”(Tools) > “特征”(Feature) 查看特征关系。
1.单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.默认情况下,系统会显示零件关系。可在“查找范围”(Look in) 框中更改对象类型,以便显示特定对象类型的关系,例如,特征关系或截面关系。
3.如果选择了“查找范围”(Look in) 框中的“特征”(Feature)、“继承”(Inherited)、“截面”(Section) 或“阵列”(Pattern),就必须选择要为其列出关系的对象。
4.单击“显示”(Show) > “信息”(Info)。在 Creo Parametric 浏览器中将打开“关系和参数”(Relations and Parameters) 信息窗口。
11.关系和参数信息窗口
关系和参数信息窗口:
“关系和参数”(Relations and Parameters) 信息窗口内容排列如下:
•在零件或装配中 - 显示在模型及其特征截面中创建的关系和用户参数。不列出在其特征中创建的关系或参数。
•在特征中 - 显示在特征及其截面中创建的关系 (如果适用的话),以及在特征中创建的用户参数。
•在阵列中 - 显示在阵列中为选定方向创建的阵列参数、关系和用户参数,也显示父模型中的用户参数和截面关系。
•在截面中 - 只显示在截面中创建的关系。
用户参数将显示在标题“符号常数”(Symbolic constant) 下,并带有下列信息:
•参数名称
•交叉引用状况 -“局部”(只与零件或装配关联)或“全局”(与项目关联)
•交叉引用的个数(如果参数是全局的)
•参数的当前值
12.关于排序关系
关于排序关系:
排序功能按优先次序 (根据系统计算关系的方式) 对关系进行排序。如果某个关系依赖于另一个关系的值,则系统会对其进行相应重新排序。对关系进行排序可帮助您检测不希望的循环关系。
要排序关系,可单击“关系”(Relations) 对话框上的 ,或单击“实用工具”(Utilities) > “重新排序关系”(Reorder Relations)。
PS:不对包含条件语句的关系进行排序。
排序带有备注行的关系
有备注行的关系也可被排序。备注行附着在关系的下面,在排序期间随关系一起移动。如果关系前有多个备注行,则它们将被连接到该关系。
13.示例:排序关系
示例:排序关系:
示例 1:进行常规关系排序
例如,输入以下关系:
d0 = d1 + 3*d2
d2 = d3 + d4
对以上关系进行排序时,系统会根据其计算顺序进行重排。排序后的关系显示如下。
d2 = d3 + d4
d0 = d1 + 3*d2
示例 2:联立方程组排序
联立方程组被当作单个关系进行处理,并作为一个单元随处移动。该单元被认为是依赖于其各个行所依赖的所有量的统一体。联立方程可包含未进行求解的其它关系,如下例所示:
SOLVE
d1 + d2 = 500
d55 = d56 + 50
d56 = d54
d1—d2 = 0
FOR d1 d2
这些附加的行在联立方程组内排序,得出如下结果:
SOLVE
d1 + d2 = 500
d1-d2 = 0
d56 = d54
d55 = d56 + 50
FOR d1 d2
PS:决不能给联立方程组插入行或从中移除行。
14.尺寸和关系
将尺寸格式切换为符号格式:
单击“工具”(Tools) > “关系”(Relations) 时,Creo Parametric 会将尺寸显示切换为符号格式 (例如,d0)。
可用其中下列一种方法在符号和数字尺寸格式之间进行切换:
•在“关系”(Relations) 对话框中,单击“实用工具”(Utilities) > “切换尺寸”(Switch Dimensions)。
•单击菜单条上的“信息”(Info) > “切换尺寸”(Switch Dimensions)。
PS:如果模型上尚未显示尺寸,可选择要显示尺寸的特征或零件。
PS:只对加-减或对称格式的尺寸显示符号公差。其它格式类型只显示尺寸符号。
关系中的负尺寸:
如果使用负尺寸,并且在关系中要使用真的有正负之分的值,则可在符号前加一个美元符号 (例如 $d20 或 $depth)。
无论配置选项 show_dim_sign 的设置如何,必须完成此操作。
PS:单击“关系”(Relations) 对话框中的“实用工具”(Utilities) > “突出显示”(Highlight) 以显示特定的尺寸。
修改由关系驱动的尺寸:
如果尺寸由关系驱动,则不能直接修改它。如果您尝试进行此操作,Creo Parametric 将显示错误信息。
例如,假设输入关系 d0=d1+d2,则不可直接修改 d0。要更改 d0 的值,必须修改 d1 或 d2,或者编辑关系。
如果修改尺寸符号,这种更改会自动地反映在关系文件中。
关于在关系中使用参考尺寸:
不应在定义驱动尺寸的关系中使用参考尺寸。这也许将创建驱动尺寸的圆形相关性和不可靠值。这适用于全部级别的关系、草绘器、零件和装配,以及在草绘或模型中创建的参考尺寸。
如果参考尺寸驱动参数,而这些参数定义驱动尺寸,则参考尺寸可能会间接定义驱动尺寸。这也将创建圆形相关性。
三.关系的高级应用
1.在关系中使用参数符号
在关系中使用参数符号:
可在关系中使用以下参数类型:
•尺寸符号 - 支持下列尺寸符号类型:
◦d# -“零件”或“装配”模式下的尺寸。
◦d#:# -“装配”模式下的尺寸。装配或元件的会话标识添加为后缀。
◦rd# - 零件或顶层装配中的参考尺寸。
◦rd#:# -“装配”模式中的参考尺寸。装配或元件的会话 ID 添加为后缀。
◦rsd# - 草绘器 (截面) 中的参考尺寸。
◦kd# - 草绘器 (截面) 中的已知尺寸 (在父零件或装配中)。
◦Ad# - 在“零件”、“装配”或“绘图”模式下的从动尺寸。
•公差 - 与公差格式关联的参数。当尺寸由数字的转向符号的时候出项这些符号。
◦tpm# - 加减对称格式的公差;# 是尺寸数。
◦tp# - 加减格式的正公差;# 是尺寸数。
◦tm# - 加减格式的负公差;# 是尺寸数。
•实例数 - 阵列方向中的实例数的整数参数。
◦p# - 其中 # 是实例的个数。
PS:如果将实例数更改为一个非整数值,Creo Parametric 将截去其小数部分。例如,2.90 将变为 2。
•用户定义参数 - 通过添加参数或关系而定义的参数。例如:
Volume = d0*d1*d2
Vendor = "Stockton Corp."
•系统参数 - 可在“关系”(Relations) > Parameters) 框中更改系统参数的值。这些更改的值应用于当前工作区的所有模型。
下列参数是由系统保留使用的:
◦PI (几何常数) - 值 = 3.14159
PS:不能更改此值。
◦G (引力常数) - 默认值 = 9.8 米/秒2 (C1、C2、C3 和 C4 是默认值,分别等于 1.0、2.0、3.0 和 4.0)。
•应用程序参数 - 可从以下应用程序参考应用程序的特定参数:
◦布局
◦钣金件
◦焊接
◦管道
◦缆
◦机构
◦模拟
◦制造
2.使用参数的字符串值
使用参数的字符串值:
可输入带双引号的字符串作为参数值。
请看以下示例:绘图注解使用注解内的参数名。相应的关系如下所示:
IF d1 > d2
MIL_REF = "MIL-STD XXXXA"
ELSE
MIL_REF = "MIL-STD XXXXB"
ENDIF
3.要将材料参数插入到关系中
要将材料参数插入到关系中:
1.单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.单击“插入”(Insert) > “自列表”(From List)。“选择参数”(SelectParameter) 对话框随即打开。
3.在“查找范围”(Look In) 列表中,选择“材料”(Material)。
4.执行下列操作之一:
◦在模型树中,选择零件。将显示主材料的参数。
◦在模型树中,选择主体。将显示分配给主体的材料的参数。
◦在模型树中,展开“材料”(Materials),然后选择材料。将显示材料的参数。
5.选择要插入的材料参数。
6.单击“插入选定项”(Insert Selected)。选定材料参数将被插入到“关系”(Relations) 对话框中。
4.关于系列参数
关于系列参数:
“系列”(Series) 选项卡用于定义某个参数的一系列值。根据您所定义的不同值,该参数的值会有所不同。
主要用途仅限于 Insight 和驱动电动机。例如,可定义一个参数来计算电动机的动力。
要设置时间序列值
1.单击“工具”(Tools) > “参数”(Parameters)。
2.在“参数”(Parameters) 对话框中,定义您想要为其设置值的参数
3.右键单击该参数,然后在快捷菜单中单击“系列”(Series)。“参数属性”(Parameter Properties) 对话框随即打开。
4.单击“系列”(Series) 选项卡。“系列”(Series) 选项卡中包含一个由两列数据组成的表格
5.对于“自变量单位”(Argument Units),请选择一个数量和相应单位。在表的第一列中指定值。例如,您可以选择 Time 作为自变量值,选择 sec 作为相应单位。
6.选择一个数量,并为“参数单位”(Parameter Units) 选择相应单位。在第二列中指定值。例如,您可以选择 Force 作为单位数量,选择 Ibf 作为相应单位。
在“系列”(Series) 选项卡中,可使用下列选项:
◦
- 添加新行。
◦
- 移除行。
◦
- 打开“图形工具”(Graphtool) 对话框。对话框将显示您在“系列”(Series) 选项卡中所定义各个值的图形。
◦
- 在“图形工具”(Graphtool) 对话框中,单击此选项可查看“图形窗口选项”(Graph Window Options) 对话框。可使用“图形窗口选项”(Graph Window Options) 对话框中的选项更改“图形工具”(Graphtool) 的外观。
7.单击“确定”(OK)。
使用值的序列计算平均值
您可以使用时间序列参数计算平均值
在接下来的示例中,我们将使用下列值创建参数 MYPARAM:
10
|
5
|
20
|
10
|
30
|
20
|
创建以下关系:new1=average(MYPARAM)。
在“局部参数”(Local Parameters) 部分下创建给定值的输出 (平均)。
创建一个新行 NEW1,其中平均值显示为 11.666667。
使用 value_by_argument 函数计算线性插值
value_by_argument 函数用于访问序列参数的特定行。
以 MYPARAM 参数为例,其具有以下值:
1
|
5
|
2
|
10
|
3
|
20
|
您可以写入一则用于访问以下各行的关系。必须指定输入自变量 <参数名称> 和 <时间值>:
A=value_by_argument(MYPARAM,1) = 5 (输入自变量 1 时,函数返回的值为 5,因为对应于自变量 1 的值为 5)。
A=value_by_argument(MYPARAM,2) = 10 (同样,此函数可返回适用于关系的值 10。)
A=value_by_argument(MYPARAM,3) = 20
还可使用 value_by_argument 函数计算线性插值。
在这种情况下,您需要为函数指定三个输入自变量:
•参数名 - 时间序列参数的名称。
•时间值 - 需要计算参数值的时间值。
•插值顺序 - 指定插值种类
◦0 - 精确值 (默认)
◦1 - 线性插值
例如,我们的时间值有 1、2 和 3。如果我们需要时间值 2.5 的线性插入参数值,则可以使用下列关系:A=value_by_argument(MYPARAM,2.5,1) = 15。关系将返回值 15。
如果我们将同一关系用于精确/默认值 (自变量为 0)
A=value_by_argument(MYPARAM,3,0) =20 (该函数将搜索时间的精确值,表格中的值 3,并返回值 20)
5.用于查询参数的关系函数
用于查询参数的关系函数:
可使用以下函数
查询“系列”(Series) 参数。
函数
|
说明
|
||
---|---|---|---|
has_value (Param, Value, (Column))
|
如果指定列中存在值,则返回 True。否则返回 False。
其中:
Param – 参数名称
Value – 要检查的值
Column (可选) – 列编号
|
||
match_value (Param, Value, (Column))
|
返回在对应列中找到值的最上一行。如果未找到参数,则返回 0。否则,将返回错误。
其中:
Param – 参数名称
Value – 要检查的值
Column (可选) – 列编号
|
||
min/max/average
|
返回参数的最小值、更大值或平均值。仅适用于数字参数值。
|
||
value_by_argument
|
返回与找到的自变量 (如果存在) 位于同一行的值,或者返回两个最接近值之间的线性插值。当自变量位于区间范围外时,由于结果不明确,因此会显示错误。
Param – 参数名称
Argument – 第一 (左) 列中的值
interpolation_order – 指定完全匹配 (0) 或线性插值 (1)。
|
||
weighted_average
|
返回参数列值的加权平均值。加权平均值通过以下公式计算得出:Sum (Ti+1-TI*(vi+1+VI/2))/(Tlast-T0).
其中:
Param – 参数名称
|
||
value
|
若在关系右侧使用,则返回指定单元格中的值。若在关系左侧使用,则返回单元格的值。
其中:
Param – 参数名称
Value – 要检查的值
Column (可选) – 列编号
|
||
count_rows
|
返回参数中的行数。
其中:
Param – 参数名称
|
6.关于在截面中创建关系
关于在截面中创建关系:
截面关系捕捉截面图元间的关系。截面关系与截面一起存储并由系统进行计算,而不考虑截面用于何处。
可在截面关系中使用以下变量:
•受驱动的变量可以是:
◦截面中的尺寸 (sd#) 或父项模型中的尺寸 (d#)
◦在“装配”模式下,另一模型中的尺寸 (d#:#)
◦父模型中的用户参数(不允许有工作标识后缀)。
•驱动变量可以是:
◦截面中的尺寸 (sd#、rsd# 或 kd#)、父项模型中的尺寸 (d#、rd#) 或装配中其它模型中的尺寸 (d#:#、rd#:#)
◦父模型中的用户参数(不允许有工作标识后缀)。
创建截面关系的提示
•定义尺寸而非截面尺寸的关系最好在特征或模型级进行定义。
•不能将另一特征中的参数作为驱动变量进行参考。例如,如果 dia 是其它特征中带有 fid_20 的尺寸,则系统不接受以下截面关系:
sd3 = dia:fid_20
但是,在特征级或模型级,通过使用截面尺寸 (sd#) 的模型级等价尺寸 (d#) 可建立同样的关系。另外,可在父模型中创建一个中间用户参数,然后从截面中参考它。
•如果试图将截面外的关系分配给已由截面内另一关系所驱动的参数,则系统在重新生成时会发出错误消息。如果试图将截面中的关系分配给一个已经由截面之外另一关系驱动的参数,结果同上面是一样的。移除关系之一并再次进行重新生成。
•创建曲线表特征的关系时,例如,sd1=evalgraph("CONIC......", trajpar....),该关系会变成特征关系。系统会在零件关系之后计算特征关系,并在其所属的特征重新生成时求解特征关系。因此,在关系执行几何计算(例如,两点间的距离)时,如果与用作零件关系相对,它被用作截面关系,则可能给出不同的结果。
指定截面中的用户定义的参数:
在截面级(“草绘器”模式),只能通过关系创建用户参数。
在父模型中计算和保存用户参数,从中可象其它模型参数一样存取它们。也可以将截面中的关系分配给父模型的用户参数。
PS:不能从截面的父特征中访问用户定义的参数。
如果为父模型选取“显示”(Show) (单击“关系”(Relations) 对话框中的“工具”(Tools) > “关系”(Relations) > “显示”(Show)),则“信息”(Information) 窗口将显示该模型顶层和特征截面中的关系 (但不是在特征级),并在“符号”常量标题下列出用户参数。它在模型级创建的参数和截面级创建的参数之间不产生任何差别。参数按创建的顺序列出。
可以从父模型中修改或使用截面关系中的用户定义参数。可以在几个截面中给同一参数分配值。重新生成后,参数的值是最后一个关系所计算出来的值。
PS:如果试图将截面之外的关系分配给一个已经由截面中另一关系驱动的参数,则系统重新生成模型时会发出错误信息。如果试图将截面中的关系分配给一个已经由截面之外另一关系驱动的参数,结果同上面是一样的。移除关系之一并重新生成。
示例:截面关系示例:
下表显示零件中使用的其中一个截面的典型的“信息”窗口。
关系
|
参数
|
新值
|
---|---|---|
/*** 截面关系:
|
||
param_sect_1 = sd0
|
param_sect_1
|
5.500000e+00
|
sd1 = 2*sd0
|
sd1 (D32)
|
1.100000e+01
|
/*
|
||
sd3 = 0.03*param_part_angle1
|
sd3 (D34)
|
2.700000e+00
|
7.装配中的关系
在另一个模型中指定参数:
如果参考属于另一个模型的参数,则该参数必须包括所参考模型的“会话标识”。
装配关系的格式如下:
XYZ = parameter_name:session_id
其中
•XYZ 是当前选定模型中的参数。
•parameter_name 是所参考模型中的参数。
•session_id 是所参考模型的“会话 ID”。
一般情况下,可以将上述关系表示为:
XYZ:session_id_1 = parameter_name:session_id_2
其中
•session_id_1 是受驱动参数的模型的“会话 ID”。
•session_id_2 指驱动参数的模型的“会话 ID”
在装配模式中确定模型的会话标识:
可在模型树的“会话 ID”(Session ID) 列中查看会话 ID。请按照以下步骤添加此列:
1.在“模型树”中,单击
> “树列”(Tree Columns)。“模型树列”(Model Tree Columns) 对话框打开。
2.在“类型”(Type) 列表中,选择“会话 ID”(Session ID)。
3.单击
,将“会话 ID”(Session ID) 添加到“显示”(Displayed) 列表中。新的“会话 ID”(Session ID) 列即被添加至模型树中。
或者,也可使用“关系”(Relations) 对话框查看会话 ID:
1.装配打开时,单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.单击“显示”(Show) > “会话 ID”(Session ID)。出现“模型信息”(MODEL INFO) 菜单。
3.选择下列对象类型之一:
◦装配
◦零件
◦骨架
4.选择元件。该对象的名称和会话标识出现在消息窗口中。
在装配关系中使用元件的会话标识:
创建属于模型(装配或元件)而非当前模型的参数时,参数必须将该模型的“会话标识”作为后缀包括在尺寸符号中。
PS:在当前模型中使用参数的“会话 ID”是可选的。
可单击“关系”(Relations) 对话框中的“显示”(Show) > “会话 ID”(Session ID) 查看元件的“会话 ID”。
在装配中,下列术语对于元件是等价的:
•元件号 = 特征号
•元件标识 = 特征标识
如何生成会话标识
当创建装配或将其检入到会话中后,每一个唯一的模型(无论是顶层装配、子装配或零件)都被赋予它自己的会话标识。
如果在装配中多次使用某个模型,则每次使用模型都有唯一的、与其父装配相关的“元件号”和“元件标识”但是,模型的全部使用过程均共享相同的“会话 ID”。当模型处于会话中时,即使将模型用于不同的装配系统也会保留相同的“会话 ID”。
表驱动模型的不同实例有不同的工作标识。
示例:装配树中模型的会话 ID:
以下示例列出了在 Creo Parametric 会话中分配给元件的典型“会话标识”。
模型
|
会话标识
|
---|---|
TEST_ASSY.ASM
|
1
|
BASE_ASSY.ASM
|
3
|
BASEPLATE.PRT
|
6
|
BUSHING.PRT
|
2
|
SNAPRING.PRT
|
4
|
BASEPLATE_1.PRT
|
8
|
在装配关系中使用内部元件标识:
在“装配”模式下创建关系时,可能需要知道“元件内部标识”。即便两个元件具有相同元件名称且因此具有同一“会话 ID”,装配中的每个元件也会有唯一的“元件 ID”。
参考元件标识时,请使用以下语法:
d#:cid_(component ID #)
要确定元件内部标识:
1.单击“信息”(Info) > “元件”(Component)。“元件约束”(Component Constraints) 对话框打开。
2.选择元件。
3.单击“元件约束”(Component Constraints) 对话框上的“应用”(Apply)。“信息”窗口将显示包括“元件 ID”的元件信息。
PS:“装配”模式下的“模型树”会显示每个装配元件的特征 ID (与元件 ID 相同)。
示例:在装配关系中使用元件 ID:
如果创建装配,在该装配中同一类属元件被组装了两次,那么关于这两个元件加在一起的长度总和的关系可以写成:
Total_length = d3:2 + d3:2
其中 d3 是尺寸,2 是类属的会话 ID。
如果使用其“族表”中的一个实例取代其中一个类属元件,则该关系就不再正确。如果装配中包含一个类属和一个实例,可将关系更改如下:
Total_length = d3:4 + d3:4
其中 d3 是尺寸,4 是替代类属模型实例的会话 ID。
Creo Parametric 无法确定必须更新其中哪一个尺寸来反映实例的“会话 ID”。要处理这种情况,可以使用对每个装配元件均为唯一的内部元件标识 (cid) 编写装配关系。
如果使用与第一个示例中相同的两个相同类属元件,则关系更改如下:
Total_length = d3:cid_1 + d3:cid_3
其中:
•d3 - 尺寸
•cid_1 - 指第一个类属元件
•cid_3 - 指另一个类属元件。
如果其中一个类属元件被它的一个实例所替换,则系统会正确地更新关系以反映此变化,并且 total_length 会正确地计算出类属元件和实例元件的总长度。
示例:装配关系示例:
下面的示例说明装配“模型树”的一些典型关系。

8.关于交互式 C 程序
关于交互式 C 程序:
可创建属于自己的交互式程序以通过关系驱动模型几何。创建用户程序时,请考虑以下信息:
•“用户程序”(User Prog) 命令仅在“零件”和“草绘器”模式下可用。
•一次只能编辑或运行一个用户程序。但可为每个零件编写多个程序,然后依次运行。
•每个程序都被限制到称作 "USRMAIN()." 的单个输入子程序中。输入子程序可以调用该程序文件中的其它子程序。
•Creo Parametric 提供一个 C 文件模板 usermain.c 以帮助用户编写及使用用户程序。
•在用户程序中,必须用大写表示 Creo Parametric 尺寸。
•使用 D[i] 表示屏幕上的尺寸。该符号对应“零件”或“装配”模式下的 di,或对应“草绘器”模式下的 sdi。系统不接受用户分配的符号名 (例如宽度),而只使用系统分配的尺寸符号。
•在任何程序中都不要使用 exit 语句。要将错误处理机制构建到程序中,请使用 printf 或 fprintf 语句。
•不能使用用户程序驱动装配尺寸和阵列实例数。
要使用交互式程序,必须完成下列步骤:
1.创建程序。或者,可编辑现有程序创建新程序。
2.编译并链接程序。
3.运行程序以实现更改。
4.当程序结束运行后,重新生成模型以更新几何.
编辑交互式 C 程序:
使用此过程可创建新的程序或编辑现有的程序。
1.单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.单击“实用工具”(Utilities) > “用户程序”(User Prog) > “编辑”(Edit)。
3.输入程序名称而不带 .c 扩展名。编辑器窗口打开。如果编辑现有的程序,Creo Parametric 会检索指定的程序文件。
4.如果创建新程序,必须先将 C 文件 templateusermain.c 复制到编辑器中。执行下列操作:
在 Windows 中 - 使用 Windows Notepad 编辑器。打开一个模板文件,然后使用“另存为”(Save As) 保存该文件。
5.编辑程序。
6.保存程序。Creo Parametric 将被激活。
PS:只能定义尺寸符号。
确定环境变量:
使用此过程确定当前环境变量的路径。
1.单击“窗口”(Window) > “打开系统窗口”(Open System Window)。
2.当外壳窗口打开后,执行下列操作:
◦在 Windows 下输入以下命令:
[echo %PRO_USRMAIN% %PRO_USRINCS%]
系统会在外壳窗口中显示完整路径。
示例:连接交互式 C 程序:
编辑 C 程序后,必须编译及连接程序。您需要一个编译环境才能构建程序。编译程序时,请考虑以下信息:
•在 Windows 中 - 必须定义两个环境变量:
◦NT_COMPILER - 从 Creo 安装位置,打开 parametric.psf 文件,然后添加 NT_COMPILER 环境变量。编译器的值必须为 32 位增量式 C 编译器命令。例如,可使用 Visual Studio 批处理文件 ENV=NT_COMPILER=<install_location>\\Microsoft Visual Studio\\2019\\Professional\\VC\\Auxiliary\\Build\\vcvarsall.bat <arch> & cl. 来设置此环境变量
◦LIB - 编译器的值必须是从编译器的加载点到其库 (.LIB 文件) 的目录路径。
1.单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.单击“实用工具”(Utilities) > “用户程序”(User Prog) > “链接”(Link)。系统开始编译程序。如果系统检测到错误,它会在启动窗口中显示出错消息。如有必要,可编辑并重新连接程序。
执行交互式 C 程序:
成功连接用户程序后,可运行程序以实现更改。
PS:
•系统不会自动运行用户程序。必须在每次更新零件时重新运行该程序。
•在完成运行程序时,必须重新生成零件以更新几何。
1.单击“工具”(Tools) > “关系”(Relations)。“关系”(Relations) 对话框打开。
2.单击“实用工具”(Utilities) > “用户程序”(User Prog) > “运行”(Run)。
3.输入程序名称。程序开始执行。任何打印输出都将写到启动窗口中。程序会提示用户进行必要的输入。执行用户程序时,系统创建下列两个临时文件:
◦spgtousr.dat 列出执行程序之前的参数及其值。
◦usrtospg.dat 列出执行程序之后的参数及其值。
可在确信程序正确运行后删除这些文件。
4.当程序结束运行后,重新生成模型以更新几何.
示例:用户程序:
该程序根据压力容器的直径和工作压力及允许的应力等材料参数计算其厚度。程序会从模型中导出直径。用户根据提示在启动窗口内输入材料参数。计算所得的厚度将传递回 Creo Parametric。
[程序从下一行开始]
/* Template for writing user programs in the Creo Parametric environment */
/* the following definition and include file are necessary */
#define USRMAIN
#include "spgusrgl.h"
/* This include file establishes useful variables for user needs. Those are:
1. D[i] refers to dimensions you see on the screen. ‘i’ is the index of a
dimension you see on the screen.
So, D[0] has a value corresponding to "d0" on the screen (or "sd0" if you are
in SKETCHER mode). D[4] corresponds to "d4" (or "sd4") on the screen, and so forth.
2. DIM_NUM Total number of dimensions on the screen.
*/
usrmain()
/* This program computes the thickness for a pressure vessel given the diameter from the model and various material and design constants input by the user. */
{
/* ---------------------- local variables ----------------------- */
/* Declare any additional variables or functions you need here. */
double sqrt ();
double thickness, f_s, joint_eff, allow_stress, press, dia;
/* ---------------------- executable code ----------------------- */
/* Prompt user for input. Prompts appear in the startup window. You must also
enter your responses there. */
printf("Enter material parameters\n");
printf("\n Working Pressure [psia]:\n");
scanf("%lf", &press);
printf("\n Factor of Safety [ ]:\n");
scanf("%lf", &f_s);
printf("\n Joint efficiency [ ]:\n");
scanf("%lf", &joint_eff);
printf("\n Allowable stress [psia]:\n");
scanf("%lf", &allow_stress);
/* Compute thickness of pressure vessel based on equations in Mechanical Analysis
and Design, A.H. Burr, Elsevier, 1982.
Note use of dimension D[2], the pressure vessel diameter, in computing the new
thickness */
thickness = press * D[2] * f_s / (2 * joint_eff * allow_stress);
/* Pass new thickness back to Creo Parametric */
D[3] = thickness;
}
[Program ends with previous line]