PROE的函数表达式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
具体可以查看帮助文档,印象中好象不能直接求导!
关于关系中使用的函数
可在关系中使用数学、曲线表和曲线计算函数。
数学函数
可在关系(包括方程和条件语句)中使用下列运算符。
关系中也可以包括下列数学函数:
cos ()
余弦
tan ()
正切
sin ()
正弦
sqrt ()
平方根
asin ()
反正弦
acos ()
反余弦
atan ()
反正切
sinh ()
双曲线正弦
cosh ()
双曲线余弦
tanh ()
双曲线正切
注意:所有三角函数都使用单位度。
log()
以 10 为底的对数
ln()
自然对数
exp()
e 的幂
abs()
绝对值
ceil()
不小于其值的最小整数
floor()
不超过其值的最大整数
曲线表计算函数
利用曲线表计算函数,可使用曲线表特征通过关系驱动尺寸。这些尺寸可为截面、零件或组件尺寸。格式如下:
evalgraph("graph_name", x)
其中:
graph_name—曲线表的名称。
x—是沿曲线表 x 轴的值,为其返回 y 值。
对于扫描特征,可指定轨迹参数 trajpar 作为该函数的第二个自变量。
注意:曲线表特征通常是用于计算 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 一致(取决于为扫描特征选择的起点)。
关于关系中使用的运算符
可在关系(包括方程和条件语句)中使用下列运算符。
算术运算符
+
加
-
减
/
除
*
乘
^
指数
()
分组圆括号
例如:d0 = (d1 - d2)*d3
赋值运算符
=
等于
等于号 (=) 是一个赋值运算符,它使得方程或关系两边相等。使用等号时,方程在左侧只能有一个参数。
比较运算符
在能够返回 TRUE/FALSE 值时,将使用比较运算符。例如,只要 d1 大于或等于 3.5,下面的关系就返回 TRUE。只要 d1 小于 3.5,就返回 FALSE:
d1 >= 3.5
系统支持下列比较运算符:
==
等于
>
大于
>=
大于
或等于
!=, <>,~=
不等于
<
小于
<=
小于或等于
|
或
&
与
~, !
非
注意:"等于"赋值运算符不同于"等于"比较运算符。
运算符 |、&、! 和 ~ 扩展了比较关系的应用,它们使得能在一个语句中设置若干条件。例如,只要 d1 介于 2 和 3 之间且不等于 2.5,下面的关系就返回 TRUE:
d1 > 2 & d1 < 3 & d1 ~= 2.5
字符串运算符和函数
字符串可以使用下列运算符和函数:
==
比较字符串相等。
!=, <>, ~=
比较字符串的不等。
+
合并字符串。
itos(int)
将整数转换为字符串。其中,int 可以是一个数字或表达式。对非整数进行四舍五入。
search(string, substring)
搜索子串。结果值是子串在串中的位置(如未找到,返回 0)。
extract(string, position, length)
提取一个子串。
例如:
如果 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, bcd) - where 是 0
new = extract(param,2,3) - new 为 bcd
注意:如果用户使用参数值为零 (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
将字符串作为关系的自变量来传递
下列函数允许用户使用串作为自变量:
string_length() - 返回参数中字符的个数。例如,如果串参数 material 的值定义为 steel,则 string_length(material) 等于 5,因为 "steel" 有 5 个字母。
rel_model_name() - 返回当前模型名。例如,如果当前正在处理零件 A,则 rel_model_name() 等于 A。要在组件的关系中使用它,则照如下所示书写关系:
name = rel_model_name:2()
注意:圆括号 ( ) 是空的。
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,并写出如下关系:
if exists("asm_mbr_cabling")
bom_name = part_no
else
bom_name = asm_mbr_name
endif
关系中的条件语句
注意:不对包含条件语句的关系进行排序。条件是指表达式,这种表达式可以为 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 <条件>
顺序 0 或更多关系或 IF 子句
ELSE <可选>
顺序 0 或更多关系或 IF 子句 <可选>
ENDIF
请考虑下列规则:
ENDIF 作为一个字来拼写。
ELSE 需要添加在单独一行。
条件语句中的相等关系以两个等号 (==) 的形式输入。赋值号以一个等号 (=) 的形式输入。