[转载]PROE/PROGRAM程序设计全解析
(2012-10-02 00:06:21)
标签:
转载 |
分类: creo学习 |
这个就是各种编程语言里都有的大名鼎鼎的条件语句了.实际上它是:
IF 条件1
……(执行语句段1)
Else
……(执行语句段2)
End If.
Input
A Number
B
C String
D Yes-No
Endinput
在Input段中也可为输入变量加提示,加提示要注意:
A.提示信息必须包含在引号里
B.提示信息必须紧跟在相应的输入变量之后.
示例:
Input
……
End Input
这个词也是一个语句段,第一行是Relations,最后一行是End Relations,中间是零件/组件中需要用到的各种关系式.在零件/组件中加入的各种关系式都放在这里(不含草图关系式及阵列关系式).在编程时也可直接在这里增加关系,所有在这里的关系,都可以在”特征”-”关系”里编辑.如果一行关系式太长(最长80个字符一行),可以在行尾写一个反斜杠(),然后接着在下一行写.示例如下:
Relations
End Relations
注:众所周知,Relations语句段中,也可使用IF语句.
Execute
End Execute
Name:含有族表的模型的名字,它必须带后缀,也就是,必须写成如“PRT0002.prt”,“ASM0007.asm”这样,否则,不能得出正确结果.
Value1/2/3…:是用来匹配的值
Lookup_inst(“Part27.prt”,0,”d0”,50)=Part27-1
Lookup_inst(“Part27.prt”,0,”d0”,70)=Part27-2
Lookup_inst(“Part27.prt”,0,”d0”,90)=Part27-3
Lookup_inst(“Part27.prt”,-1,”d0”,60)=Part27-1
Lookup_inst(“Part27.prt”,1,”d0”,60)=Part27-2
Lookup_inst(“Part27.prt”,1,”d0”,10)=Part27-1
Modify Valuename1=Value1
Modify Valuename2=Value2
……
示例:
Add Feather xxxx
End Add
第九个,Interact
Interact的词义就是“互动”“交互”,其作用就是在程序里的适当位置将系统控制权交给操作者,让操作者进行一定的操作后再将系统控制权还给系统----实现“交互式设计”。
在程序中使用Interact语句,当程序运行时遇到Interact,程序就暂停运行,此时模型树处于插入状态,用户(操作者)可以自己向part里增加特征(或向组件里增加组件级特征或元件),一个特征(或元件)增加完后,系统会提示是否继续增加,选否的话交回系统控制权,程序继续运行直到结束。
Interact语句在程序里的地位与Add……End Add、Execute……End Execute、Massprop……End Massprop、Input……End Input、Relations……End Relations语句同级,它不可以放在这几个语段内部。它可以与IF……End If语句联用。
示例:
Add Feather xxxx
……
End Add
Interact
Add Feather xxxx
……
End Add
Interact语句是一次性的,再生后,Interact语句消失,新加特征(元件)的Add……End Add语句放在原来的Interact语句的位置上。如果暂停时直接选“Done(完成)”结束了增加动作的话,程序里的Interact语句也消失了,但不增加任何内容。
当Interact语句用在part的程序里时,只要再生就会出现交互(即Interact语句起作用)。
当Interact语句用在组件的程序里时,有些兄弟的PROE里可能就要在再生时至少修改一个输入变量(Input……End Input段里的变量)的值才能触发Interact,如果再生时用“当前值”或选取了变量但输入时都用回车跳过了,Interact将不起作用。
第十个,Choose
Choose就是“选择”。这个用于UDF(用户自定义特征)。在建模的时候,如果使用了UDF,在模型树里,UDF就会显示为一个组,使用“特征”-“组”“替换”,可以将这个UDF组替换为另一个UDF组或同一个UDF里的另一个族表实例。替换后,被替换的组作为不活动特征仍保留在part里,只不过在模型树上看不到它了,但在程序里,可以用choose语句把它变成活动特征(而Choose前的那个组则变成不活动特征了)。
如果UDF组有子特征的话,被替换后,其子特征也一起变成不活动特征,用choose把它换回来后,它的子特征也同时变成活动特征。
同Interact语句一样,Choose语句在程序里的地位与Add……End Add、Execute……End Execute、Massprop……End Massprop、Input……End Input、Relations……End Relations语句同级,它不可以放在这几个语段内部。
同Interact语句一样,Choose语句也是一次性的,再生之后,Choose语句消失。
Choose语句语法如下:
Choose(Valuename)
Valuename:一个字符串型变量。
使用Choose 语句要先在Input……End Input语句中加一个字符串型变量。在加入UDF组后,做一次替换,再编辑程序,在组标记的Add……End Add语句段内就会多了一句:“组用特征标识(名称)替换: 1127(RRR)”,找到这一句(如果没能成功替换,则不会有这一句),记下这个数字,这个数字就是要被替换出来的那个组的特征ID。然后在这个组标记的Add……End Add语句段后增加一个Choose语句,Choose的变量就是先前建的那个字符串变量。再生时,将此变量的值修改为“1127”(刚才查到的ID)。再生后模型里的UDF组就被替换了。
组用特征标识(名称)替换: 1127(RRR)
组是由UDF UUU驱动的
END ADD
Choose(GP)
(Input段中设置变量组标记Add段中查找ID组标记段后用Choose(变量名))
当Choose语句放在Massprop...End Massprop语句前时,Choose语句执行后不消失----变成固定语句。如此,如果模型中有多个UDF需要根据情况选择,则可在Massprop之前连着放几个Choose语句。而如果是一次性的操作,则可使用Choose语句的瞬时性。
第十一个,Massprop……End Massprop
这个语句用于再生时计算质量属性。计算后系统里的质量属性相关的参数变成最新值,可在其它地方直接引用而不必在引用前再进行一次质量属性计算。它也是一个语句段,其语法如下:
Massprop
End Massprop
(各零件/组件名可不用带扩展名)
在Massprop语句段中,可嵌入IF……End If语句。
好,前面把十一个词的意思都讲完了。再看一下这些词的分类与组合规则。
根据它们在程序中的保留时间,可分为固定语句和瞬时语句。固定语句一旦写到程序里,除非再做编辑人为删除它,它一直存在,每次再生都起作用。瞬时语句是一次性的,再生之后,就从程序里消失了。瞬时语句有Interact和Modify共二个。Choose语句则比较特殊,瞬时性与固定性兼具,当它放在Massprop......End Massprop语句段之前时,它是固定语句,当它放在Add......End Add语句之前时,它是瞬时语句。其它的都是固定语句。
根据它们在程序中的地位,可把这十一个词分成三种:段语句、独立语句、辅助语句。
段语句用来构成一个程序块,一个块实现一个独立的功能,如输入变量、设置关系、增加一个特征(元件)、向一个元件传递参数等等。段语句包括:Input……End Input 、Relations……End Relations、Add……End Add、Execute……End Execute、Massprop……End Massprop共五个。
独立语句,一个语句实现一个独立的功能,包括:Interact、Choose,共2个。
辅助语句不能单独使用,必须与其它语句一起使用,包括:If……End
If、Lookup_inst 、Suppressed、Modify,共4个。
独立语句与段语句是平等的,不能嵌入段语句中使用,但辅助语句可以嵌入段语句中使用。
IF语句可嵌入所有的段语句中使用,也可将段语句(仅Add和Execute)和独立语句嵌入IF语句中使用。Lookup_inst、Suppressed、Modify必须嵌入Add语句中使用。
Interact可放在任何可放Add语句的地方。Choose语句应紧跟在组标记的Add语句之后。
在程序中,首先是Part及版本信息。接下来是程序的内容,以Input打头,Relations继后,Massprop结尾,在Relations与Massprop中间,是其它各种语句(段)的按上述规则的组合。
实际上,还有一个注释语句也应该算一个语句。但它不影响模型变化。故前面未将其列入基本词汇中。注释语句以斜杠加星号打头,即以“/*”打头,后面跟注释内容。
注释语句仅用在Relations……End Relations语句和Add Feather……End Add语句中。在Relations语句中,它可在任何位置,在Add Feather……End Add语句中,它必须紧跟在第一行Add Feather之后作为第二行。
注释语句加入的内容,不直接影响模型,也不会在模型中显示。在编辑关系的编辑器中,可以看到加在Relations语句中的注释,在特征信息中可以看到加在Add Feather……End Add语句中的注释。
注释语句不是一次性的,再生之后继续存在于程序中。
再看一下设计来源。
第一次从“编辑程序”进入一个模型的程序编辑器时,系统是直接打开编辑器的,同时新建一个名字为part名后缀为pls的文本文件(可在当前工作目录下找到)。编辑完后关闭编辑器,系统会提示是否将程序所做的修改体现到模型中,也即是否再生。选“是”的话,模型变更,同时pls文件从磁盘上消失。选“否”的话,模型不变更,程序内容被保存在pls文件中,pls文件继续保留于磁盘上。
实际上,每次编辑程序时,系统都会查找是否存在与零件(组件)同名的pls文件,如果存在,则在编辑程序时会弹出“设计来源”菜单,要求选择“从模型”还是“从文件”。选“从文件”的话,系统直接将已有的pls文件调入编辑器进行编辑。选“从模型”的话,系统将根据当前模型构建新的pls文件,同时会提示是否替换掉已经存在的pls文件,选“是”的话,替换掉原pls文件并将新pls文件调入编辑器,选“否”的话,中止操作。
编辑结束后会提示再生,选“是”将弹出“得到输入”菜单。此菜单选择程序里的输入变量的来源。有三种:Current
Vals(当前值)、Enter(输入)、Read
File(读取文件)。如是第一次编辑程序,应选“输入”,之后系统会列出Input语句中的所有变量名并加上复选框,选取需要输入新值的变量后,系统会一个一个的提示你输入每个变量的值。如不是第一次编辑了,输入变量可能已经都有正确的值了,就可选“当前值”,这样就直接跳过输入,直接进入再生。“读取文件”是先建一个文本文件(如A.txt),此文件由一行行的赋值语句组成,示例:
A=20.0
B=56
C=”txt”
D=Yes
k=No
N=9
……
选“读取文件”后,系统会要求输入文件名,输入:A.txt,则系统到A.txt这个文件中去查找与输入变量同名的变量,并将A.txt文件中的同名变量的值赋给输入变量。比如程序里Input段有A Number,B String,D Yes-No,M Number共四个变量,用“读取文件”到A.txt里找,找完的结果是A=20.0,B=空,D=yes,M=0.0。
这里要注意的是:如果输入变量在文件里找不到同名变量,则使用当前值或系统默认值(见前文)。文件里多出来的变量,系统是不会使用的。程序里,各变量是不分大小写的(写成小写的话,下次进入编辑器会自动变成大写的),但在文本文件里,是分大小写的,同时,在查找时,也是分大小写的。因此,程序里有变量B,文本文件里有变量b但没变量B的话,变量B的值将使用当前值或默认值。
由于以上的特点,我们可以用一个文本文件去管理多个模型的输入变量。
Input语段里的变量,再生之后将进入参数表(如果变量名与某个尺寸的尺寸名同名的话,则此变量将不在参数表里显示)。此后如果输入新值,可以在参数表里看到其新值。如果在程序里将先前已经赋过值的变量删除了或改名了,所有调用这个变量的地方将继续调用参数表里的那个同名参数。如果要将一个Input语段里的变量删除并清除对模型的影响,应先在程序里将其删除,然后在参数表里删除其同名变量。
一个细节,关于修改尺寸。
到现在,如果我们要在程序中修改某个尺寸的值。可以有两个办法实现:
A.在Relations语段修改。
B.在Add段的相应尺寸后用Modify语句修改。
以上两种改法的区别:
A.关系中修改的,再生后将在关系列表里加一条关系,这个尺寸变成由关系控制的了,以后不能直接在模型中修改它的尺寸值了,必须进入关系编辑器或程序编辑器里才能修改。
B.Modify语句修改的,是一次性生效的。再生之后,任何时候都可以直接在模型里修改那个尺寸的值。