您的位置:网站首页 > Proe教程

ProE设计进阶:关系式函数的使用

时间:2012-04-07 18:00:40 来源:未知
在ProE关系式中我们可以使用系统函数,ProE对数学函数有强大的支持能力,通过这些函数我们可以来进行一些特定的运算得到所期望的值,这里就对一些比较常用的系统函数进行一个概括总结。
 
1、数学函数
 
在ProE中,我们可以使用灵活的数学函数,常用的函数列表如下:
 
sin()、cos()、tan()函数:
这三个都是数学上的三角函数,分别使用角度的度数值来求得角度对应的正弦、余弦和正切值,比如:
A=sin(30),A=0.5
B=cos(30),B=0.866
C=tan(30),C=0.577
 
asin()、acos()、atan()函数:
这三个是上面三个三角函数的反函数,通过给定的实数值求得对应的角度值,如:
A=asin(0.5),A=30
B=acos(0.5),B=60
C=atan(0.5),C=26.6
 
log():求得10为底的对数值,如:
A=log(1),A=0
A=log(10),A=1
A=log(5),A=0.6989
 
ln():求得以自然数e为底的对数值,e是自然数,值是2.718...,如:
A=ln(1),A=0
A=ln(5),A=1.609
 
exp():求得以自然数e为底的开方数,如:
A=exp(2),A=e^2=7.387
 
abs():求得给定参数的绝对值,如:
A=abs(-1.6),A=1.6
B=abs(3.5),B=3.5
 
max()、min():求得给定的两个参数之中的最大最小值,如:
A=max(3.8,2.5),A=3.8
B=min(3.8,2.5),B=2.5
 
mod():求第一个参数除以第二个参数得到的余数,如:
A=mod(20,6),A=2
B=mod(20.7,6.1),B=2.4
 
sqrt():开平方,如:
A=sqrt(100),A=10;
B=sqrt(2),B=1.414
 
pow():指数函数,如
A=pow(10,2),A=100
B=pow(100,0.5),B=10
 
ceil():不小于其值的最小整数
floor():不超过其值的最大整数
ceil(10.2)值为11
floor(10.2)=11
也可以使用指定小数部分位数的ceil和floor函数,如:
ceil(10.255,2)=10.26
floor(10.255,1)=10.2
floor(10.255,2)=10.26
 
2、字符串函数:
string_length():字符串长度求值
用法:String_length(Parameter  name  or  string),括弧内参数名或字符串,字符串要用"  "括起,空格亦算一个字符。
例:strlen1=string_length("material"),则strlen1=8
 
rel_model_name():提取当前零件的文件名称
用法:rel_model_name()注意括号内为空的,返回目前模型名称。
 
rel_model_type():提取当前零件的文件类型
用法:rel_model_type()
如:当前模型为装配图
parttype=rel_model_type(),parttype="ASSEMBLY"。
 
itos():将整数换成字符串
用法:Itos(integer)整数,若为实数则舍去小数点。如:
S1=Itos(123),S1="123"
S2=itos(123.57),S2="123"
intl=123.5,S3=itos(intl),S3="123"
 
extract():提取字符
用法:extract(string,position,length)
 
evalGraph():图形X值对应的Y值提取函数
用法:evalGraph(Graph_name,x_value),其中Graph_name是指控制图形(Graph)的名字,要用双引号括起,x_value是Graph中的定义域,函数返回Graph中x对应的y值。如:
sd5=evalGraph(“sec”,3)
 
下面都是使用参数来设计的具体例子:
 

 

 
ProE设计进阶:关系式函数的使用
 

 

 
下图是点按照线长阵列,默认情况下,点的数量需要我们自己确定,下面的图通过函数floor函数和分析参数实现点的数量随着曲线的变化自动匹配,修改线的形状和长度后,点的个数会自动匹配:
 
ProE设计进阶:关系式函数的使用
 

 

 

 下面是通过extract字符提取函数实现文字的阵列:
 
ProE设计进阶:关系式函数的使用
 


 


 



 

ProE设计进阶:关系式函数的使用
 

下面举个列子说明Mod函数的使用:

 

利用可变截面扫描的函数和关系式,可以通过实现常见的周期性变化,比如正弦变化、余弦变化,但对于一般性的形状是无法实现的。

  
如何在Pro/E可变扫描中循环利用已有的图形(Graph)以实现更一般化的周期性形状变化?
 
要实现循环利用图形,那么在可变扫描过程中,必须有方法在某个值后归零然后重新计算图形对应的值,mod()函数是非常恰当的实现方式,比如,我们的图形X定义域为0~10,要在可变扫描过程中循环利用5次,我们很容易推导出如下的关系式(为了方便,我做了一个标准的类似公式一样的通式):
 
sd#=EvalGraph("Graph",mod(N*X_value*trajpar,X_value))*K
 
上面的关系式说明:
N:表示循环周期的次数
X_value:表示图形的X定义域
K:缩放倍数
 
也可以用以下的关系式控制,道理类似:
 
sd#=EvalGraph("Graph",N*trajpar-floor(N*trajpar))*K----用此关系式来控制时,图形的定义域为0~1。
 
上面的关系式说明:
N:表示循环周期的次数
K:缩放倍数
 
第一种方式要直观、也容易理解:
 
在整个可变扫描过程中,trajpar是从0到1变化,所以N*X_value*trajpar的变化就是0到N*X_value,mod(N*X_value*trajpar,X_value)就是这0到N*X_value的变化要对X_value进行求余,换句话说,当变化到X_value的倍数的时候我们的mod()函数值就会归0,从而实现图形的循环利用,floor()函数的原理也是类似的。
 
注意点,循环利用的图形必须要符合以下两点:
 
1、图形Graph的起点和终点Y值必须相等;
2、图形 Graph必须是单一段(多段相切线条组合成的形状,可采用转换成样条的方式来转化成单根线条);
 

如下图示意: