ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:497.74KB ,
资源ID:17015221      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17015221.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LectureKFP3文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LectureKFP3文档格式.docx

1、 局部变量1表达式1; . 表达式n; ; 表达式块定义的说明:1. 表达式块要求以“”开头,以“;”结尾。表达式块作为一种顺序执行的组合规则,必须赋给一个属性。2. 一个表达式块包含有许多语句。这些语句在表达式块中顺序执行。3. 表达式块中的变量是局部变量。与标准的知识熔接语句不同,局部变量要使用符号赋值。局部变量必须以$为头部标识。如:$local_ver。4. 最后一个表达式的值为整个表达式块的返回值。返回值的类型必须与属性指定的数据类型一致。例如:(number) returned_number: $a2; $b3; $a+$b; 在上例中,属性returned_number:的值为5

2、。2.2 关于表达式块的说明1. KF语言是非过程性语言。然而,一些任务需要遵循一定的过程。也就是说:语句需要按某顺序执行。表达式块可满足本要求。2. 在我们前边几章中,虽然没有系统的提及表达式块,但在某些定义和举例中,还是使用了表达式块。比如:方法、函数及规则群的定义。3. 表达式块中的局部变量在表达式块以外不可被引用和改值。4. 表达式块可以嵌套。但内部表达式块只可引用外部表达式块中定义的局部变量,不可改变其值。内部表达式块可以再次定义与外部同名的局部变量,则在内部和外部表达式块中该变量会有不同的值。如同下例。为使程序清晰起见,应避免这种用法,防止程序失控。 $block_ver 1; 2

3、; ug_printvalue( $block_ver ); ;程序运行的结果为先打印出在第二个表达式块中的变量$block_ver的值(2),再打印出第一个表达式块中的同名变量$block_ver的值(1)。5. 表达式可以引用在同一个类文件中的属性。可以将表达式块的值赋给其他的属性。6. 注意:在同一个类文件中,属性first_point:与表达式块中的局部变量$first_point没有必然联系。2.3 表达式块的应用举例例 1 建立一个属性,以只读方式打开文件“c:workinput.txt”,读取其中的数据。并记录这些数据。第1步:打开NX,进入到KF可视化编程环境下。第2步:点击鼠

4、标右键,添加名为data_in_file的属性。第3步:定义属性的返回值类性为List。第4步:定义属性的规则公式为: $a openFile(e:kbeinput.txt;read); $b readSimpleDataFile($a); closeFile($a); $b;第5步:点击OK,查看read_in_file的值。参考答案如图4-1:图4-1:读取文件数据说明:在本例中,一个文本文件被打开,使用KF读取数据并关闭。ReadSimpleDataFile返回一个复合链,这里的每一个子链都是文件中的一行。读取的结果是链中链。这是一个典型的需要顺序执行的程序。例 2 编辑第三章例题中创建

5、的support类,使其从一个ASCII文件中读取原料的数据。创建一个stock.dat文件,包含有下列在loop循环中使用的直径信息。 0.25, 0.375, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0打开*_support.dfa文件,创建一个输入参数,记录用户指定的外部数据文件。 (String Parameter) data_file: 编辑standard_steel属性,改变钢材选择规则。 使用表达式块来读取stock.dat文件中的直径,不再使用固化的代码。 (list) standard_steel: openFile(data_file: ;保存文件。并在N

6、X中验证本例。自由修改stock.dfa文件中的数据,在NX中更新数模。参考答案如图4-2。图4-2:更新后的数模以上两例分析了如何从一个存在的文件中读取数据,并利用这些数据建造数模。本节稍后将更详细的讨论文件的输入输出操作。例 3 通过给定的三个点p1,p2,p3和半径,计算倒角的相切点和中心点。使用文本编辑器创建*_fillet类,生成的新文件名为*_fillet.dfa。定义*_fillet类名和用到的输入参数。 #! UGNX/KF 2.0 DefClass: *_fillet (ug_base_part); (Point Canonical Parameter) p1: (Point

7、 Canonical Parameter) p2: (Point Canonical Parameter) p3: (Number Canonical Parameter) rad:定义support类中的其他属性。 (Vector) vec1: unitize(Vector2Points(p1:,p2:); (Vector) vec2: unitize(Vector2Points(p3: (Number) dot: vec1: . vec2: 注意,1. unitize是向量标准化函数。能够使输入的向量的模为1。2. 这里,dot属性规则的“.”是数学运算中的内积运算符号。 表示两个向量点乘

8、,得到一个浮点数。利用表达式块计算倒角数据。 (List) fillet_data: If abs(dot:) 0.99999 Then $vec3unitize(vec1:+vec2:); $a rad: * sqrt(1+dot:)/(1-dot: $b * sqrt(2/(1-dot: $ctr_pt p2: - $b*$vec3; $tan_p1 - $a*vec1: $tan_p2 0) then ug_printvalues(Circle +format(%d,$i)+ radius = %f,$rad) else ; return is ;(list) demandvalue:

9、Radiuses:保存文件并在NX中创建本类的实例。答案如图4-5。图4-5:从实例循环中找到并输出信息例 7 创建孔的实例链。孔的位置信息从外部文件中读取。使用文本编辑器创建*_hole_childlist类, 生成的新文件名为*_hole_childlist.dfa。定义*_hole_childlist类。 *_hole_childlist (ug_base_part);(string parameter) Point_File:kbehole_data.txt(number parameter) Hole_Diameter:(number parameter) Hole_Tip_Angl

10、e: 60;(number parameter) Hole_Depth: 0.5;(list parameter) Placement_Face: ;从文件中读取孔的位置信息。(list) read_in_points: openFile(Point_File:利用ug_cylinder来创建孔的实例循环。(child list) Holes: Class, If (length(read_in_points:) Then ug_simple_hole Else nulldesign; Quantity, length(read_in_points: Hole_Diameter, Hole_D

11、iameter: Hole_Depth, Hole_Depth: Hole_Tip_Angle, Hole_Tip_Angle: Location, Point( First(nth(child:,read_in_points:), Second(nth(child: Third(nth(child:) ); Placement_Face, Placement_Face: lockrule?,true;交互输出信息(integer) report: ug_printmessage(format(,length(read_in_points:)+ holes will be created);

12、report:第7步:保存文件并在NX中实例化本类。答案如图4-6。图4-6:从文件中读取孔的信息并作实例循环创建孔系4部件类4.1 继承部件类的语法格式 Defclass: 主类 ( 部件类1 部件类2 部件类n ); 部件类继承格式的说明:1. 一个类可以继承多个部件类。多类的继承要通过空格来划分。2. 如果多个继承类含有同样的属性名,那么,靠近左括号的类优先。4.2 部件类的说明1. 本论题涉及到类的继承。我们可以将一些通用的规则属性或方法封装到一个类中。这就是类的继承概念。如同C+,JAVA等面向对象的语言一样,继承概念有着显而易见的优点。2. 如同属性之间不可循环引用一样,类之间的继

13、承也不可循环。3. 原则上讲,所有的类都可被其他类所继承,从而成为部件类。4. 我们这里建议只把那些与几何创建无关的,一般不用于实例化的,仅记录很全局的属性规则及很通用的方法的类称为基本部件类。5. 当然也有一种情形,即现有的某个类大体上满足需要,但有小的不同。我们可以创建一个新类,继承旧类,并重载或新增一些规则属性和方法。这时,我们也可把被继承的旧类称为部件类。6. 系统提供的最常用的用于继承的部件类有ug_base_part,nulldesig,ug_displayable_entity等。7. 当我们定义一个类时,我们可以继承多个部件类来获取这些类中的所有属性和方法。例如:ug_line

14、继承了ug_displayable_entity类的层和颜色属性。8. 部件类中的属性和方法可以被重新定义,这时,该类的实例将使用本类中重载的属性和方法。如果某属性没有被重载而在实例化时用到了,则自动获取继承进来的部件类中的属性值。如同下例:类AAA定义如下:DefClass: AAA();(Number parameter) Dia: 12;(Number) Rad: Dia:/2;类BBB定义如下: BBB(AAA);(Number parameter) Height:1.0;(Number Canonical parameter) Rad:(Number) Volume: m_pi:*R

15、ad:2*Height:那么,BBB类在KF中的理解为:(Number Parameter) Dia:(Number Parameter) Height: 1.0;m_pi:4.3 部件类的应用举例例 8 我们知道,KF系统提供的基类ug_cylinder可接收直径,高度,位置等信息, 创建圆柱实体。我们现在需要通过接收拉伸荷载和最大压力等工程信息, 来创建几何数模。使用继承的方法来实现这个熔入工程规则的设计。使用文本编辑器创建*_support_cylinder类, 生成的新文件名为*_support_cylinder.dfa。定义*_support_cylinder类。 *_support_cylinder (ug_cylinder);(Number Parameter) Load: 5600;(Number Parameter) Max_Stress: 40000;重载直径属性,通过利用在方法练习中使用的公式 带入拉伸荷载和最大压力进行计算。 (Number) Pi: 3.1415926; (Number) Diameter: Sqrt(4*Load:/(pi:*Max_Stress:并在NX中测试本设计。生成圆柱的直径为:0.422。5文件的输入输出操作5.1 常用的文件操作函数 同其它的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1