|
Pro/Engineer平台的菜单系统十分庞大,层次、结构也相当复杂,如何构建应用软件的菜单以方便、快捷地实现设计意图成为Pro/Engineer平台上进行二次开发的关键技术之一。Pro/Engineer提供了功能强大的二次开发包-Pro/Toolkit。它以C语言为依托,封装了许多针对Pro/Engineer底层资源调用的库函数与头文件,借助第三方的编译集成环境进行调试。Pro/Engineer平台上的菜单开发信息是以菜单资源文件为载体(以.mnu和.aux为后缀)。菜单资源文件有其规范的格式,具体如下: 菜单标识名→菜单标识文本4 l$ e1 h- t: u6 P+ K
#! Y7 x1 w, `) Y
#
* f8 T9 a/ x, \8 U 选项名 [覆盖选项名] →菜单选项显示文本
! w$ j8 }, `- m) E (提示信息) →鼠标划过或停留在菜单项时显示的提示文本2 B. x8 a3 w8 w, A0 p `: h
[覆盖提示信息]
' ]& O+ ~* C3 N* G7 X& `5 B9 t 选项名 [覆盖选项名]
7 g$ g$ L$ e+ H1 ~* Z9 J8 H2 T4 m- F" s …. K/ N; m" d3 U) X2 ?
! }- m" k) u; C* H/ T. z$ i 所有菜单资源文件均需菜单载入、菜单项定义、完成动作定义三个基本流程,才能在Pro/Engineer菜单系统中注册,然后通过库函数进行激活等相应操作。菜单项可相互激活,由主及次构建成所需层次式菜单系统。上述菜单开发机制能快速定义出菜单系统的架构,然后根据实际需要将[覆盖选项名]和[覆盖提示信息]加上,以替换原选项名和原提示信息,十分灵活地实现设计意图,而程序源代码无需修改,极大地提高了开发效率。2 K' C' [ `" C6 F5 m5 a
! [7 {2 @' X S/ p5 E/ b% Z& D4 i
一、Pro/Engineer菜单分类1 L1 r2 ?3 t" L( o! v! z, p
# N3 c L$ z! F& X 依据新建菜单与Pro/Engineer原始菜单的相互关系,菜单可分为如下两大类:+ ^! L: K/ q+ q
" U: t) Y- S1 D) }6 P( ^1 N. w 主菜单:完全独立于原有菜单,层次结构完备,对应于后缀名.mnu的菜单资源文件,用以构建新的应用系统。0 z% J2 C8 B# _
g: N- t; N; J5 @ 辅菜单:对Pro/Engineer原有菜单项的增加和修改,依托于原有的菜单体系,对应于后缀名为.aux的菜单资源文件,是对Pro/Engineer原有功能的补充和修改。+ z0 l; Y) v `1 d+ o- S9 g! f5 h
: H8 n+ J( `" [& E. p 以对鼠标点击动作的不同响应和外观差异,菜单又可如下细分:9 i- t7 S: M; ~8 x6 B! O$ p
, U0 d. a7 Q+ V7 E" V, d! L
强制菜单:该菜单弹出后,必须选定其中某一菜单项,否则无法击活屏幕上其它菜单栏中的任一菜单项。其目的在于减少误操作的可能性,保证设计流程的连续性和正确性,广泛应用于设计过程中重要参数和型号的选择等必不可少的步骤。
0 `# J6 W5 J8 J7 g& \* t, `
, I4 i- u( I- f5 w. B- ` o 自由菜单:此类菜单弹出后,如果在未点击其上菜单项的情况下,击活了屏幕上另外的菜单,该自由菜单消失,软件按另外菜单的定义进行响应。其目的在于方便设计过程中一次要信息的修改和重定义,以体现设计师的突发灵感。
/ ~2 _" A* i% d3 a3 i
* ]+ A' G! ~5 @! T 变量菜单:设计过程中常常涉及到一些全局性的参数或变量设定,对于这一类设置有其专用的菜单类别。这类变量菜单均带有标识框以显示参数的设定,常用于显示的控制和字体的指定等设计环境的选择。3 Y4 z7 \# ^& [5 ~& Q- w
# k' c( e5 {9 {) O# w' ? 复选菜单:赋值菜单仅返回一个值,而复选菜单可返回多个值,且不同类数值的数值项在菜单外观上有区别,不易混淆。其目的在于提供一种参数类型多,但同一类参数可选项少的设计表达手段,是复杂设计过程中必不可少的技术之一。( Q* N" W/ [! d1 T! ]
( M3 x* J' U* ?4 }7 [+ B& J% J) ] 赋值菜单:此类菜单对鼠标点击的响应是数值的返回,而非函数的调用。它对应于产品设计中的参数和类型选择,其菜单项的显示文本即为返回值或可选择类型,在标准化零部件的设计过程中频繁出现。" I: S9 A, _. x# q! ~8 d5 _; t3 I% u. w
! P. J1 x* s0 P# O# h' S 菜单上的菜单项,在特定的领域或设计流程中,常出现相互矛盾的情形,Pro/Engineer通过设定菜单项禁选属性来处理这类异常,并灰显该菜单项,以避免设计过程的混乱,提高系统的健壮性。而且因划分标准不同,应用软件的某一菜单可同时属于多类菜单。
. {& _' A' [' r6 _3 e 8 Y7 W' ~2 x& e- M% Z, Y( _/ R- B
二、菜单技术实践/ R. h2 D8 ?' H, ~. M
" j, W" s( p/ i; z, d 笔者开发的齿轮设计系统是Pro/Engineer(V19.0)用户化设计的典型应用,本文以此为例对上述菜单技术进行详细说明,下图为该系统的部分菜单示例:0 r5 q( v! R. D
! m* X" F* {4 @2 s) |/ s 菜单①是Pro/Engineer菜单系统中的主控菜单,其上增加的Gear Design
, d" E% G6 m% m) [" M) A
, s+ |1 w) I1 t% r! F& O( L0 f System菜单项是对主控菜单的自定义补充,点击该项即进入用户开发的齿轮设计系统,之所以选用辅菜单方式在主控菜单上增加菜单项,其目的是使用户可方便地切换于开发平台和应用系统之间,提高设计自由度。; e% d; Z3 Y3 f+ G
+ a6 _' z, C6 G# G5 w
菜单②是齿轮设计系统的主控菜单,整个设计周期中均可见。菜单项的排列参照齿轮设计的一般流程,方便用户操作。此菜单完全独立于原有菜单体系,为用户新建菜单。/ }! V7 g- `$ I+ b% s
' r8 K, [2 v8 P* p! _" {
菜单③是参数选择(Parameter Choice)的主控菜单,在设计系统中属二级菜单,也是对②菜单上Parameter ( q/ D# ^) {+ [. G" e8 X% P4 J% B" o0 n
* x1 _: l1 B# G
Choice菜单项的响应。菜单③的菜单项列举了齿轮设计过程中涉及的重要参数,并注明了常用的英文简明表达,以贴近中国人的设计习惯。& b- e* i$ }6 I% U s
8 u! K; k% S8 K+ P. }/ M
菜单④是变量菜单的典型应用,设计要求的千差万别,令一般菜单难以全面描述,而变量菜单可使用户在众多可能项中选取实际的已知项,拓广了设计系统的应用范围,也增强了设计流程的智能性。菜单项旁的标识框说明了已知条件的实际构成状况,方便了用户的复查。
6 G! w5 L+ y2 o! q! g2 o P% A# Y8 i
8 k2 u* _& H/ Z7 _' R1 i 菜单⑤是菜单③的下级菜单,用以设定齿宽系数。其强制性保证了设计的完整。菜单⑤菜单项的设置综合考虑了硬、软两种齿面条件下齿轮的对称、非对称和悬臂六种状态,充分体现了复选菜单的灵活性。
8 t. ~4 w. Q" i9 o5 D) ? 3 S: N: i V5 A: ~& ?- n( `6 a- E8 T
菜单⑥是典型的赋值菜单,在本例中用于齿轮精度等级的选择,并通过菜单提示列出各精度等级相应的适用范围和加工要求,以方便设计、为增强设计的灵活性,菜单⑥被定义为自由菜单。下附菜单⑥的菜单资源文件。7 H# O3 X* ]! w0 L5 F7 A8 S
PRECISION#LEVEL
# [& @! |) }) l U& Y- ^$ z#
1 s v' N2 ?& b3 t- ^5 o- ^- [#+ \/ g% g" w& `% h
-GRADE#2
5 d9 J3 c f0 x/ Q- T: g& n" Y! f3 jGEAR USED FOR CHECK.HIGH SPEED AND HEAVY LOAD.
( n. ^3 f: b% F- u- G0 H8 B& j# 4 M h2 j2 z7 Y" r7 Z4 h- b; e
… ' [2 }! Y7 s9 e7 Y! f+ g; |9 u
-GRADE#12 ) Q! N+ _+ \5 H# c" q; R1 V9 D
GEAR USED FOR LOW SPEED.IT’S AN UNIMPORTANT. - Q# ^4 `) J2 r# o5 q9 D, D
#
0 ^+ S& ~4 Y e; H. H: C8 cQUIT , w+ ? U: u, v! P+ Z+ z
QUIT THE VALUE MENU
7 w3 {; i0 [! H- h" o2 V# |
|