已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学 机械机械 CADCAD 课程大作业设计说明书课程大作业设计说明书 设计题目:基于设计题目:基于 PROEPROE 二次开发的齿轮参数化设计系统二次开发的齿轮参数化设计系统 指导教师:熊鹰指导教师:熊鹰 组员信息:组员信息: 20122012 年年 1212 月月 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 1 目录目录 简简 介介 .2 一、一、 研究现状研究现状.3 二、二、 设计思路设计思路.4 2.1 选定平台选定平台.4 2.2 PRO/E+VISUAL STUDIO平台调试平台调试 .5 2.3 编译及调试事项编译及调试事项.5 三、三、 系统结构系统结构.6 四、四、 关键功能实现关键功能实现.7 4.1 齿轮参数化建模过程齿轮参数化建模过程 .7 4.2 程序关键功能实现程序关键功能实现.11 4.2.1 主程序进入流程主程序进入流程.11 4.2.2 对话框与具体实现方法对话框与具体实现方法.13 4.2.3 建立模型方法建立模型方法.14 4.2.4 读取模型参数方法读取模型参数方法.17 五、五、 系统使用方法系统使用方法 .18 5.1 安装系统安装系统.18 5.2 使用方法使用方法.20 六、六、 总结与展望总结与展望.22 七、七、 附录附录 .22 参考文献参考文献.40 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 2 简简 介介 Pro/Engineer 操作软件是美国参数技术公司(PTC)旗下的 CAD/CAM/CAE 一体化的 三维软件。Pro/Engineer 软件以参数化著称,是参数化技术的最早应用者,在目前的三 维造型软件领域中占有着重要地位,Pro/Engineer 作为当今世界机械 CAD/CAE/CAM 领 域的新标准而得到业界的认可和推广。是现今主流的 CAD/CAM/CAE 软件之一,特别是 在国内产品设计领域占据重要位置。 我们以 Pro/E Wildfire 4.0 为基础进行二次开发,建立了符合 GB 的齿轮模型,并在 Visual Studio 2005 平台上编写了齿轮参数化设计程序,界面友好。设置模数等参数即可 快速地生成符合 GB 的齿轮模型,极大地提高了齿轮设计效率。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 3 一、一、 研究现状研究现状 Pro/E 平台: MONLibs 号称是国内最全的标准件库,其中的齿轮库使用了名为“PTC 国家标准件 库”中的齿轮模型。这些齿轮模型带有参数,并自带 Pro/Program 编写的输入函数。该 库并未添加齿轮内参数设置的内容。 图 1.1 MONLibs 标准件库 就目前互联网上的免费资源而言,Pro/E 平台下的齿轮参数化设计程序还是较为常 见,但其大多界面和功能都较为简单。 Solidworks 平台: Solidworks 平台下的 GearTrax 是享有盛名的齿轮参数化设计系统。能够详细地设 置齿轮的各个参数,绘制动态的啮合图,且能够修改该程序创建的模型。但最大的缺 点是该程序制作的齿轮模型的渐开线是分段取值后连线而成,对系统资源的占用相当 高,曲线分段化后给人以不完美的感觉体验。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 4 图 1.2 Solidworks 平台下的 GearTrax 由此,自主开发一套齿轮参数化设计程序还是有其实用性。 二、二、 设计思路设计思路 2.1 选定平台 最初我们打算使用 Pro/E 的 Pro/Program 模块进行设计。但在研究了 Pro/Program 的共 11 条函数1,并了解其功能后,我们认为 Pro/Program 虽然能够实现功能,但界 面不够友好。 图 2.1 Pro/Program 的使用步骤还是不够友好 之后,我们决定使用 Pro/Toolkit,进行 Pro/E 的二次开发。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 5 2.2 Pro/E+Visual Studio 平台调试 开始使用的是 Creo Elements/Pro 5.0。我们对照二代龙震工作室的Pro/Toolkit Wildfire 2.0 插件设计2,搭配 Visual C+6.0 进行调试。但遗憾的是,虽然 Helloworld.dll 的例子可以运行,但编译环境却怎么也调不出来,例子都无法编译。我 们尝试了使用 nmake 命令,与可视化环境,均无法编译。经过检查,随书光盘例子的 代码存在部分错误,修正后依然无法通过编译。 之后,我们参考了王伟的ProE 野火版 TOOLKIT 二次开发入门与进阶3,文中 提及一般来说 Visual Studio 可以编译 Pro/E 2.0 至 4.0 的程序,而 Visual C+要编译 Pro/E 4.0 的程序,则环境设置过于复杂。 在换用 Visual Studio 2010 后,Creo Elements/Pro 5.0 的 Toolkit 官方例程及二代龙震 的例程依然无法编译。代码编译已经通过,但各 lib 之间依然存在问题。 在参考了大量文献及源代码后,我们决定降级平台,安装 Pro/E 4.0+Visual Studio 2005 进行编译。 在编译成功后,我们再采取单一变量法实验并写成了一个 Excel 表格以总结各编译 参数对于编译结果的影响,详见附录 1 proe二次开发总结 by Tom Willow.xls。 2.3 编译及调试事项 使用库: 库名库名描述描述备注备注 wsock32.libVS 系统库必需 mpr.libVS 系统库必需 psapi.lib系统进程状态控制库必需 netapi32.libWindows 网络应用接口库Creo1.0 必需 protk_dllmd.lib早期:prodev_dllmd.libProe4.0+VS2005,Debug/Release 均可 注册文件 protk.dat(文件名不可变)内容: 项目项目内容内容备注备注 NAME你好世界可用中文,与 dll 名称等均无关 EXEC_FILEC:ch03Helloworld.dll如果开头是.或无盘符则自动寻找工作路径 $MACHINE_TYPE 返回 i486_nt TEXT_DIRC:ch03text1.不可无该项目。 2.文本并不嵌入程序,而是在 proe 第一次执行该 程序时载入。之后修改文本须在 proe 重启并再 次执行程序时生效。 3.若 proe 启动后,第一次运行程序时没找到 text,程序不报错。但之后即便修复了 text 程序 依然不运行。菜单不更改,消息不输出。 STARTUPdllDll 模式:dll 多进程模式:spawn 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 6 ALLOW_STOPTRUE允许停止 UNICODE_ENCODIN G FALSE不支持 UNICODE 选 FALSE,较老的程序需有此项方 可运行 END 可选项可选项 DELAY_START是否延迟调用应用程序 REVISION2001Pro/TOOLKIT 版本号,若没有则 Pro/E 自动寻找版本 号 同一个注册文件中可以容纳多个应用程序。若将 protk.dat 文件放在 Pro/E 工作 目录下,则 Pro/E 启动时自动加载。 三、三、 系统结构系统结构 系统名称为 GBGear,即国标齿轮的意思。工程下包含 stdafx 和 GBGear 两个头文 件,其包含文件再包含系统标准包含文件及资源。具体结构如图 3.1。 GBGear 工程 stdafx.cpp stdafx.h 标准系统包含文件 GBGear.cpp GBGear.h 主程序 DlgGear 类Resourse.h 资源头文件 GBGear.rc 资源文件 IDD_DIALOG1 程序主界面 图 3.1 系统结构 文件结构如图 3.2 所示。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 7 图 3.2 文件结构 四、四、 关键功能实现关键功能实现 4.1 齿轮参数化建模过程 1.建立各参数。 图 4.1 建立各参数 2.在关系中加入运算齿根圆等四个圆半径的公式。 ha=(hax+x)*m hf=(hax+cx-x)*m -界面头文件 -主程序头文件 -资源头文件 -界面源文件 -主程序头文件 -资源文件,包 含程序界面 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 8 r=z*m/2 ra=r+ha rb=r*cos(alpha) rf=r-hf 3.草绘四个圆,并加入关系。 图 4.2 加入草绘关系 4.加入计算渐开线偏移角的关系。 ee=pi*m/2-2*x*m*tan(alpha) e_half_reg=ee/2/r e_half_deg=e_half_reg*180/pi ss=pi*m/2+2*x*m*tan(alpha) s_half_reg=ss/2/r s_half_deg=s_half_reg*180/pi theta=tan(acos(rb/r)-acos(rb/r)*pi/180 偏移角弧度=-(s_half_reg+theta) 偏移角角度=偏移角弧度*180/pi 计算偏移角是为了使渐开线最终围成的齿位于正中间,再加入位于齿隙正中的参 考平面后,可便于装配时定位,以达到良好的仿真效果,并减少干涉。 5.加入基于圆柱坐标系的渐开线,再镜像。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 9 图 4.3 渐开线(镜像前) 方程: r=rb/cos(t*50) theta=90+(tan(t*50)-t*50*pi/180)*180/pi+偏移角角度 z=0 6.拉伸齿根圆,厚度为 b。 图 4.4 拉伸齿根圆 7.绘制齿形草绘,并加入关系。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 10 图 4.5 绘制齿形草绘 8.阵列齿形,并加入关系。 图 4.6 阵列齿形 9.加入参考平面,并加入关系。该参考平面用于装配时定位初始角度。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 11 图 4.7 加入参考平面 如此,即完成了直齿圆柱齿轮的参数化建模。 图 4.8 直齿圆柱齿轮参数化建模模型 4.2 程序关键功能实现 4.2.1 主程序进入流程 由于 Pro/Toolkit 应用程序工作模式有两种同步模式(Synchronous mode)和 异步模式(Asynchronous mode) 。而同步模式又包含两种模式动态链接库模式 (DLL)和多进程模式(Multiprocess mode) 。我们这次是针对同步模式中的动态链接 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 12 库模式(DLL) 。 简单地说,就是 Pro/E 通过 protk.dat 文件寻找 dll 和 text 的目录,然后通过 dll 中 的 user_initialize()函数进入二次开发程序。其中 text 目录用于供程序读取菜单栏,通知 信息等文字数据。 主程序进入函数流程如图 4.8。 ProMenubarMenuAdd 加入新工具栏 项 ProCmdActionAdd 加入处理事件 ProMenubarmenuPushbuttonAdd 加入新工具栏项 若无 ProCmdActionAdd 加入工具栏按钮, 则工具栏无法显示 user_initialize() Pro/E 标准进入函数 UserAccessTestMenu 命令传入状态函数 名称项引用 txt 文 件 CyGear 函数 图 4.9 主程序进入函数流程图 主程序进入函数源代码: extern C int user_initialize() /AfxEnableControlContainer(); ProError status; ProName menufil; uiCmdCmdId cmd_id; ProStringToWstring(menufil,menu.txt); status = ProMenubarMenuAdd(GBGear,gbgear,Help, PRO_B_FALSE,menufil);/名字 GBGear status = ProCmdActionAdd(CyGear,(uiCmdCmdActFn)CyGear,uiCmdPrioDefault,UserAccessTestMenu, PRO_B_TRUE,PRO_B_TRUE, 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 13 status = ProMenubarmenuPushbuttonAdd(GBGear,cygear,cylinder_gear,cylinder_gear_tip,N ULL, PRO_B_TRUE,cmd_id,menufil); ProStringToWstring(msgfil,msg.txt); ProMessageDisplay(msgfil,hello); return(0); 命令传入状态函数源代码: static uiCmdAccessState UserAccessTestMenu(uiCmdAccessMode access_mode) return (ACCESS_AVAILABLE); 在命令处理事件添加函数 ProCmdActionAdd 中调用了 CyGear 函数,将函数加载至 工具栏按钮。 ProCmdActionAdd(CyGear,(uiCmdCmdActFn)CyGear,uiCmdPrioDefault,UserAccessTestMenu, PRO_B_TRUE,PRO_B_TRUE, CyGear 函数: void CyGear() AFX_MANAGE_STATE(AfxGetStaticModuleState(); DlgGear DlgGear; DlgGear.DoModal(); CyGear 函数中创建了一个 DlgGear 对象,该对象由 DlgGear.cpp 及 DlgGear.h 支持, 用于显示对话框,及完成相关命令。 4.2.2 对话框与具体实现方法 在资源文件 GBGear.rc 中,新建了一个 IDD_DIALOG1 对话框资源。并添加控件, 布局如图。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 14 图 4.10 对话框资源 IDD_DIALOG1 为对话框添加类 DlgGear。在 DlgGear.h 头文件中,可以找到枚举型 IDD 变量,即 为引用了对话框资源。 class DlgGear : public CDialog DECLARE_DYNAMIC(DlgGear) public: DlgGear(CWnd* pParent = NULL); / 标准构造函数 virtual DlgGear(); / 对话框数据 enum IDD = IDD_DIALOG1 ; (其下部分略) 4.2.3 建立模型方法 在按钮中加入 OnBnClicked 函数处理按下事件,建立模型。 void DlgGear:OnBnClickedBuild() ProMdl part; ProError err; wchar_t fname255; wcscpy(fname,cy_gearfilename); 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 15 err = ProMdlRetrieve(fname, PRO_MDL_PART, /载入fname文件 SetGear(part); 其中,cy_gearfilename 为一个全局变量,其定义如下: CString cy_gearfilename=LPTCGBGearcylinder_gear.prt; SetGear 为一个自定函数,传入 ProMdl 类型的形参,在函数内将该模型参数设置 为全局变量中定义的各参数值,并再生模型,激活窗口。下面为 SetGear 函数流程图: 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 16 ProModelitemInit 初始化模型特征 ProParameterInit 初始化参数变量 ProMdlIdGet 得到模型 id 设置 ProParamvalue 类型变量的类型 与值 UpdateData(true)将控件内容传输到 控件变量 ProParameterValueSet 设置模型参数 ProSolidRegenerate 再生模型 ActivatePart 激活模型窗口(自定函数) ProMdlDisplay 显示模型 图 4.11 SetGear 函数流程图 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 17 源代码因太长,故附于附录中。 SetGear 函数设置模型参数后,调用 ActivePart 函数以激活当前窗口。 void ActivatePart(ProMdl current_part) ProName pname; ProType ptype; int window_id; ProMdlNameGet(current_part,pname); ProMdlTypeGet(current_part,(ProMdlType*) ProObjectwindowCreate(pname,ptype, ProWindowActivate(window_id); 其关键函数只有 ProObjectwindowCreate 和 ProWindowActivate,但因为前者需要 传入模型名字与类型的形参,所以在其前加入 ProMdlNameGet 和 ProMdlTypeGet 函数。 4.2.4 读取模型参数方法 作为一个齿轮生成系统,如果生成的齿轮不能通过该系统修改,实在是件糟糕的 事。如果修改后,丢失了其他特征(例如孔,键槽,凸台等) ,则修改也失去意义。所 以,我们为系统加入了读取模型参数的方法,将数据读取后反应至对话框上的控件, 让对话框和建立该齿轮时的状态相同,便于用户更改。 下面是读取模型参数的流程图: 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 18 ProMdlIdGet 得到模型 id ProParameterInit 初始化参数变量 ProMdlCurrentGet 得到当前模型句柄 将 ProParamvalue 的值赋给各全局变 量,并设置各控件数值,状态 ProParameterValueGet 得到模型参数 ProModelitemInit 初始化模型特征 图 4.12 读取模型参数步骤流程图 值得一提的是,Pro/Toolkit 开发的程序是需要解锁的,否则只能在开发该程序的 计算机运行。解锁过程在官方文档中叙述相当详细,在此不再赘述。 五、五、 系统使用方法系统使用方法 5.1 安装系统 1.打开 GBGear 文件夹,其下文件如图: 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 19 图 5.1 GBGear 文件夹下文件 将 GBGear 文件夹复制至 Pro/E 工作目录内。 2.打开 Pro/E,之后 工具 辅助应用程序,弹出如下窗口: 图 5.2 辅助应用程序窗口 3.点击 注册,选中 Pro/E 工作目录GBGearprotk.dat 文件,窗口内出现“国标齿 轮”列表项。 图 5.3 加载程序 4.点击 启动。之后菜单栏上“帮助”左边新增了一个“国标齿轮”菜单项。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 20 图 5.4 程序菜单 5.2 使用方法 程序启动后会自动检查当前模型,如果检测到齿轮,会在状态栏进行提示。 图 5.5 程序界面 依次设置各参数值,点击建立。即可生成新的齿轮模型。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 21 图 5.6 建立模型 打开一个齿轮文件,如图 5.7。该图中孔,键槽等特征是生成模型后加上的。加载 “国标齿轮”程序,对话框开启时会自动检测当前文件。检测成功并读取参数后,会 在状态栏更新状态为“已激活当前的齿轮” 。如果程序未激活可手动点击“激活当前齿 轮”按钮。 图 5.7 激活齿轮 设置参数后,齿轮将更新为新参数。可以看到,其余特征并未受到影响。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 22 图 5.8 更新后的齿轮 六、六、 总结与展望总结与展望 这次做 Pro/E 的二次开发,虽然作品不算复杂,系统也较为单一,但调试成功就是 给予我们最大的鼓励,特别是经过了几天,换着环境的调试,程序通过的一刹那,让 人欣喜若狂。这种感觉是单一地建模与 Pro/Program 的简单程序所不能给予的。 此外,在编写程序的过程中,我们克服了对英文文档的恐惧,耐下性子阅读 PTC 的 Pro/Toolkit 帮助文档,各个函数,分门别类,各司其职,各种自定义的参数,函数 名称的命名规则,让人一看就能够知道其功能,不禁对 PTC 公司的水平肃然起敬。 限于时间关系,这个齿轮参数化设计程序,还有很多有待完善的地方: 1. 目前该系统只有直齿圆柱齿轮一种,但基于参数赋值调用并重建模型的方法与模型 的建模过程其实是独立的,因而添加其他蜗轮等模型实质上只是增加程序界面与接 口的问题。 2. Pro/Toolkit 的每条函数都会返回一个 ProError 类型的变量,以说明错误类型。但限 于时间我们只对部分关键函数的错误信息进行了反馈。在今后的程序改进中,将其 余函数的错误信息进行处理有助于增强程序的强壮性。 3. 现在该程序点击“建立” ,则新建的模型会覆盖当前窗口,算是一个 BUG。经过努 力,该 BUG 尚未解决。 4. 程序窗口激活后,焦点转移至程序,而模型窗口则处于非激活状态。若能使程序和 Pro/E 本身的弹出窗口一样,不影响模型窗口状态,则程序的便捷性将会提高。 七、七、 附录附录 1. 文件 proe二次开发总结 by Tom Willow.xls 附于同文件夹下。 2. 工程全部源代码附于同文件夹下。此处附主头文件及 DlgGear 类头文件。 GBGear.cpp: 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 23 / GBGear.cpp : 定义DLL 的初始化例程。 / #include stdafx.h #include GBGear.h #include DlgGear.h #include #include #include #include #include ProFileName msgfil; #ifdef _DEBUG #define new DEBUG_NEW #endif / /TODO: 如果此DLL 相对于MFC DLL 是动态链接的, /则从此DLL 导出的任何调入 /MFC 的函数必须将AFX_MANAGE_STATE 宏添加到 /该函数的最前面。 / /例如: / /extern C BOOL PASCAL EXPORT ExportedFunction() / /AFX_MANAGE_STATE(AfxGetStaticModuleState(); / 此处为普通函数体 / / /此宏先于任何MFC 调用 /出现在每个函数中十分重要。这意味着 /它必须作为函数中的第一个语句 /出现,甚至先于所有对象变量声明, /这是因为它们的构造函数可能生成MFC /DLL 调用。 / /有关其他详细信息, /请参阅MFC 技术说明33 和58。 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 24 / / CGBGearApp BEGIN_MESSAGE_MAP(CGBGearApp, CWinApp) END_MESSAGE_MAP() / CGBGearApp 构造 CGBGearApp:CGBGearApp() / TODO: 在此处添加构造代码, / 将所有重要的初始化放置在InitInstance 中 / 唯一的一个CGBGearApp 对象 CGBGearApp theApp; / CGBGearApp 初始化 BOOL CGBGearApp:InitInstance() CWinApp:InitInstance(); return TRUE; /以下为编写内容 void CyGear() AFX_MANAGE_STATE(AfxGetStaticModuleState(); DlgGear DlgGear; DlgGear.DoModal(); static uiCmdAccessState UserAccessTestMenu(uiCmdAccessMode access_mode) 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 25 return (ACCESS_AVAILABLE); extern C int user_initialize() /AfxEnableControlContainer(); ProError status; ProName menufil; uiCmdCmdId cmd_id; ProStringToWstring(menufil,menu.txt); status = ProMenubarMenuAdd(GBGear,gbgear,Help, PRO_B_FALSE,menufil);/名字 GBGear status = ProCmdActionAdd(CyGear,(uiCmdCmdActFn)CyGear,uiCmdPrioDefault,UserAccessTestMenu, PRO_B_TRUE,PRO_B_TRUE, status = ProMenubarmenuPushbuttonAdd(GBGear,cygear,cylinder_gear,cylinder_gear_tip,N ULL, PRO_B_TRUE,cmd_id,menufil); ProStringToWstring(msgfil,msg.txt); ProMessageDisplay(msgfil,hello); return(0); extern C void user_terminate() ProMessageDisplay(msgfil,byebye); return; DlgGear.cpp: / DlgGear.cpp : 实现文件 / #include stdafx.h #include GBGear.h #include DlgGear.h 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 26 #include #include #include #include #include #include ProParameter.h #include ProSolid.h #include ProMdl.h #include ProModelItem.h #include ProUIInputpanel.h / DlgGear 对话框 IMPLEMENT_DYNAMIC(DlgGear, CDialog) DlgGear:DlgGear(CWnd* pParent /*=NULL*/) : CDialog(DlgGear:IDD, pParent)/各初始值 , Combo_M1_int(0) , Combo_M2_int(0) , Combo_alpha_int(0) , int_z(0) , d_hax(0) , d_cx(0) , d_x(0) , d_b(0) , d_m3(0) DlgGear:DlgGear() void DlgGear:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO_M1, ComboBox_M1); DDX_Control(pDX, IDC_COMBO_M2, ComboBox_M2); DDX_Control(pDX, IDC_RADIO_M1, Radio_M1); DDX_CBIndex(pDX, IDC_COMBO_M1, Combo_M1_int); DDX_CBIndex(pDX, IDC_COMBO_M2, Combo_M2_int); 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 27 DDX_CBIndex(pDX, IDC_COMBO_alpha, Combo_alpha_int); DDX_Control(pDX, IDC_EDIT_M3, Edit_M3); DDX_Text(pDX, IDC_EDIT_Z, int_z); DDX_Control(pDX, IDC_COMBO_alpha, ComboBox_alpha); DDX_Control(pDX, IDC_EDIT_hax, Edit_hax); DDX_Control(pDX, IDC_EDIT_cx, Edit_cx); DDX_Text(pDX, IDC_EDIT_hax, d_hax); DDX_Text(pDX, IDC_EDIT_cx, d_cx); DDX_Text(pDX, IDC_EDIT_x, d_x); DDX_Text(pDX, IDC_EDIT_b, d_b); DDX_Control(pDX, IDC_RADIO_hc1, Radio_hc1); DDX_Control(pDX, IDC_SPIN_Z, spin_z); DDX_Control(pDX, IDC_SPIN_B, spin_b); DDX_Text(pDX, IDC_EDIT_M3, d_m3); DDX_Control(pDX, IDC_BUTTON_UPDATE, Button_update); DDX_Control(pDX, IDC_BUTTON_Act, Button_act); BEGIN_MESSAGE_MAP(DlgGear, CDialog) ON_BN_CLICKED(IDC_RADIO_M1, const int m1count = 18; double m1m1count=1,1.25,1.5,2,2.5,3,4,5,6,8,10,12,16,20,25,32,40,50; const int m2count = 18; double 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 28 m2m2count=1.125,1.375,1.75,2.25,2.75,3.5,4.5,5.5,6.5,7,9,11,14,18,22,28,36,45; const int alphacount = 5; double alpha0alphacount=14.5,15,20,22.5,25; CString selffilename; BOOL DlgGear:OnInitDialog()/窗口初始化 CDialog:OnInitDialog(); this-OnBnClickedRadioM1(); Combo_M1_int = 3; UpdateData(false); ReadM(); int_z = 21; UpdateData(false); spin_z.SetRange(0,999); Combo_alpha_int = 2; UpdateData(false); ReadAlpha(); this-OnBnClickedRadiohc1(); ReadHaxCx(); d_x = 0; UpdateData(false); d_b = 20; UpdateData(false); spin_b.SetRange(0,999); GetDlgItem(IDC_STATIC_S)-SetWindowText(L已成功启动。); /*TCHAR szPathMAX_PATH; GetModuleFileName(NULL,szPath,MAX_PATH); AfxMessageBox(szPath);*/得到的是C:.xtop.exe this-OnBnClickedButtonAct();/启动自动检测激活 return TRUE; / return TRUE unless you set the focus to a control int GetIndexFromArray(double num,double ary,int arycount) for (int i=0;iGetCheck() UpdateData(true); d_m = m1Combo_M1_int; if (CButton*)GetDlgItem(IDC_RADIO_M2)-GetCheck() UpdateData(true); d_m = m2Combo_M2_int; if (CButton*)GetDlgItem(IDC_RADIO_M3)-GetCheck() UpdateData(true); d_m = d_m3; void DlgGear:ReadAlpha() UpdateData(true); d_alpha = alpha0Combo_alpha_int; void DlgGear:ReadHaxCx() if (CButton*)GetDlgItem(IDC_RADIO_hc1)-GetCheck() this-OnBnClickedRadiohc1(); if (CButton*)GetDlgItem(IDC_RADIO_hc2)-GetCheck() this-OnBnClickedRadiohc2(); 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 30 if (CButton*)GetDlgItem(IDC_RADIO_hc3)-GetCheck() this-OnBnClickedRadiohc3(); void ActivatePart(ProMdl current_part) ProName pname; ProType ptype; int window_id; ProMdlNameGet(current_part,pname); ProMdlTypeGet(current_part,(ProMdlType*) ProObjectwindowCreate(pname,ptype, ProWindowActivate(window_id); void ActivateCurrent() ProMdl current_part; ProError err; err = ProMdlCurrentGet( if (err = PRO_TK_NO_ERROR) ActivatePart(current_part); else AfxMessageBox(L激活当前模型出错。); void DlgGear:SetGear(ProMdl part) int i; ProModelitem feature; ProParameter param_m; ProParameter param_z; ProParameter param_alpha; ProParameter param_hax; ProParameter param_cx; ProParameter param_x; ProParameter param_b; ProParamvalue value_m; 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 31 ProParamvalue value_z; ProParamvalue value_alpha; ProParamvalue value_hax; ProParamvalue value_cx; ProParamvalue value_x; ProParamvalue value_b; ProError err_value_m; ProError err_value_z; ProError err_value_alpha; ProError err_value_hax; ProError err_value_cx; ProError err_value_x; ProError err_value_b; /wchar_t fname255; /wcscpy(fname,cy_gearfilename); /err = ProMdlRetrieve(fname, PRO_MDL_PART, /获得cy_gear文件名 ProMdlIdGet(part, ProModelitemInit(part,i,PRO_PART, ProParameterInit(/初始化参数 ProParameterInit( ProParameterInit( ProParameterInit( ProParameterInit( ProParameterInit( ProParameterInit( ReadM();/读入m value_m.type=PRO_PARAM_DOUBLE; value_m.value.d_val=d_m; UpdateData(true); value_z.type=PRO_PARAM_INTEGER; value_z.value.i_val=int_z; ReadAlpha(); value_alpha.type=PRO_PARAM_DOUBLE; value_alpha.value.d_val=d_alpha; ReadHaxCx(); value_hax.type=PRO_PARAM_DOUBLE; 基于 PROE 二次开发的齿轮参数化设计系统 09 机械 12,13 班 32 value_hax.value.d_val=d_hax; value_cx.type=PRO_PARAM_DOUBLE; value_cx.value.d_val=d_cx;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 23090-16:2022 EN Information technology - Coded representation of immersive media - Part 16: Reference software for versatile video coding
- 【正版授权】 IEC 63382-1:2025 EN-FR Management of distributed energy storage systems based on electrically chargeable vehicle batteries - Part 1: Use cases and architectures
- 地质测绘技术优化与成果应用
- 真空包装机密封条保养(课件)
- 果汁澄清工艺改进及稳定性
- 商业秘密侵权的认定与赔偿标准
- 汽车设计(第6版)课件:万向传动设计
- 游船租赁协议书模板
- 巴基斯坦世纪协议书
- 工程劳动合同协议书
- 大学生职业生涯规划与就业创业指导教学教案
- 2024南京交通职业技术学院辅导员招聘笔试真题
- 【2025年】宪法知识竞赛题库及答案
- 衢州市国企招聘考试基础题库
- 门诊部科主任述职报告
- 2025年武汉市蔡甸区总工会公开招聘工会协理员4人考试笔试模拟试题及答案解析
- 房地产估价习题与答案
- WiFi技术简介PPT课件(PPT 95页)
- GB∕T 1927.2-2021 无疵小试样木材物理力学性质试验方法 第2部分:取样方法和一般要求
- 4M变更管理程序含表格
- 城市设计(共32页)
评论
0/150
提交评论