KFP_3_控制语句
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
… 新建DFA文件,在该文件中定义类 Picture_Frame 定义输入参数 FrameLength, FrameHeight FrameThickness, Round? NumCutouts, FrameOrigin 创建ug_block的实例生成门框。 定义第一个窗体 定义第二个窗体 保存文件。 在NX中实例化本类。
Else If (fat?: = true & color: != White ) Then “This is a black fat pig!” Else If (fat?: =false & color: = White )
Then “This is a white thin pig!”
Else “This is a black thin pig!”;
17
循环举例(3) – 嵌套循环
目标:
利用嵌套循环找出第一个矩形,使他
的面积大于所需的面积。其中,可能 的长度为:.25, 1.75, .5, 3.5, .75, 8.25, 5, 1.0, 1.5, 2
步骤:
新建DFA文件,在该文件中定义类 定义输入参数
ReqdArea 定义数据链Stock来记录可能的长 度值。 利用嵌套循环求得第一个符合条 件的长度值的链。 定义输出信息属性。 自动驱动打印信息。 在NX中实例化本类。
$变量 Is 表达式 Then 表达式;
例如: Loop {
说明:
for $a from 0 to 5;
for $b is 2 then $a+1; do ug_printvalue($b);
表达式1,2,3 - 整数或浮点数。 表达式4 - 只能是链。
};
sum $b;
返回结果为22
13
累加语句
满足结束条件。 循环语句标识符为Loop。
循环体用链标识起止。
循环语句关键字:
For Is
From Do
To Collect
Then ug_printvalue($val)
Else donothing; Collect $i Into $result;
特殊语句
Append
累加语句
终止语句
表达式1 Append 表达式2; 表达式1 Collect 表达式2; 表达式; 表达式 Into $变量;
说明:
Max_of Max_of
Append 生成一个简单链。
Collect生成一个复合链。
14
终止&特殊语句
特殊语句的语法格式:
Do
终止语句的语法格式:
If
表达式; Is 表达式;
NumCutouts:1; Round?:True;
NumCutouts:2 Round?:False;
8
选择应用举例(2) – 窗体建模(2)
步骤:
新建DFA文件,在该文件中定义类
Rect_Cutout 定义输入参数 CutoutOrigin,CutoutLength CutoutHeight,CutoutDepth CutoutTarget 定义子规则创建ug_block的实例 保存文件。 新建DFA文件,在该文件中定义类 Circ_Cutout 定义输入参数同Rect_Cutout类。 添加下列输入参数 CutoutDirection 定义子规则创建ug_cylinder的实例 保存文件。 …
If $i=100 Return $result;
Return
In
With
};
11
循环语句语法原则
loop循环必须包括: 至少一个迭代语句 至少一个累加语句或终止语 句或特殊语句 loop循环可以包括: 多个迭代语句 多个赋值语句 多个累加语句和/或多个终 止语句 关于变量: loop中定义的变量是局部变量。 无须人为指定数据类型。 循环语句内的变量不用<<赋值。 在loop中可参考loop循环外的变 量属性。 在嵌套循环中,内循环可以引用 外循环的变量。 关于loop循环的说明: loop循环语句是过程性的,而非 声明性的。 满足第一个终止条件,即终止循 环。 所有的循环必须返回一个简单值 (包括链)。 在loop循环中也可生成子规则。 Loop循环可嵌套。 ug_PrintValue函数常用于调试。 下面逐一介绍循环体内 五种语句
两路分支结构多路分支结构关系运算符与逻辑操作符关系运算符与逻辑操作符关系运算符与逻辑操作符关系运算符与逻辑操作符运算符说明举例分类操作符说明举例二元注意
知识熔接编程(三)
日期:2008年 3月
1
© UGS Corp. 2004. All rights reserved.
本节主题
条件控制
循环控制 函数与方法
7
选择应用举例(2) – 窗体建模(1)
目标:
根据输入参数Round?:的值是true还是false,决 My_Frame
定生成圆形或矩形窗口。 根据输入参数NumCutouts:的值为1还是2,决定 生成窗体的个数。如下图。 DFA及类文件结构如左图。
Rect_ Outout
Circ_ Outout
小结: 进一步掌握循环语句的语法。 ug_printmessage可弹出消息框, 如上图。
18
循环举例(4) –生成通过所有点的曲线
目标: 利用给定的点系数据,在NX中创建点, 并生成一条通过所有点的曲线。 给每个点根据位置加一个标签。
步骤: 新建DFA文件,在该文件中定义类 定义数据链pt_data记录点系。 点系数据如下: 利用循环在XY平面内创建一系列的点。 {{0,193},{82,185},{99,176},{122,133 利用刚刚创建的点系,创建一条曲线。 },{128,83},{97,17}} 创建子规则链,给每个点加上标签, {{-82,185},{-99,176},{-122,133},{128,83},{-97,17}} 指明它的位置。 在NX中实例化本类。 小结: 进一步掌握循环语句的语法。 在循环中创建点系。
小于等于 a <= A 大于等于 2 > 1
逻辑非,同 !a: -
注意: 判断两个表达式是否相等使用“=”,而不是“==”。 关系运算符和逻辑运算符经常一起使用,优先级为 -或! >关系运算符 > 逻辑运算符 复合条件的运算基本顺序是由左至右,圆括号可以改变运算顺序 5
选择语句的应用
1.直接作为规则,计算属性的值 (Number Parameter) WidgetSize:; 注意: (String) WidgetPartNumber: if WidgetSize:=1 then "W80000-1" 不能使用条件判断 else if WidgetSize:=2 then "W80000-2" 来决定继承类 else if WidgetSize:=3 then "W80000-3" else "W80000-NEW"; 2.用条件语句来决定用于生成子规则的类名 (child) idlerGear: { class, if idler_needed?: NullClass表示 then SimpleGear 什么也不做 else NullClass };
6
选择应用举例(1) – 控制截面线串形状
目标: 根据输入参数shape:的值是square或 triangulare,生成矩形或三角形截面线串。 当输入错误的属性值而导致的建模错误时, 应向用户给出出错信息。 步骤: 新建DFA文件,在该文件中定义类 说明: 定义输入参数shape 使用demandvalue自动驱动求值。 shape: square; #square或 如果shape:=triangular,line4创建 triangular nullclass实例。 创建属性,输入错误时通知用户。 创建下列子规则。根据输入参数的 小结: 不同,决定是否创建该线。 视情况 通过条件判断,选择实例化的类 line1,line2,line3,line4 Nullclass和Nulldesign 而定 通过条件语句给属性赋值 在NX中实例化本类。
jj_support
Dia:0.75
小结: 了解循环操作功能 掌握循环语句的语法
16
循环举例(2) –找出合适的轴承
目标:
找出能够承载指定载荷的最小直径
步骤:
轴承的文件号。其中,载荷为: 8000。轴承数据库: 轴承文件号 承载 WBG3 2500 WBG4 5500 WBG5 9400 WBG6 13700
两路分支结构 If (fat?:)
Then @{ “This is a fat pig!”; }
Else @{ “This is a thin pig!”; }; 多路分支结构 If (fat?: = true & color: = White)
Then “This is a white fat pig!”
小结: 类文件的结构组织 通过条件判断,选择实例化的类
9
循环控制语句
循环概念 循环语句语法 应用举例
10
© UGS Corp. 2004. All rights reserved.
循环语句简介
迭代控制,反复执行,直到
循环语句结构
Loop { For $i From 1 To 100; For $val Is cos($i); Do If $val = 1 迭代语句 赋值语句
新建DFA文件,在该文件中定义类 定义输入参数
Load 定义轴承库属性BearingList。 利用循环,得到符合条件的第一个 轴承数据。返回给属性Bearing。 定义打印信息testmessage。 自动驱动打印信息。 在NX中实例化本类。
小结: 进一步掌握循环语句的语法。 ug_printmessage可弹出消息 框,如上图。
足一定语法格式。
if后的判断条件要求返回布尔值。 if-then-else语句可以嵌套。
If (fat?: = true)
Then @{If ( color: = White) Then “This is a white fat pig!” Else “This is a black fat pig!” Else @{ ( color: = White) If Then “This is a white thin pig!” Else “This is a black thin pig!”; }; ;}
2
© UGS Corp. 2004. All rights reserved.
条件控制语句
语法与概念 关系运算符与逻辑操作符 应用举例
3
© UGS Corp. 2004. All rights reserved.
条件语句语法格式
两种条件语句格式 关键字if,then和else,须满
4
关系运算符与逻辑操作符
关系运算符
运算符 说明
= != < > <= >= 等于 不等 小于 大于
逻辑操作符
分类 操作符 说明
二元 & 二元 | 一元 一元 ! 逻辑与 逻辑或 逻辑非
举例
a: = b: a: != b: a: < b: 1>2
举例
a: & b: a: | b: - ( a: = b: )
累加语句的语法格式:
Append Append Collect Collect If If
表达式; 表达式 Into $变量; 表达式;
Min_of Min_of
表达式; 表达式 Into $变量;
Sum
Sum
ቤተ መጻሕፍቲ ባይዱ
表达式;
表达式 Into $变量;
表达式 Into $变量;
测试表达式 Return 值表达式;
Return With
$变量 Is 表达式;
15
循环举例(1) –检测圆柱的直径
目标: 使用loop循环找出能承受指定载荷的圆形 钢材的最小直径(压力<屈服压力)。载荷 为560 lbs,屈服压力为20,000 psi。其中, 标准的圆钢尺寸(直径-英寸)为:0.25, 0.3275, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0 步骤: 新建DFA文件,在该文件中定义类 定义输入参数 Load,yield_stress 定义support类中的其他属性。 standard_steel 利用循环,查找出满足规则的最小直径。 利用查出的直径创建圆柱子规则。 在NX中实例化本类。
12
迭代&赋值
迭代语句的语法格式:
For For For For
赋值语句的语法格式:
For For
$变量 From 表达式1; $变量 From 表达式1 To 表达式2;
$变量 Is 表达式;
$变量 From 表达式1 To 表达式 2 By 表达式3; $变量 In 表达式4;