找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 92522|回复: 179
打印 上一主题 下一主题

天使笔记:PROE/PROGRAM程序设计全解析

[复制链接]
跳转到指定楼层
1
发表于 2005-10-27 17:03:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
前言:本文对PROE/PROGRAM的所有语句及语法进行了详细的解说,并配备实例讲解。

关键字:Program、Input……End Input、Relations……End Relations、Add……End Add、Execute……End Execute、If……End If、Massprop……End Massprop、Lookup_inst、Suppressed、Modify、Choose、Interact。


(原创文章,转载请注明出处!)

前次云峰兄的一个“PROE玩开心词典”的趣味题目,引起了各位兄弟对PROE的参数化的讨论与思考。然而,动口的多,动手的少,当然这其中有不少的高手是不想动手了,也有不少兄弟是不知如何下手。经我多方查找,发现现在讲这个问题的资料是少之又少。搜遍天下,也没发现有哪个坛子里有关于它的讨论,只有本论坛的Alan前辈在买卖版有一个关于这个主题的帖子,可是那个帖子是10RMB(=100论坛币)一看的,各位和我一样的穷人不用说是没份的了。唯一能有点价值的资料,就是PROE自带的一份帮助,可这个帮助呢,写的有点云里雾里的,估计各位新入门者是看不明白的了。所以偶根据自已对PROE的理解和经验,综合从各处搜到的一些断纸残字,加上对PROE的自带帮助连蒙带猜,花了N天时间,掉了NxNxNxN根头发,终于把PROE/PROGRAM的用法给搞了个明白。现总结一下发上来,供各位兄弟参考。


云峰兄题目帖:https://www.icax.org/viewthread. ... A%D0%C4%B4%CA%B5%E4
各位兄弟看完此帖后可用这个题目练习一下。

[ 本帖最后由 袖珍天使 于 2006-1-20 17:44 编辑 ]

评分

参与人数 2技术 +2 收起 理由
IceFai + 1
云峰 + 1 精品文章

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 赞一下!赞一下!
2
发表于 2005-10-27 17:03:37 | 只看该作者
PROE/PROGRAM其实是一门很简单的程序设计语言。这门语言的基本词语总共就只有11个:Input……End Input、Relations……End Relations、Add……End Add、Execute……End Execute、If……End If、Massprop……End Massprop、Lookup_inst、Suppressed、Modify、Choose、Interact。所有的一切,都是这里11个词组合出来。
PROE/PROGRAM的入口,在2001里是“菜单管理器”—>PART(或Assembly)”程序”,在WF里是”工具””程序”.
我们先看一下一般的程序都是什么样子:
AD1(零件的)



AD2(组件的)

两图上可看到,程序可分成几个部份,第一部份是版本与文件信息.第二部份是一个Input……End Input语句.第三部份是一个Relations……End Relations语句.第四部份是若干个Add……End Add语句.第五部份是一个Massprop……End Massprop语句.
第一部份不用管它,系统自动生成的.第二部份就是设置变量的地方.第三部份就是设置关系式的地方.第四部份是管理所有的特征及零件的地方.第五部份是设置质量属性的地方.我们用PROGRAM的重点,就在第二/三/四这三块.
下面我先一个个说说这11个词都什么意思及如何使用.基本上兄弟们理解了它们的用法,也就自然而然理解了程序的设计与修改了.

[ 本帖最后由 袖珍天使 于 2005-10-27 17:12 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3
发表于 2005-10-27 17:03:43 | 只看该作者
第一个,IF……End If
这个就是各种编程语言里都有的大名鼎鼎的条件语句了.实际上它是:
IF 条件1
……(执行语句段1)
Else
……(执行语句段2)
End If.
其含义是:如果满足条件1,则执行第一段的各种语句,否则,执行第二段的各种语句.Else和第二段是可以没有的,但End If是不可少的,且一个IF对应一个End IF,其数量是相等的.IF语句是一个逻辑语句,使用它的目的就是实现分支设计.单独使用是没有意义的,它必须和其它的语句一起使用(也就是必须有执行语句段----至少有一句).它本身可以嵌套,因此也就可以实现多重条件的组合运用.

[ 本帖最后由 袖珍天使 于 2005-10-27 17:38 编辑 ]
4
发表于 2005-10-27 17:03:53 | 只看该作者
第二个,Input……End Input.
Input……End Input是一个复合词,它实际上是一个程序段,这个程序段以Input为第一行,以End Input为最后一行,中间的就是我们这个程序中需要人工输入的变量和变量类型以及相关提示信息.程序每次再生的时候,系统会提示我们输入这个做里列出的每一个变量的新值.典型的Input段如下:
Input
A Number
B
C String
D Yes-No
EndInput
这里有几点要记住:
A.所有的变量都要以字母开头.
B.变量的类型有三种:Number,String,Yes-NO.Number就是实数型,其值是任意一个实数,String就是字符型,取值是任意一个字符串,Yes-No就是布尔型,也就是取值为YES或NO之一.
C.如果设置时不指定变量类型(像上面的那个B),则系统当它是实数型.
D.当提示输入时我们不输入新值,则各个变量系统会取当前值,如是第一次运行时也不输入,则系统将实数型变量取值为0,布尔型变量取值为NO,字符串型变量取值为空.

[ 本帖最后由 袖珍天使 于 2005-10-27 17:38 编辑 ]
5
发表于 2005-10-27 17:04:06 | 只看该作者
在Input段中可使用IF……Else……End If,以实现选择性输入.
在Input段中也可为输入变量加提示,加提示要注意:
A.提示信息必须包含在引号里
B.提示信息必须紧跟在相应的输入变量之后.
示例:
Input
Hole  Yes-No
“请确认有无工艺孔:”
If Hole==Yes
Hole_Dia Number
“请输入孔直径:”
Hole_Num Number
“请输入孔数:”
Endif
……
End Input
(以上,先确认有无孔,如果有孔,再输入孔数与直径,如果无孔,则不用输入孔数与直径)

[ 本帖最后由 袖珍天使 于 2005-10-27 17:13 编辑 ]
6
发表于 2005-10-27 17:04:15 | 只看该作者
第三个,Relations……End Relations
这个词也是一个语句段,第一行是Relations,最后一行是End Relations,中间是零件/组件中需要用到的各种关系式.在零件/组件中加入的各种关系式都放在这里(不含草图关系式及阵列关系式).在编程时也可直接在这里增加关系,所有在这里的关系,都可以在”特征”-”关系”里编辑.如果一行关系式太长(最长80个字符一行),可以在行尾写一个反斜杠(\),然后接着在下一行写.示例如下:
Relations
A=”Part0007”
B=20.0
C=d5*5/d2
D=cos(d6)
End Relations
注:众所周知,Relations语句段中,也可使用IF语句.

[ 本帖最后由 袖珍天使 于 2005-10-27 17:39 编辑 ]
7
发表于 2005-10-27 17:04:24 | 只看该作者
第四个,Add……End Add
它又可细分为三种:Add Feature 特征名……End Add,Add Part 零件名……End Add,Add Subassembly 子组件名……End Add.它们也是语句段,第一行是Add Feature(Part/Subassembly) 特征名(零件名/子组件名),最后一行是End Add,中间是特征(零件/子组件)的具体信息,这些具体信息一般来说不用去管它.因为没有能让我们编辑的东西.
这个语句可与IF和Suppressed联用,以控制特征(零件/子组件)的显示与隐含.
对于特征,这个语句段里列出了特征的主要参数,如尺寸/拉伸深度等,但是,要记住的是,直接在这里改这些参数是没用的!!!
这里的特征名/零件名/子组件名,可以是字符型变量。如果是字符型变量的话,要用括号括起来,示例:
Add Part  (PartName)

[ 本帖最后由 袖珍天使 于 2005-10-27 17:15 编辑 ]
8
发表于 2005-10-27 17:04:33 | 只看该作者
第五个,Execute……End Execute

这个语句只用于组件中.它的作用是从组件向零件传递参数,以通过组件中的某些参数去控制构成组件的零件(的形状/尺寸……).它也是个语句段,第一行是Execute,最后一行是End Execute,中间的每一行是一个赋值语句.典型的结构如下:
Execute
Part变量名1=ASM变量名1
Part变量名2=ASM变量名2
……
End Execute
通常,在组件中的Input段和零件中的Input段,都设置相同的变量名,代表同一个参数.(这是为了方便,当然也可以不同,只不过不同的话就要小心点,以免搞错).然后将零件装配到组件中,再编辑程序,在对应的Add Part……End Add语句段前增加一个Execute语句段.这样,再生时,给变量输入新值,part的形状或尺寸就可以自动按要求变化.

[ 本帖最后由 袖珍天使 于 2005-10-27 17:15 编辑 ]
9
发表于 2005-10-27 17:04:41 | 只看该作者
第六个,Lookup_inst

这个实际上是PROE里的一个函数.它的取值是一个字符串,用于找出族表中符合指定条件的特定实例的名字.具体的语法如下:
Lookup_inst(“Name”,matchmode,Valuename1,Value1,Valuename2,Value2……)
Name:含有族表的模型的名字,它必须带后缀,也就是,必须写成如”PRT0002.prt”,”ASM0007.asm”这样,否则,不能得出正确结果.
Matchmode:设置查找原则,取值为-1,0,1.”-1”表示查找小于等于给定值且最接近给定值的实例,”0”表示查找等于给定值的实例,”1”表示查找大于等于给定值且最接近给定值的实例.
Valuename1/2/3...:是族表参数名,基本上也就是族表中各列的第一行那个东东.
Value1/2/3…:是用来匹配的值
示例:零件Part27.prt中,族表按尺寸d0=50,70,90给了三个实例,实例名分别为Part27-1,Part27-2,Part27-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
注意:以上的”Part27.prt”如果写成”Part27”的话,是得不出结果的.

[ 本帖最后由 袖珍天使 于 2005-10-27 17:16 编辑 ]
10
发表于 2005-10-27 17:04:49 | 只看该作者
第七个,Suppressed
这个就是一个词,即”压缩”/”隐含”.它的作用跟它的词义一样,用于把一个特征/零件/子组件隐含起来,效果与在模型树里点右键用”隐含”相同.它不能单独用,必须与Add……End Add语句一起使用.当想隐含哪个特征/零件/子组件时,只要在它对应的Add……End Add语句的第一行的Add后加上Suppressed,再生之后它就不见了.
要注意的是,因为它的效果是”隐含”不是”隐藏”,所以用的时候要注意了,如果Suppressed了父亲而不Suppressed儿子的话,再生就要报错的.
Suppressed一个组或阵列中的一个子特征,必须将所有子特征全部Suppressed,对于组,因组标识在程序里还有个单独的Add……End Add语句,它也要Suppressed,否则报错.
但如果在Config里加一个设置:del_gp_memb_ind=yes,则组的各个子特征可以单独Suppressed.
Suppressed之后要恢复,可直接在模型树里“恢复”,也可在程序里将Suppressed去掉。

[ 本帖最后由 袖珍天使 于 2005-10-27 17:17 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-2-3 02:07 , Processed in 0.030421 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表