文档库 最新最全的文档下载
当前位置:文档库 › 机械毕业设计893基于ProE二次开发的端盖参数化模型的实现

机械毕业设计893基于ProE二次开发的端盖参数化模型的实现

目录

第一章绪论 (1)

1.1 三维CAD技术 (1)

1.1.1CAD技术的发展 (1)

1.2 课题背景及意义 (2)

1.3 应用程序的开发工具 (3)

1.4 课题的主要研究内容 (3)

第二章Pro/TOOLKIT二次开发的基础理论 (4)

2.1 Pro/TOOLKIT的基本知识 (4)

2.1.1 Pro/TOOLKIT简介 (4)

2.1.2 Pro/TOOLKIT的工作模式 (4)

2.1.3 Pro/TOOLKIT对象和动作 (4)

2.1.4 对象句柄 (5)

2.1.5 Pro/TOOLKIT函数返回值 (5)

2.2 创建Pro/TOOLKIT应用程序的基本方法 (5)

2.3 Pro/TOOLKIT信息文件的建立 (6)

2.4 编译和连接设置 (7)

2.5 编制注册文件及应用程序的运行 (7)

2.5.1 编制注册文件 (7)

2.5.2 应用程序的运行 (8)

第三章用户界面设计 (9)

3.1 菜单的设计 (9)

3.1.1 向菜单栏添加菜单条 (9)

3.1.2 向菜单条下添加下级子菜单 (9)

3.1.3 端盖菜单设计 (9)

3.2 对话框的设计 (13)

3.2.1 MFC对话框 (13)

3.2.2 UI对话框 (13)

3.3 端盖对话框设计 (15)

3.3.1 构想 (15)

3.3.2 创建方法 (15)

第四章端盖的开发 (26)

4.1 总体方案 (26)

4.2 基于三维模型的参数化程序设计分析 (26)

4.2.1 端盖三维模型的建立 (27)

4.2.2 端盖参数化程序设计 (31)

4.3 注册并运行程序 (37)

4.4 操作流程 (37)

第五章零件图形清单 (38)

结束语 (42)

参考文献 (43)

附录I 程序清单 (44)

附录Ⅱ外文文献翻译 ............................................................................ 错误!未定义书签。附录Ⅲ外文文献原文 ............................................................................ 错误!未定义书签。

基于Pro/E二次开发的端盖参数化模型的实现

摘要:CAD技术在机械设计中发挥着越来越突出的作用。而三维实体模型比二维图形能更直观、更全面地反映设计意图,并且在三维模型的基础上可以进行零件装配、干涉检查、有限元分析、运动分析等高级的计算机辅设计工作,因此目前机械设计中广泛采用三维设计。而目前我国Pro/E应用日益普及,而二次开发严重滞后。所以,进行二次开发是非常必要的。

论文介绍了其二次开发工具Pro/TOOLKIT,并以凸缘端盖为例,详细的论述了应用Pro/Toolkit进行菜单开发、对话框开发,即UI对话框,以及如何在VC++环境下编制C语言程序以激活、调用对话框界面,设计出更加友好透明的用户界面,方便快捷地实现端盖的参数化设计和修改,准确再生出新的实体模型。

关键词:Pro/ENGINEER、Visual C++、Pro/TOOLKIT、二次开发、端盖

The Realization of Cover Parametric Parts Based on the

Redevelopment of Pro/E

Abstract:CAD technology is made more and more use in mechanical design.Design idea can be expressed more visualized and more comprehensive in three-dimensional full-scale mock-up than in two-dimensional drawing ,and based on three dimensional full—scale mock up,many other advanced CAD such as component assembly,interference check,finite element analysis,motion analysis and so on can be proceed.Hence,three—dimensional design is widely used in mechanical design .However,at the present the application development severely lags behind the increasing popularization of the Pro/E application in our country .So, it is very necessary to develop the Pro/E application.

This paper introduces the customization tool Pro/TOOLKIT, and taking cover flange for example, This article provides an example to introduce the technique how to design UI Dialog Boxes By way of Pro/E's secondary development tool Pro/TOOLKIT as well as compile c programs to activate and pick up UI dialog boxes in Visual C++. Taking Pro/Toolkit as development tool, a friendly design interface of Cover is established. This paper investigates the method of establishing parametric 3 D model and programming based on 3D model in Pro/E,auto-modeling of 3D parts is realized using Pro/Toolkit.

Keywords:Pro/ENGINEER、Visual C++、Pro/TOOLKIT 、secondary development

第一章绪论

1.1 三维CAD技术

设计和生产的方法随着计算机的迅速发展每天都在发生着显著的变化。以前许多只能靠手工完成的作业,逐渐通过计算机实现了高效化和高精度化。这种利用计算机来达到高效化、高精度化,实现自动化设计、生产以及解析计算的方法称为CAD(Computer Aided Design,计算机辅助设计)。CAD是指利用计算机的硬件和软件进行的设计活动,它从根本上改变了过去的手工绘图、发图、凭图纸组织整个生产过程的技术管理方式,使之变为以统一的产品数据库为核心的交互式产品设计、分析、制造和维护的过程。它的迅速发展和广泛应用,给工程设计制造业带来了蓬勃生机,使传统的产品设计方法与生产组织模式发生了深刻的变革。

1.1.1CAD技术的发展

CAD技术起步于50年代后期,自从计算机出现之后人们就不断地将计算机技术引入机械设计、制造领域。因为它顺应生产力的发展,在其产生之后就得到了迅速地发展。CAD技术经历了四次飞跃:曲面造型系统、实体造型技术、参数化技术、变量化技术。

(1)曲面造型系统

70年代是飞机和汽车工业的蓬勃发展时期。期间飞机及汽车的制造中遇到了大量的自由曲面问题,此时法国人提出了贝赛尔算法,法国的达索飞机制造公司的开发者们借此算法在二维绘图系统的基础上,开发出以表面模型为特点的自由曲面建模方法,推出了三维曲面造型系统CATIA。

(2)实体造型技术

表面模型基本上解决CAM的问题,但是由于表面模型技术只能表达形体的表面信息,很难准确地表达如质量、重心、惯性矩等零件的其他特性。基于对CAD一体化技术发展的探索,SDRC公司于1979年发布了世界上第一个完全基于实体造型技术的大型CAD软件-I-DEAS。实体造型技术能够精确表达零件的全部属性,给设计带来了很大的方便。

(3)参数化技术

正当实体造型技术在CAD系统中广泛运用时,出现了一种比无约束自由造型更好的算法-参数化实体造型方法。它主要的特点是:基于特征、全尺寸约束、全数据相关、尺寸驱动设计修改。参数化技术彻底克服了自由缄默的无约束状态,由尺寸决定实体造型的几何形状。尺寸驱动已经成为当今造型系统的基本功能。如果想修改零件形状的话,只需修改一下尺寸的数值就可以实现形状上的改变。这种新构想最先在

PTC公司(Parametric Technology Corp)的软件PRO/ENGINEER中成为现实。由于参数化技术的成功应用,使得它很快成为CAD业界的标准,许多软件厂商纷纷追赶。

(4) 变量化技术

变量化造型技术保留了参数化技术基于特征、全数据相关、尺寸驱动设计修改的优点,但是在约束定义方面做了一定的改变。变量化造型技术将所需定义的尺寸“参数”进一步区分为形状约束和尺寸约束,而不仅仅是用尺寸来约束全部几何。通常在新产品开发的概念设计阶段,设计者首先考虑的是设计思想及概念,并将其体现在某些几何形状之中。但是这些几何形状的严格的尺寸定位关系并不能在设计的初始阶段完全确定,所以希望在初始阶段能够允许欠尺寸约束的存在。事实上,参数化技术和变量化技术已经成为了当今主流CAD软件的两大流派。两种造型理论相互依存,共同发展。我国CAD 技术的引进是从60年代开始的,最早起步于航空工业,最近几年发展很快,现已在机械、电子、建筑、汽车、服装等行业逐步进入实用阶段。

1.2 课题背景及意义

Pro /ENGINEER是美国PTC(Parametric Technology Corporation)公司于1988年开发的参数化设计系统,是一套由设计至生产的机械自动化软件。参数化设计就是将零件尺寸的设计用参数来描述,并在设计修改时通过修改参数的数值来更改零件的外形。Pro/ENGINEER与传统的CAD系统仅提供绘图工具有着极大的不同,它提供了一套完整的机械产品解决方案,包括机械设计、板金设计、加工制造、机构分析、有限元分析等,它使产品的设计效率大大提高,使产品在设计初期具有更多的灵活性,保证在日后根据系统要求进行相应的更改和计算;另外在产品的设计方案阶段,可以形象的表现系统的组成特点,而在产品的生产阶段可以方便与加工中心数据连接。

Pro/ENGINEER的特性如下:3D实体模型,单一数据库,以特征作为设计的单位, 参数式设计,数据管理(Data Management),装配管理(Assemble Management),工程数据库再利用(Engineering Data Reuse),易用性(Ease of Use),硬件独立性(Hardware Independence)。

由于Pro/ENGINEER的功能强大并且通用性非常强,然而,由于Pro/ENGINEER 软件的通用性,使得该软件在进行具体的产品设计时感到不方便。对系列化产品,可以通过抽取关键的参数值,再依设计规范计算出各尺寸值并传递给下级零件和子装配,自动的将模型建造出来。为了使Pro/ENGINEER软件能在特定的企业单位的特定产品设计中最大限度的发挥潜力,创造效益,需Pro/ENGINEER进行二次开发,换句话说,二次开发就是对Pro/ENGINEER进一步的充实、完善。基于上述原因,利用Pro/TOOLKIT工具箱及VC++开发操作简单的端盖是很有必要。

1.3 应用程序的开发工具

系统程序模块的设计选择Visual C++6.0作为开发平台。Visual C++6.0是运行于Windows上的交互式可视化集成开发环境,是美国Microsoft Visual Studio的一部分。像其它的可视化开发环境一样,Visual C++6.0集程序的代码编辑编译连接调试于一体,给编程人员提供了一个完整而又方便的开发界面和许多有效的辅助开发工具。VC++6.0的应用程序向导(App Wizard)可以为很大一部分类型的程序提供框架代码,用户不需要书写代码,只需要几个按钮就可以生成一个完整的可以运行的程序。在Pro/TOOLKIT中,PTC向用户提供了大量的C语言函数库,函数采用面向对象的风格。通过调用这些底层函数,用户能方便而又安全地访问Pro/ENGINEER的数据库及内部应用程序,进行二次开发,扩展一些特定功能。

1.4 课题的主要研究内容

本课题的主要研究内容是端盖的开发设计,当用户选择不同的样式后,应用程序可以在基础模型上自动生成相应的端盖。具体工作包括:

(1)Pro/TOOLKIT基本特点和基本数据结构的研究。分析Pro/TOOLKIT内部的基本数据结构、功能函数及其使用方法;探讨Pro/TOOLKIT中的一些基本的自定义对象。

(2)用户界面的设计。研究菜单信息文件,制作端盖的菜单界面;研究对话框资源文件,创建主对话框,并在主对话框中弹出一个自定义对话框;研究Pro/TOOLKIT 与Visual C++6.0的接口技术;在VC中制作Pro/TOOLKIT用户界面。

(3)参数化建模的研究。Pro/ENGINEER软件对于每个模型都有一个主要设计步骤和参数列表,所以要先绘制三维模型,定出参数列表;设计端盖程序,实现自动加载菜单、选择不同的端盖、弹出对话框、修改端盖模型参数值、生成零件等功能。

第二章 Pro/TOOLKIT二次开发的基础理论

2.1 Pro/TOOLKIT的基本知识

2.1.1 Pro/TOOLKIT简介

Pro/TOOLKIT是PTC公司为Pro/ENGINEER软件提供的用户化开发工具箱,该工具箱为用户程序及第三方程序提供了与Pro/ENGINEER的无缝连接。用户程序或第三方的程序是用C语言编写的。Pro/TOOLKIT提供了一个C语言的函数库,该函数库能够使用户或第三方的应用程序以一种可控的、安全的方式访问Pro/ENGINEER的数据库和应用程序。用户或第三方通过C程序代码扩充Pro/ENGINEER系统的功能,开发基于Pro/ENGINEER系统的应用程序模块,从而满足用户的特殊要求。Pro/TOOLKIT采用的是功能强大的面向对象的方式来编写的。因此,用来在Pro/ENGINEER和应用程序之间传递信息的数据结构对应用程序来讲是不可见的,而只能通过Pro/TOOLKIT中的函数来访问。Pro/Toolkit支持在windows2000NT/XP操作系统中使用C和C++语言设计程序,采用Microsoft Visual C++6.0的集成环境下完成程序的设计、调试和编译。

2.1.2 Pro/TOOLKIT的工作模式

Pro/TOOLKIT有两种工作模式,即同步模式和异步模式。

同步模式分为两种模式,一种是标准的使用模式,即DLL模式。Pro/TOOLKIT 应用程序与Pro/ENGINEER的集成是通过DLL模式来实现的,在DLL模式中,通过编译和连接Pro/TOOLKIT的C代码生成一个目标文件,该目标文件在Pro/ENGINEER 启动时与Pro/ENGINEER连接在一起,就像是Pro/ENGINEER本身的程序一样;Pro/TOOLKIT应用程序和Pro/ENGINEER之间的信息交换是直接通过函数调用来实现的。另一种模式是多进程模式。

异步模式分为简单异步模式和全异步模式。

本课题通过菜单对话框向Pro/ENGINEER发送消息,采用同步DLL模式。

2.1.3 Pro/TOOLKIT对象和动作

Pro/TOOLKIT采用面向对象的程序设计方法。对象( Object)和动作(Action)是Pro/TOOLKIT中最基本的概念。

Pro /T OO LKIT的对象实质上是一种类型为结构体的数据,结构体中的成员描述了该对象的属性。所有对象的命名约定为Pro+<对象名>,其中对象名用英文单词表示,第一个字母大写,如ProFeature(特征对象)。

Pro/TOOLKIT对象执行的某种特定操作称为动作,动作的执行是通过调用Pro/TOOLKIT函数库提供的C函数来实现了。与动作相关的Pro/TOOLKIT函数名约

定为:Pro+<对象名>+<动作>。特别要注意的是Pro/TOOLKIT函数的参数规则,规定为:ProFunction(参数1、参数2、参数3),其中第一个参数用来识别对象(通常为ID值),输入参数在输出参数之前。

2.1.4 对象句柄

每个Pro/TOOLKIT对象都对应于一个结构体,定义该结构类型的一个具体的结构体变量称之对象句柄。按照对象句柄的定义和使用方式分成两种类型:Ohandle(Opaque Handle,非透明句柄)和DHandle(Database Handle,数据结构句柄)。

非透明句柄(Opaque Handle)是使用Pro/ENGINEER数据结构的内存地址引用Pro/ENGINEER对象,这种方式最简单。使用非透明句柄Pro/TOOLKIT应用程序只能获得该对象的内存地址,不能访问该结构体具体成员,其目的是防止PIDITOOLKIT 应用程序访问结构体中的成员。其特点是使用简单高效,缺点是由于它是一个内存指针,所以具有可变性。

数据结构句柄(DatabaseH andle)则可访问该对象结构体的具体成员。数据结构句柄是一个十分清晰的数据结构,它包含了足够的信息—包括类型、整型标识符和指向所属模型的句柄,由于数据结构句柄至少包含一个整型标识,所以它具有稳定不变的优点。当利用Pro/TOOLKIT在Pro/ENGINEER中创建一个包含很多信息的对象时,非常重要的一点就是必须先建立该对象的所有相关信息,然后把这个对象添加到Pro/ENGINEER数据库中去。然而采用面向对象技术的Pro/TOOLKIT不允许直接访问这些结构的内容。

2.1.5 Pro/TOOLKIT函数返回值

大多数Pro/TOOLKIT函数的返回值类型为ProError,用来表示调用函数执行状态。最常用返回值是PRO_TK_NO_ERROR,表示函数调用成功。在程序中,通过检查函数的返回值不仅便于在调试是找出错误,更重要的是可以避免在执行时出现异常情况,提高了程序的可靠性。

2.2 创建Pro/TOOLKIT应用程序的基本方法

创建基本方法;利用Make文件创建Pro/TOOLKIT应用程序;利用VC向导创建Pro/TOOLKIT应用程序。

采用Make文件的方法创建Pro/TOOLKIT应用程序必须手工修改make文件,程序的设置与调试均不方便,且不能充分利用VC的资源。所以本课题利用VC向导创建Pro/TOOLKIT应用程序。

在Visual C++6.0环境下新建一个dll工程。

(1)进入Visual C++6.0集成开发环境,选择“File/New...”选项,启动“New”对话框。

在“New”对话框中选择“Projects”选项卡,选择MFC AppWizard(dll)项。在“Project nam”输入工程文件名,在“Location”输入框中输入路径。单击OK按钮。

(2)在“MFC AppWizard”对话框中选择“Regular DLL using shared MFC DLL”单选框,使Pro/TOOLKIT应用程序使用共享的MFC。单击Finish按钮,进入New Project Information窗口后,单击OK按钮,完成工程文件框架的建立。

(3)选择FileView打开VC应用程序向导自动生成程序文件.

VC应用程序设计向导在FileView中自动加入了ReadMe.txt、StdAfx.cpp和以工程文件名为前缀的cpp资源文件、def模块定义文件以及rc资源文件等。如下图2.1:

图2.1 VC文件图

2.3 Pro/TOOLKIT信息文件的建立

信息文件是一种ASCII码文件,用来定义菜单项、菜单项提示等信息,可以用Word记事本和写字板等文字处理软件建立,也可在VC的集成开发环境中建立,但必须以纯文本格式保存且信息文件以四行为一组。

其含义分别如下:

第一行:Pro/ENGINEER系统可以识别的关键字,该关键字必须与该信息文件函数中的相关字符串相同。

第二行:再菜单项或菜单项提示上显示的英语文本。

第三行:另一种语言的译文或为空。

第四行:当前的Pro/ENGINEER版本为空。

其中,第二﹑第四行的语言显示取决于系统环境变量lang的设置。同时,信息文件必须位于\text或\text\文件夹,为chinese-cn时表示信息为中文,为usascii表示信息为英语。由此,可以通过系统的环境变量控制显示的语种,不必修改程序。

2.4 编译和连接设置

设置包含文件路径,加入“\PROTOOLKIT\INCLUDES”;设置库文件路径,加入“\PROTOOLKIT\I486_NT\OBJ”;设置连接所需库文件,加入“mpr.lib protk_dll.lib”两库文件;在菜单“Project/Settings”的“Link”选项页设定强制文件输出,即选中“Force file output”的复选项。

2.5 编制注册文件及应用程序的运行

2.5.1 编制注册文件

在Pro/ENGINEER中运行Pro/TOOLKIT应用程序,必须先进行注册。注册文件的作用是向Pro/ENGINEER系统传递应用程序的信息。一般可只选择Name EXEC_FILE TEXT_DIR STARTUP ALLOW_STOP REVISION和END项即可。保存注册文件时,要以.dat为扩展名。建立端盖的注册文件如图2.2:

图2.2 端盖注册文件图

2.5.2 应用程序的运行

1注册运行分为自动注册和手动注册。端盖采用自动注册,并将注册文件名取为“Protk.dat”将此文件位于Pro/ENGINEER的起始位置设定的目录。其注册文件设置DELAY_START的值为FALSE,应用程序自动运行。

2卸载应用程序。将注册文件中ALLOW_STOP设为TRUE,可以手工终止运行。如果启动应用程序失败,可以选择信息按钮来显示应用程序的有关注册信息,以便找出错的原因。

第三章用户界面设计

Pro/ENGINEER可以利用Pro/TOOLKIT提供的菜单UI对话框以及VC的可视化界面技术,设计出方便实用的人机交互界面,从而大大提高系统的使用效率。在设计人机交互界面时,要尽量能使操作自然简便快捷。

3.1 菜单的设计

菜单是Pro/ENGINEER的主要用户界面,Pro/TOOLKIT提供了一系列菜单操作函数,允许应用程序创建何管理菜单。在应用Pro/TOOLKIT对Pro/ENGINEER进行开发的过程中,添加用户自定义菜单是最常用的技术。菜单在Pro/ENGINEER界面上的生成代表着动态链接库加载成功,这是进行后续工作的基础。

3.1.1 向菜单栏添加菜单条

Pro/ENGINEER是一个不断发展不断更新的软件,某个版本下有的菜单在另外一个版本下可能没有,因此,如果用户自定义菜单依赖某个菜单条,很有可能在另外一个版本中就不能正常使用。这样只能修改应用程序来适应这种变化,其软件的通用性较差。因此,决定在Pro/ENGINEER界面上添加新的菜单条。

菜单条是Pro/ENGINEER菜单体系的最顶层菜单,其创建的方法是:直接调用ProMenubarMenuAdd()函数向Pro/ENGINEER添加所需的菜单,要实现函数的功能,就必须将改按钮和命令捆绑在一起。该命令调用某个函数实现按钮功能,在Pro/TOOLKIT中,完成命令添加的函数是ProCmdAction(),函数调用成功返回PRO_TK_NO_ERROR(0),否则返回PRO_TK_GENERAL_ERROR(-1)。

3.1.2 向菜单条下添加下级子菜单

端盖分为嵌入闷盖、嵌入透盖、凸缘闷、凸缘透盖,不可能每个都建立一个菜单条。因此必须添加下级菜单以达到建立一个自然便捷的界面的目的。调用ProMenubarmenuMenuAdd()函数,并在此菜单下添加菜单项。

3.1.3 端盖菜单设计

在旁边插入一个菜单条(UserMenu)“Pro/e二次开发(&E)”,在其下添加一个下级子菜单(SubMenu )“端盖”。在子菜单下建立四个菜单按钮:PushButton1嵌入闷盖,PushButton2嵌入透盖,PushButton3凸缘闷盖,PushButton4凸缘透盖。建立的程序清单如下:

/*=========================================================*\ FUNCTION: user_initialize()

\*=========================================================*/ extern "C" int user_initialize()

{

ProError status;

ProFileName MsgFile;

uiCmdCmdId PushButton_cmd_id1,PushButton_cmd_id2,

PushButton_cmd_id3,PushButton_cmd_id4;

ProStringToWstring(MsgFile, "Message.txt");//设置菜单信息文件名

/*=========================================================*\ 添加菜单条

\*=========================================================*/ status=ProMenubarMenuAdd ("UserMenuBar", "UserMenu",

"Utilities", PRO_B_TRUE, MsgFile);

/*=======================================================*\

菜单条的下级子菜单设置

\*=========================================================*/ //添加下级子菜单项

ProMenubarmenuMenuAdd("UserMenuBar", "SubMenu", "SubMenu",

NULL, PRO_B_TRUE, MsgFile);

//设置菜单按钮的动作函数

ProCmdActionAdd("PushButtonAct1",(uiCmdCmdActFn)Duangai1Fn, uiCmdPrioDefault,AccessAvailable,

PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id1);

//添加菜单按钮

ProMenubarmenuPushbuttonAdd("SubMenu", "PushButton1", "PushButton1", "Adding a push button to the ProE menu bar", NULL,

PRO_B_TRUE, PushButton_cmd_id1, MsgFile);

//设置菜单按钮的动作函数

ProCmdActionAdd("PushButtonAct2",(uiCmdCmdActFn)Duangai2Fn, uiCmdPrioDefault,AccessAvailable,

PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id2);

//添加菜单按钮

ProMenubarmenuPushbuttonAdd("SubMenu","PushButton2","PushButton2", "Adding another push button to the ProE menu bar",NULL,

PRO_B_TRUE, PushButton_cmd_id2, MsgFile);

//设置菜单按钮的动作函数

ProCmdActionAdd("PushButtonAct3",(uiCmdCmdActFn)Duangai3Fn, uiCmdPrioDefault,AccessAvailable,

PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id3);

//添加菜单按钮

ProMenubarmenuPushbuttonAdd("SubMenu","PushButton3","PushButton3", "Adding the third push button to the ProE menu bar",NULL,

PRO_B_TRUE, PushButton_cmd_id3, MsgFile);

//设置菜单按钮的动作函数

ProCmdActionAdd("PushButtonAct4",(uiCmdCmdActFn)Duangai4Fn, uiCmdPrioDefault,AccessAvailable,

PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id4);

//添加菜单按钮

ProMenubarmenuPushbuttonAdd("SubMenu","PushButton4", "PushButton4", "Adding the forth push button to the ProE menu bar", NULL,

PRO_B_TRUE, PushButton_cmd_id4, MsgFile);

return status;

}

/*=========================================================*\ FUNCTION: user_terminate()

\*=========================================================*/ extern "C" void user_terminate()

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

}

/*=========================================================*\ FUNCTION: AccessAvailable (菜单项的访问权限设置:可选)

\*=========================================================*/ static uiCmdAccessState AccessAvailable (uiCmdAccessMode access_mode)

{

return (ACCESS_A V AILABLE);

}

建立端盖的菜单信息文件(中文版)如下:

SubMenu

SubMenu

端盖

#

PushButton1

PushButton1

嵌入闷盖

#

Adding a push button to the ProE menu bar Adding a push button to the ProE menu bar

嵌入闷盖

#

PushButton2

PushButton2

嵌入透盖

#

Adding another push button to the ProE menu bar Adding another push button to the ProE menu bar 嵌入透盖

#

PushButton3

PushButton3

凸缘闷盖

#

Adding the third push button to the ProE menu bar Adding the third push button to the ProE menu bar 凸缘闷盖

#

PushButton4

PushButton4

凸缘透盖

#

Adding the forth push button to the ProE menu bar Adding the forth push button to the ProE menu bar 凸缘透盖

#

创建端盖菜单如下图3.1:

图3.1 模型菜单图

3.2 对话框的设计

弹出式对话框是目前最先进最流行的一种人机交互方式,它能提供图形与文字共存的可视化环境,使操作更为自然快捷。在进行Pro/TOOLKIT程序设计时,有两种方法建立对话框,一种是通过VC提供的MFC可视化对话框设计技术,另一种是通过Pro/TOOLKIT提供的用户界面对话框(User Interface Dialog Boxes,简称UI对话框)。

3.2.1 MFC对话框

MFC是VC++程序的一个重要的软件资源,为开发Windows应用程序提供了强大的支持,使用MFC可以实现程序界面的可视化设计。MFC对话框作为一种窗口,具有窗口的一切功能,与UI对话框相比,使用MFC对话框界面布局更加容易,设计﹑调试都比较容易。但它建立的对话框与Pro/ENGINEER的风格不一样,不利于用户的操作。

3.2.2 UI对话框

利用UI对话框技术可以在Pro/TOOLKIT应用程序中设计出风格与Pro/ENGINEER系统本身具有的对话框相似的人机交互界面。控制程序用C或C++

语言编写,用来在Pro/ENGINEER环境装入对话框资源、显示对话框、设置动作和退出对话框等。UI对话框的设计主要涉及两个方面:一是按界面的布局编写资源文件;二是针对UI对话框的功能编写相应的控制程序。

1.资源文件

资源文件是用来定义和描述UI对话框外观及属性的文本文件。主要内容包括UI 对话框的组成部分元件(component)或称控件、各元件的属性定义和元件的布局形式。编写资源文件进应注意以下几点:(1)区分大小写;(2)括号必须成对;(3)对话框名应与资源文件名相同;(4)“!”后面的内容为注释部分,对对话框的定义没有任何影响;(5)资源文件可用任何一种支持纯文本格式的文字处理软件编写,如Word、写字板或记事本等,也可以用VC应用程序设计向导编写。无论用何种方法编写,都必须按纯文本格式保存,且扩展名为.res。保存在工作目录下所建VC程序中Release/text//resource子目录中。其中取决于当前使用的语言(chinese_cn或usascii)。

资源文件的结构如下:

(Dialog<对话框>

(Componens

……

)

(Resources

……

)

Dialog<对话框>为顶层语句,下面主要包含两段构成,其中原件段(Components)声明了该对话框的所有元件,资源段(Resource)分为定义了各元件的属性及布局。

资源文件仅仅是对UI对话框的描述,必须通过Pro/TOOLKIT应用程序来装入、显示和控制对话框。分为创建和终止两部分。

创建对话框的过程如下:

(1)调用ProUIDialogCreate()函数将资源文件装入内在;

(2)调用对话框零件的动作函数设置指定元件的动作函数;

(3)调用ProUIDialogActivate()函数显示和激活对话框;

(4)调用ProUIDialogDestroy()函数从内在清除对话框资源。

这四步是创建一个UI对话框的最基本步骤。其中第二步可实现数据的调用,它的动作设置函数与元件类型有关,其主要目的是设置用户在对话框界面上对某一元素进行操作时,调用的动作函数。在完成这四步的情况下,可以终止UI对话框,具体

方法是调用ProUIDialogExit()函数。

3.3 端盖对话框设计

3.3.1 构想

1.在主对话框中添加以下元件。

(1)Label1与Label1.1标签,用于提示图形。Lable1其图形显示零件图形,该图形直接从三维模型中获取。Label1.1显示设计参数与尺寸的对应关系,该图形直接从三维模型中获取,在图形软件中加上尺寸线和参数名后转换为UI对话框支持的GIF格式(保存在resource子目录)。Lable1其图形命名为Duangai3.gif,Label1.1其图形命名为Duangai3_1.gif。

(2)Label2标签,用于显示参数名,命名规则为:设计参数名_Label。

(3)Separator分隔线

(4)PushButton1按钮,用于生成模型。

(5)PushButton2按钮,用于退出对话框。

(6)PushButton3按钮,用于自定义对话框设计。

(7)InputPanel输入框,用于表示参数值,命名规则为:设计参数名_Value。

其中两个按钮跟其他的按钮用分隔线隔开。

2.在自定义对话框中添加以下元件。

(1)Label1.1与主对话框的设置相同。

(2)Label2标签,用于显示参数名,命名规则为:设计参数名_Label。

(3)Separator分隔线

(4)PushButton1按钮,用于生成模型。

(5)PushButton2按钮,用于退出对话框。

(6)InputPanel输入框,用于表示参数值,命名规则为:设计参数名_Value。

3.3.2 创建方法

其创建的方法是:编写资源文件,文件扩展名为.res,用纯文本格式保存在注册文件中TEXT_DIR字段指定目录下的\\resource子目录。调用ProUIDialogCreate()函数将资源文件装入内存;调用ProUIPushbuttonActivateActionSet ()函数设置按钮的动作;调用ProUIDialogActivate()函数显示和激活对话框;调用ProUIDialogDestroy()函数从内存清除对话框资源;调用ParamsList()显示模型的设计参数;调用ParamGetAndShow()从零件模型中获得参数值,并在相应的输入框中显示;调用ParamUpdate()更新参数值。创建函数原型为:

ProError ProUIDialogCreate(char*dialog_name

char*resource)

ProError ProUIDialogActivate(char*dialog_name

int*status)

ProError ProUIDialogDestroy (char* dialog_name)

3端盖资源文件

以凸缘闷盖为例,其主对框资源文件如下:

!资源文件:Duangai3.res

(Dialog Duangai3

(Components !对话框元件声明

(Label Image1)

(Label Image2)

(SubLayout Layout1)

(Separator Separator1)

(PushButton Update3)

(PushButton Cancel)

)

(Resources !对话框资源(属性定义)

(Image1.Bitmap "Duangai3.1.gif")!零件尺寸与参数对应图(Image1.TopOffset 10)

(Image1.LeftOffset 4)

(Image1.RightOffset 2)

(Image2.Bitmap "Duangai3.gif")!三位零件图

(Image2.TopOffset 4)

(Image2.BottomOffset 8)

(Image2.LeftOffset 4)

(Image2.RightOffset 4)

(https://www.wendangku.net/doc/6a351547.html,bel "生成模型(&U)")!生成模型按钮(Update3.Bitmap "cl_ok")

(Update3.TopOffset 4)

(Update3.BottomOffset 8)

(Update3.LeftOffset 4)

(Update3.RightOffset 4)

!Cancel按钮属性定义

(https://www.wendangku.net/doc/6a351547.html,bel "退出(&E)")

(Cancel.Bitmap "cl_cancel")

(Cancel.TopOffset 4)

(Cancel.BottomOffset 8)

(Cancel.LeftOffset 4)

(Cancel.RightOffset 4)

(Separator1.TopOffset 4)

(Separator1.BottomOffset 4)

(.Label "端盖参数化设计") !对话框标题(.StartLocation 5)

(.Resizeable 0)

(.Layout !对话框元件的布局

(Grid (Rows 1 1 1) (Cols 1)

(Grid (Rows 1 ) (Cols 1 1)

Image1

(Grid (Rows 1 1 ) (Cols 1)

Layout1

Image2

)

)

Separator1

(Grid (Rows 1) (Cols 1 1)

Update3

Cancel

)

)

)

)

)

(Layout Layout1

(Components

(Label D_Label)

(OptionMenu D_Value)

(Label DA_Label) (OptionMenu DA_Value)

相关文档