卷筒中间轴的参数化设计 毕业设计论文.doc_第1页
卷筒中间轴的参数化设计 毕业设计论文.doc_第2页
卷筒中间轴的参数化设计 毕业设计论文.doc_第3页
卷筒中间轴的参数化设计 毕业设计论文.doc_第4页
卷筒中间轴的参数化设计 毕业设计论文.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

- 1 - 摘 要 本文介绍了 pro/e 的二次开发工具,利用 pro/e 对卷筒中间轴进行了参数化 造型设计,建立了相应的参数,用 pro/toolkit 和 vc 对卷筒中间轴参数化系统 进行了程序设计,包括菜单的添加和 mfc 对话框的制作。最后,对开发的三 维建模程序进行测试。结果表明:开发程序准确无误,建模迅速,大大提高了 这类通用件在 pro/e 平台上的设计效率。 关键词:三维造型、pro/e 二次开发、pro/toolkit、 vc abstract the essay introduced the tools of the second-development of pro/e,design the intermediate shaft of winding drum in parametrics based on pro/e and built its variables.on this basis,the writer designed the programs of its parametric systems used pro/toolkit and vc .the programs includes the creation of menu,the creation of the mfc dialogue.in the end,the test of all process of three-dimension-part-model driven by database is performed indicates that the program is right,and the mold can be set up quickly.the efficiency for the design of interchangeable part based on pro/e can be increased. key words: three-dimension design;second-development of pro/e;pro/toolkit;vc - 2 - 目 录 摘要.1 绪论. 1 第 1 章 pro/e 二次开发简介.3 1.1 pro/e 软件简介3 1.2 pro/e 二次开发工具简介4 第 2 章 零件造型.6 2.1 pro/e 的三维造型功能.6 2.2 pro/e 创建模型过程.7 第 3 章 轴的参数化设计.11 3.1 菜单的添加.11 3.2 mfc 对话框的建立及运行.15 3.3 整个参数化的实现.18 总结.25 致谢.26 参考文献.27 - 3 - 绪 论 现 在 的 cad/cam 系 统 , 如 pro/e、 ug 等 , 都 是 比 较 通 用 的 大 型 软 件 系 统 , 用 这 样 的 大 型 系 统 建 立 我 们 所 需 要 的 产 品 模 型 可 能 需 要 大 量 的 时 间 。 如 果 能 在 此 类 软 件 的 基 础 上 , 开 发 出 适 合 本 单 位 产 品 的 应 用 程 序 , 无 疑 会 大 大 提 高 本 单 位 产 品 的 设 计 效 率 , 加 快 产 品 的 更 新 速 度 , 从 而 提 高 企 业 的 市 场 竞 争 能 力 。 pro/e 的 二 次 开 发 方 法 有 五 种 : ( 1) 基 于 pro/toolkit 的 二 次 开 发 过 程 pro/toolkit 是 针 对 pro/e 功 能 强 大 的 二 次 开 发 工 具 。 它 封 装 了 许 多 针 对 pro/e 底 层 资 源 调 用 的 库 函 数 与 头 文 件 , 借 助 第 三 方 编 译 环 境 ( c 语 言 、 vc+语 言 等 ) 进 行 调 试 。 使 用 pro/toolkit 开 发 应 用 程 序 包 含 三 个 基 本 步 骤 : 编 写 源 文 件 ( 包 括 资 源 文 件 和 程 序 源 文 件 ) ; 生 成 可 执 行 文 件 ; 可 执 行 文 件 在 pro/e 中 注 册 并 运 行 是 pro/e 软 件 自 带 的 二 次 开 发 模 块 , 可 以 直 接 访 问 pro/e 软 件 的 最 底 层 数 据 库 资 源 , 这 是 进 行 pro/e 二 次 开 发 最 根 本 的 方 法 , 但 要 求 开 发 人 员 具 有 相 当 c 语 言 的 编 程 能 力 ; 它 是 ptc 公 司 为 pro/e 提 供 的 用 户 化 工 具 箱 (18 以 前 的 版 本 为 pro/develop), 该 工 具 箱 为 用 户 程 序 、 软 件 及 第 三 方 程 序 提 供 了 与 pro/e 的 无 缝 联 接 。 用 户 程 序 和 第 三 方 程 序 是 用 c 语 言 编 写 的 , pro/toolkit 提 供 了 大 量 的 c 语 言 的 库 函 数 , 能 够 使 外 部 应 用 程 序 安 全 有 效 地 访 问 pro/e 的 数 据 库 和 应 用 程 序 。 通 过 c 语 言 编 程 及 应 用 程 序 与 pro/e 的 无 缝 集 成 , 用 户 和 第 三 方 能 够 在 pro/e 系 统 中 增 加 所 需 的 功 能 。 ( 2) 基 于 automation gateway 的 二 次 开 发 automation gateway 是 rand 公 司 开 发 的 针 对 pro/e 软 件 的 二 次 开 发 工 具 , 与 pro/e 系 统 自 带 的 二 次 开 发 工 具 pro/toolkit 相 比 , 具 有 简 单 易 用 的 优 点 。 应 用 automationgateway 可 以 自 动 实 现 pro/e 任 务 , 创 建 用 户 界 面 , 完 全 实 现 自 动 设 计 任 务 ; 应 用 automationgateway 可 以 把 任 何 支 持 activex 的 应 用 程 序 和 pro/e 建 立 直 接 联 系 。 利 用 vb, 可 以 使 microsoft ofice 产 品 (如 word, excel 等 )和 pro/e 对 象 之 间 进 行 数 据 交 换 。 在 这 个 过 程 中 , automation gate way 在 vb 和 pro/e 之 间 起 到 桥 梁 和 纽 带 的 作 用 。 通 过 a, 就 可 以 利 用 vb 访 问 pro/e 的 大 部 分 底 层 资 源 文 件 。 - 4 - ( 3) 基 于 j-link 的 二 次 开 发 过 程 基 于 java 语 言 的 二 次 开 发 工 具 , 用 户 通 过 java 编 程 实 现 在 软 件 pro/e 中 添 加 功 能 。 ( 4) 基 于 pro/web link 的 二 次 开 发 过 程 这 种 方 法 使 用 的 语 言 是 javascript,以 网 页 的 形 式 来 访 问 pro/e 模 型 ( 5) 基 于 vb api 的 二 次 开 发 过 程 pro/e wildfire 4.0 开 始 可 以 采 用 visual basic api, 通 过 visual basic net 应 用 程 序 和 应 用 程 序 (如 microsoft word、 excel 或 access) 中 的 visual basic 宏 来 进 行 二 次 开 发 。 本 论 文 的 主 要 工 作 有 : (1)利 用 pro/e 对 卷 筒 中 间 轴 进 行 三 维 建 模 。 (3)利 用 pro/e 的 二 次 开 发 工 具 pro/toolkit 及 vc+.net 进 行 二 次 开 发 , 设 计 出 人 机 交 互 式 的 界 面 , 开 发 出 参 数 化 的 中 间 轴 系 统 。 (4)利 用 pro/e 的 二 次 开 发 工 具 pro/toolkit 创 建 三 维 的 标 准 零 件 库 并 实 现 零 件 库 与 pro/e 的 集 成 。 (5)调 试 、 运 行 程 序 。 - 5 - 第 1 章 pro/e 二次开发简介 1.1 pro/e 软件简介 pro/e 操作软件是美国参数技术公司(ptc)旗下的 cad/cam/cae 一体化 的三维软件。pro/e 软件以参数化著称,是参数化技术的最早应用者,在目前的 三维造型软件领域中占有着重要地位,pro/e 作为当今世界机械 cad/cae/cam 领域的新标准而得到业界的认可和推广。是现今主流的 cad/cam/cae 软件之一,特别是在国内产品设计领域占据重要位置。 pro/e 中文版软件是美国参数技术公司开发的三维参数化设计软件,是目前 国内外应用最为广泛的一款 cad/cam/cae 软件,在中国有很多研究院和企业 采用该软件进行设计、仿真、分析和加工。它功能强大、应用广泛,使用方便, 得到广大用户和爱好者的一致认可。 pro/e 第一个提出了参数化设计的概念,并且采用了单一 数据库来解决特征 的相关性问题。另外,它采用模块化方式,用户可以根据自身的需要进行选择, 而不必安装所有模块。pro/e 的基于特征方式,能够将设计至生产全过程集成到 一起,实现并行工程设计。它不但可以应用于工作站,而且也可以应用到单机 上。pro/e 采用了模块方式,可以分别进行草图绘制、零件制作、装配设计、钣 金设计、加工处理等,保证用户可以按照自己的需要进行选择使用。pro/e 的主 要特性如下: 1.参数化设计 相对于产品而言,我们可以把它看成几何模型,而无论多么复杂的几何模 型,都可以分解成有限数量的构成特征,而每一种构成特征,都可以用有限的 参数完全约束,这就是参数化的基本概念。 2.基于特征建模 pro/e 是基于特征的实体模型化系统,工程设计人员采用具有智能特性的基 于特征的功能去生成模型,如腔、壳、倒角及圆角,您可以随意勾画草图,轻 易改变模型。这一功能特性给工程设计者提供了在设计上从未有过的简易和灵 活。 3.单一数据库(全相关) pro/e 是建立在统一基层上的数据库上,不像一些传统的 cad/cam/cae 系统建立在多个数据库上。所谓单一数据库,就是工程中的资料全部来自一个 - 6 - 库,使得每一个独立用户在为一件产品造型而工作,不管他是哪一个部门的。 换言之,在整个设计过程的任何一处发生改动,亦可以前后反应在整个设计过 程的相关环节上。例如,一旦工程详图有改变,nc(数控)工具路径也会自动 更新;组装工程图如有任何变动,也完全同样反应在整个三维模型上。这种独 特的数据结构与工程设计的完整的结合,使得一件产品的设计结合起来。这一 优点,使得设计更优化,成品质量更高,产品能更好地推向市场,价格也更便 宜。 1.2 pro/e 二次开发工具简介 pro/e 提供了强大的三维几何造型功能,使我们能够创建出各种复杂的几何 零件模型,但有时我们在设计产品时,经常遇到相同类型仅尺寸不一样的零件, 如果我们把它们都一一三维建模,那工作量是巨大的。最有效的方法是利用零 件间的相似性,发挥参数化建模的特长,使用二次开发来实现。以下是对各二 次开发工具的介绍: 1.族表 通过族表可以方便的管理具有相似结构的零件,特别适用于标准件的管理。 族表工具是通过一个通用零件作为父零件,然后在其基础上对多个参数加以控 制生成派生零件。整个族表是通过电子表格来实现的,因此可以称其为表格驱 动。 2.用户定义特征 用户定义特征是将若干各子系统特征融合为一个自定义特征,使用时作为 一个整体出现。udf 适用特定产品中的特定结构,有利于设计者根据产品特征 快速生成几何模型。 3.pro/program pro/e 软件对于每个模型都有一个主要设计步骤和参数列表 pro/program, 它是类似于 basic 的高级语言构成,用户可以根据设计需要来编辑该模型的 program,使其以一个程序来工作。通过运行该程序,系统通过人机交互的方法 来控制系统参数、特征出现与否以及特征的具体尺寸等。 4.j-link j-link 是 pro/e 中自带的基于 java 语言的二次开发工具,是一种面向对象、 独立于操作系统平台的开发工具。用户通过 java 编程实现向 pro/e 软件添加 - 7 - 功能。 5.pro/toolkit pro/toolkit 同 j-link 一样也是 pro/e 中自带的二次开发工具。pro/toolkit 是针对 pro/e 功能强大的二次开发工具。它 封装了许多针对 pro/e 底层资源调用 的库函数与头文件,借助第三方编译环境(c 语言、 vc+语言等)进行调试。使用 pro/toolkit 开发应用程 序包含三个基本步骤:编写源文件(包括资源文件和程 序源文件) ;生成可执行文件;可执行文件在 pro/e 中 注册并运行。pro/toolkit 是 pro/e 软件自带的二次开发 模块,可以直接访问 pro/e 软件的最底层数据库资源, 这是进行 pro/e 二次开发最根本的方法,但要求开发人 员具有相当 c 语言的编程能力;它是 ptc 公司为 pro/e 用户提供的用户化工具箱(18 以前的版本为 pro/develop),该工具箱为 用户程序、软件及第三方 程序提供了与 pro/e 的无缝联接。用户程序和第三方程 序是用 c 语言编写的,pro/toolkit 提供了大量的 c 语言的库函数,能够使外部应用程序安全有效地访问 pro/e 的数据库和应用程序。通过 c 语言编程及应用程 序与 pro/e 的无缝集成,用户和第三方能够在 pro/e 系 统中增加所需的功能。 上述二次开发工具集中在 pro/e 的“工具”菜单中,如 图 1-1 所示。其中“辅助应用程序”主要用来测试 pro/toolkit 程序。 图 1-1 二次开发工具 - 8 - 第 2 章 零件造型 从这章开始将用一个实例详细介绍二次开发的完整过程。首先对零件进行 三维造型。 2.1 pro/e 的三维造型功能 2.1.1 pro/e 的造型优点 pro/e 的功能包括参数化功能定义、实体零件及组装造型,三维上色实体或 线框造型棚完整工程图产生及不同视图(三维造型还可移动,放大或缩小和旋 转) 。pro/e 是一个功能定义系统,即造型是通过各种不同的设计专用功能来实 现,其中包括:筋(ribs) 、槽(slots ) 、倒角(chamfers)和抽空(shells)等, 采用这种手段来建立形体,对于工程师来说是更自然,更直观,无需采用复杂 的几何设计方式。这系统的参数比功能是采用符号式的赋予形体尺寸,不 象其他系统是直接指定一些固定数值于形体,这样工程师可任意建立形体上的 尺寸和功能之间的关系,任何一个参数改变,其也相关的特征也会自动修正。 这种功能使得修改更为方便和可令设计优化更趋完美。造型不单可以在屏幕上 显示,还可传送到绘图机上或一些支持 postscript 格式的彩色打印机。pro/e 还 可输出三维和二维图形给予其他应用软件,诸如有限元分析及后置处理等,这 都是通过标准数据交换格式来实现,用户更可配上 pro/e 软件的其它模块或自 行利用 c 语言编程,以增强软件的功能。它在单用户环境下(没有任何附加模 块)具有大部分的设计能力,组装能力(人工)和工程制图能力(不包括 ansi, iso, din 或 jis 标准),并且支持符合工业标准的绘图仪(hp,hpgl) 和黑白及彩色打印机的二维和三维图形输出。试用 pro/e 可以轻松而快捷的 创建三维实体模型,使用户直观的看到零件或装配部件的实际形状和外观。这 些实体模型和真实世界中的事物一样,具有密度、质量、体积和重心等属性, 这也是 proe 造型强大的原因。 2.1.2 pro/e 的造型功能 pro/e 功能如下: - 9 - 1.特征驱动(例如:凸台、槽、倒角、腔、壳等) ; 2.参数化(参数=尺寸、图样中的特征、载荷、边界条件等) ; 3.通过零件的特征值之间,载荷/边界条件与特征参数之间(如表面积等) 的关系来进行设计。 4.支持大型、复杂组合件的设计(规则排列的系列组件,交替排列, pro/program 的各种能用零件设计的程序化方法等)。 5.贯穿所有应用的完全相关性(任何一个地方的变动都将引起与之有关的每 个地方变动)。其它辅助模块将进一步提高扩展 pro/e 的基本功能。 2.2 创建模型过程 2.2.1 进入拉伸界面、设置草绘平面 单击【文件】 、 【新建】弹出【新建】对话框如图 2.1,选择【零件】 ,取消 【使用缺省模板】 ,在名称框中输入“zhongjianzhou”,点击【确定】 。在弹出的 【新文件选项】对话框中选中“mmns_part_solid”选项,点击【确定】 。 图 2-1 新建三维模型对话框 单击下拉菜单【插入】 、 【拉伸】命令,则开始建立拉伸特征。此时在绘图 区的下方会弹出如图 2-2 的操作控制面板。 - 10 - 图 2-2 拉伸命令操作控制面板 单击【放置】 、 【定义】 ,会进入设置绘图平面对话框如图 2-3,在绘图区选 择“front” 平面作为草绘平面。单击【草绘】按钮退出。系统弹出如图 2-4 的【参照】对话框,直接单击【关闭】 ,开始草绘。 图 2-3 设定【草绘】对话框 图 2-4 设定【参照】对话框 2.2.2 绘制草绘图形 绘制直径为 34 的圆,草绘图形结束后,单击 按钮则退出草绘界面。 2.3.3 设定深度、创建拉伸实体特征 在 按钮右侧的编辑框中输入拉伸深度值 29.8,单击 预览按钮, 进行几何预览和特征预览,预览结束,单击 按钮,特征创建结束。 参照其二维图(如图 2-5 所示)用拉伸的方法完成是三维建模如图 2-7 所 示。 图 2-5 中间轴工程图 单击 按钮进入倒角操控板如图 2-6 所示,在倒角参数编辑框中输入数值 2, 选择轴两端边线如图 2-7,单击 按钮完成倒角。再次单击 按钮进入倒角操 控板设置倒角参数值为 1 选择分别选择槽底部靠近轴两端的边线如图 2-8a 所示。 - 11 - 图 2-6 【倒角】控制面板 图 2-7 三维实体模型 完成倒角。单击 按钮进入圆角操控板如图 2-9 所示,设置圆角半径为 1.5,选择两槽底部另外一条边线如图 2-8b,单击 按钮完成倒圆角。零件造 型完毕。 获取零件各尺寸的标识号,以便在后序编程中使用。在模型树中【右键】 单击拉伸 1 弹出快捷菜单选中【编辑】 ,在绘图区选中某一尺寸单击【右键】 、 【属性】 ,弹出【尺寸属性】对话框,切换到【尺寸文本】 ,在名称编辑框中的 数值部分即为尺寸标识号,用相同方法获得各尺寸的标识号,为各尺寸设置变 量,其中部分尺寸值相同,设置为一个变量,具体如表 2-1 所示。 图 2-8a 槽端尺寸 图 2-8b 槽底尺寸 - 12 - 图 2-9 【圆角】控制面板 表 2-1 尺寸标识号与变量对照表 各尺寸名称 尺寸标识号 变量 中间段长 4 ml 两端段长 0 ,8 sl 两端段直径 1,9 sd 中间段直径 5 md 槽段长 2,6 cl 槽段直径 3,7 cd 两端倒角 10, 11 sda 槽段倒角 12,13 cda 槽段圆角 14,15 cy - 13 - 第 3 章 轴的参数化设计 本章主要介绍如何使用 vc 的 mfc 类库来开发 pro/toolkit 对话框应用程 序。用 vc 开发程序时,cdialog 类是使用频率较高的 mfc 对象。 3.1 菜单的添加 由于该对话框通过菜单来调用,所以需要在 pro/e 上添加一个菜单,并给 菜单添加一个动作函数。可以把这个菜单挂在 pro/e 的【工具】菜单下,菜单 的名称为【中间轴】 。要添加一个菜单,必须先建立一个信息资源文件。 (1)在【项目】文件夹 zhongjianzh 下面新建一个文件夹 text,然后在该 文件夹内建两个文件夹 chinese_cn 和 usascii; (2)在这两个文件夹内分别创建文件 message.txt,并在两个文件里面输入: newmdl 中间轴 # # usr button for new mdl 用于模型新建的用户菜单 # # 注意“#”必须在英文格式下输入,否则将无法显示菜单。 编辑好菜单资源文件后,就可以编写程序来添加自定义菜单。添加菜单的 操作在 user_initialize()内完成。在程序主文件 zhongjianzh.cpp 里面自定义一个 菜单的动作函数: #include “proselection.h“ void menunewmdl();/菜单的动作函数 再添加一个菜单访问函数,这个函数是用来控制菜单显示的,即什么情况 - 14 - 下可以让菜单显示,什么情况下让菜单无效。这个状态有访问状态函数来控制, 建一个访问控制函数。 static uicmdaccessstate usraccessdefault(uicmdaccessmode access_mode) return(access_available);/返回可用,即任何情况下这个菜单都有效 最终项目主文件 zhongjianzh.cpp 如下: / zhongjianzh.cpp : 定义 dll 的初始化例程。 / #include “stdafx.h“ #include “zhongjianzh.h“ #include “zhongjianzhdlg.h“ /pro/toolkit的头文件 #include “protoolkit.h“ #include “proutil.h“ #include “promenu.h“ #include “promenubar.h“ #include “prowindows.h“ #include “promdl.h“ #include “prosolid.h“ #include “prodimension.h“ #include “proarray.h“ #include “proparameter.h“ #include “proparamval.h“ #include “promessage.h“ #include “promodelitem.h“ #include “prodrawing.h“ #include “profeature.h“ #include “profeattype.h“ #include “pronotify.h“ #include “prorefinfo.h“ - 15 - #include “prorelset.h“ #include “proselection.h“ void menunewmdl();/声明菜单动作函数函数 zhongjianzhdlg dlg;/实例化对话框 #ifdef _debug #define new debug_new #endif static uicmdaccessstate usraccessdefault(uicmdaccessmode access_mode) return(access_available); / / 注意! / / 如果此 dll 动态链接到 mfc / dll,从此 dll 导出并 / 调入 mfc 的任何函数在函数的最前面 / 都必须添加 afx_manage_state 宏。 / / 例如: / / extern “c“ bool pascal export exportedfunction() / / afx_manage_state(afxgetstaticmodulestate(); / / 此处为普通函数体 / / / 此宏先于任何 mfc 调用 / 出现在每个函数中十分重要。这意味着 / 它必须作为函数中的第一个语句 - 16 - / 出现,甚至先于所有对象变量声明, / 这是因为它们的构造函数可能生成 mfc / dll 调用。 / / 有关其他详细信息, / 请参阅 mfc 技术说明 33 和 58。 / / czhongjianzhapp begin_message_map(czhongjianzhapp, cwinapp) end_message_map() / czhongjianzhapp 构造 czhongjianzhapp:czhongjianzhapp() / todo: 在此处添加构造代码, / 将所有重要的初始化放置在 initinstance 中 / 唯一的一个 czhongjianzhapp 对象 czhongjianzhapp theapp; / czhongjianzhapp 初始化 bool czhongjianzhapp:initinstance() cwinapp:initinstance(); return true; extern“c“int user_initialize( int argc, char* argv, char* version, char* build, wchar_t errbuf80) - 17 - proerror status; profilename msg; uicmdcmdid uicmdnewmdl; prostringtowstring(msg,“message.txt“); status=procmdactionadd(“新建全新对象命令“,(uicmdcmdactfn) menunewmdl, uicmdpriodefault,usraccessdefault,pro_b_true,pro_b_true, /返回动作函数的标识给参数uicmdnewmdl status=promenubarmenupushbuttonadd(“utilities“,“newmdl“,“newmdl“, “usr button for new mdl“,“utilities.psh_util_aux“,pro_b_true,uicmdnewmdl,msg); /将动 作函数与菜单联系起来 return 0; extern“c“void user_terminate(void) void menunewmdl() promdl mdl; propath a; /将零件三维造型图的位置路径赋给参数a prostringtowstring(a,“e:图形zhongjianzhou.prt“); /打开零件三维造型图 promdlload(a,pro_mdl_unused,pro_b_false, promdldisplay(mdl); afx_manage_state(afxgetstaticmodulestate(); dlg.domodal();/模式方式显示对话框 3.2 mfc 对话框的建立及运行 - 18 - 3.2.1 新建一个 mfc dll 的项目 新建一个名称为“zhongjianzhou”的 mfc dll 项目,并设置好头文件、 库文件、和项目的属性,然后在项目的主文件 zhongjianzhou.cpp 内添加常用的 头文件、初始化函数和终止函数。 图 3-1 mfc 对话框 3.2.2 创建对话框资源 在 vc 的【资源视图】里面添加对话框资源并在对话框上添加 3 个 button 按钮、9 个编辑控件(edit control ) 、9 个静态文本控件(static text ) ,将对话 框的 caption 属性改为“毕业设计 ”,如图 3-1 所示,各控件的 id 及属性设置如 表 3-1 所示。 表 3-1 对话框控件设置 控件类型 id 属性设置 控件类型 id 属性设置 button control idc_zaisheng caption:再 生 static text idc_static caption:中 间段长 ml: edit control idc_ml static text idc_static caption:两 端段长 sl: edit control idc_sl static text idc_static caption:两 端段直径 sd: edit control idc_sd static text idc_static caption:中 间段直径 md: edit control idc_md static text idc_static caption:槽 段长 cl: edit control idc_cl static text idc_static caption:槽 段直径 cd: edit control idc_cd static text idc_static caption:两 端段倒角 sda: edit control idc_sda static text idc_static caption:槽 段倒角 cda: edit control idc_cda static text idc_static caption:槽 段圆角 cy: - 19 - edit control idc_cy 3.2.3 创建对话框类 (1)设计好对话框界面后,就可以创建一个对话框类了。方法是双击设计 好的对话框窗口,然后输入对话框类的名称 zhongjianzhoudlg,如图 3-2 所示。 图 3-2 创建对话框类 (2)给对话框窗口上的编辑控件添加 double 类型的变量如图 3-3 所示。 - 20 - 图 3-3 添加成员变量对话框 (3)用相同的方法给各个编辑框添加 double 类型。 (4)分别双击【确定】 、 【取消】和【再生】按钮,给按钮添加事务处理程 序。 (5)给类添加两个成员函数: void input(double x); / 将编辑框中的数值传递给编辑框变量 void sets(double d, int n); / 将编辑框变量的值赋给对应的尺寸值 3.3 整个参数化的实现 3.3.1 编写代码,实现每个函数的功能 设置好类的成员变量成员函数之后,就可以编写代码以实现每个函数的功 能,具体如下: (1)对话框类头文件 #pragma once / zhongjianzhdlg 对话框 class zhongjianzhdlg : public cdialog declare_dynamic(zhongjianzhdlg) public: zhongjianzhdlg(cwnd* pparent = null); / 标准构造函数 virtual zhongjianzhdlg(); / 对话框数据 enum idd = idd_biyesheji ; protected: virtual void dodataexchange(cdataexchange* pdx); / ddx/ddv 支持 declare_message_map() public: afx_msg void onbnclickedok(); afx_msg void onbnclickedcancel(); - 21 - / 中间段长 double ml; / 两端段长 double sl; / 两端段直径 double sd; / 中间段直径 double md; / 槽段长 double cl; / 槽段直径 double cd; / 两端段倒角 double sda; / 槽段倒角 double cda; / 槽段圆角 double cy; / 将编辑框中的数值传递给编辑框变量 void input(double x); / 将编辑框变量的值赋给对应的尺寸值 void sets(double d, int n); afx_msg void onbnclickedzaisheng(); ; (2)对话框类程序主文件:zhongjianzhdlg.cpp / zhongjianzhdlg.cpp : 实现文件 #include “stdafx.h“ #include “zhongjianzh.h“ #include “zhongjianzhdlg.h“ #include “.zhongjianzhdlg.h“ #include “protoolkit.h“ - 22 - #include “proutil.h“ #include “prosolid.h“ #include “promdl.h“ #include “prodrawing.h“ #include “prowindows.h“ #include “promodelitem.h“ / zhongjianzhdlg 对话框 implement_dynamic(zhongjianzhdlg, cdialog) zhongjianzhdlg:zhongjianzhdlg(cwnd* pparent /*=null*/) : cdialog(zhongjianzhdlg:idd, pparent) , ml(241) , sl(29.8) , sd(34) , md(35) , cl(5) , cd(32) , sda(2) , cda(1) , cy(1) zhongjianzhdlg:zhongjianzhdlg() void zhongjianzhdlg:dodataexchange(cdataexchange* pdx) cdialog:dodataexchange(pdx); ddx_text(pdx, idc_ml, ml); ddx_text(pdx, idc_sl, sl); ddx_text(pdx, idc_sd, sd); ddx_text(pdx, idc_md, md); - 23 - ddx_text(pdx, idc_cl, cl); ddx_text(pdx, idc_cd, cd); ddx_text(pdx, idc_sda, sda); ddx_text(pdx, idc_cda, cda); ddx_text(pdx, idc_cy, cy); begin_message_map(zhongjianzhdlg, cdialog) on_bn_clicked(idok, onbnclickedok) on_bn_clicked(idcancel, onbnclickedcancel) on_bn_clicked(idc_zaisheng, onbnclickedzaisheng) end_message_map() / zhongjianzhdlg 消息处理程序 /* /*【确定】的事务处理函数 /* void zhongjianzhdlg:onbnclickedok() input(sl); input(sd); input(cl); input(cd); input(ml); input(md); input(cl); input(cd); input(sl); input(sd); input(sda); input(sda); input(cda); input(cda); - 24 - input(cy); input(cy); sets(sl,0); sets(sd,1); sets(cl,2); sets(cd,3); sets(ml,4); sets(md,5); sets(cl,6); sets(cd,7); sets(sl,8); sets(sd,9); sets(sda,10); sets(sda,11); sets(cda,12); sets(cda,13); sets(cy,14); sets(cy,15); int p_window_id; prowindowcurrentget( prowindowactivate(p_window_id); / todo: 在此添加控件通知处理程序代码 onok(); void zhongjianzhdlg:onbnclickedcancel() / todo: 在此添加控件通知处理程序代码 oncancel(); / 将编辑框中的数值传递给编辑框变量 void zhongjianzhdlg:input(double x) - 25 - updatedata(true); / 将编辑框变量的值赋给对应的尺寸值 void zhongjianzhdlg:sets(double d,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论