附件一开题报告.doc

1920_基于ProToolkit的车床夹具三维参数化设计

收藏

资源目录
跳过导航链接。
1920_基于ProToolkit的车床夹具三维参数化设计.rar
1920_基于ProToolkit的车床夹具三维参数化设计
附件一开题报告.doc---(点击预览)
任务书.doc---(点击预览)
编程
jiajusheji
pat-2
text
位图
123.dat
jiajusheji.ncb
jiajusheji.sln
jiajusheji.suo
论文
软件使用说明书
压缩包内文档预览:
预览图
编号:79723328    类型:共享资源    大小:194.60MB    格式:RAR    上传时间:2020-05-18 上传人:加Q294****549海量... IP属地:湖南
39
积分
关 键 词:
1920 基于 ProToolkit 车床 夹具 三维 参数 设计
资源描述:
1920_基于ProToolkit的车床夹具三维参数化设计,1920,基于,ProToolkit,车床,夹具,三维,参数,设计
内容简介:
单位代码 0 2 学 号 080105034 分 类 号 TH6 密 级 毕业设计说明书基于Pro/toolkit的车床夹具三维参数化设计 院(系)名称 工学院机械系 专业名称机械设计制造及其自动化 学生姓名 娄旭东 指导教师 孙光华 2012年 4 月 29 日 黄河科技学院毕业设计说明书 第 V 页 基于Pro/toolkit的车床夹具三维参数化设计摘要Pro/Engineer 系统是美国参数技术公司(Parametric Technology Corporation,简称PTC)的产品。PTC 公司提出的单一数据库、参数化、基于特征、全相关的概念改变了机械CAD/CAE/CAM 的传统观念,这种全新的概念已成为当今世界机械CAD/CAE/CAM领域的标准。利用该概念开发出来的第三代机械CAD/CAE/CAM 产品,Pro/Engineer 软件能将设计至生产全过程集成到一起,让所有的用户能够同时进行同一产品的设计制造工作,即实现所谓的并行工程(Concurrent engineering).本文主要是通过proe的开发工具protoolkit结合着vs2005+sql2000来达到多零件的参数化设计和参数化调用,通过对话框的形式对其进行改变。首先本文主要讲述本课题研究的目的意义和在国内的发展形势。其次,本文将讲述本系统的开发环境与开发策略及开发的流程图。再次,本文将讲述车床夹具的设计要点,设计要求与安装误差。各个零件的参数化设计,包括夹具体、过度盘、压板等。最后本文将叙述通过pro/e 软件来完成各个零件的三维图形的设计,然后通过Visual C+语言和pro/toolkit 接口,将完成的三维图形做成一个插件的形式插入到pro/e的菜单栏中,然后再通过输入参数的方式对其做设计变更。关键字:开发工具protoolkit、开发策略、车床夹具、参数化Based on the Pro / Toolkit lathe fixture 3D parametric designAuthor: Lou Xudong Tutor: Sun GonghuaAbstractPro / Engineer system is the United States of America Parametric Technology Corporation ( Parametric Technology Corporation, referred to as PTC ) of the product. PTC has proposed a single database, parametric, feature-based, the related concepts of altered mechanical CAD / CAE / CAM traditional ideas, the concept of this new has become one of the worlds mechanical CAD / CAE / CAM field standard. Using the concept of the third generation developed mechanical CAD / CAE / CAM, Pro / Engineer software can be designed to the whole production process integrated together, so that all users can also design the same product manufacturing work, namely the so-called Concurrent Engineering ( Concurrent Engineering ). This paper is mainly through the development of proe tool Protoolkit combined with vs2005+sql2000to reach many parts parameterized design and call, through the dialog box to the form of their change.First of all this paper focuses on the purpose of the research significance and the domestic development situation.Secondly, this article will talk about the system development environment and development strategy and development flow chart.Again, this article will narrate the lathe fixture design, the design requirements and installation error. Various parts of the parametric design, including the specific folder, excessive disc, pressure plate.Finally, this paper will be described by Pro / E software to complete the various parts of the three-dimensional graphic design, then through Visual C + + and Pro / Toolkit interface, will complete the3D graphics made in the form of a plug is inserted into the Pro / E menu bar, and then through the input parameters in the way of its design change.Keywords: development tools Protoolkit development strategy lathe fixture目录1绪论11.1 课题研究的目的和意义11.1.1 目的11.1.2意义11.2本课题在国内的研究和发展现状11.2.1国内cad的应用现状11.2.2 分析21.3 我国制造业的发展形势31.4 关键的问题及解决的思路:31.4.1 关键问题31.4.2 我的思路32 系统开发环境与开发策略42.1 系统开发环境42.1.1 Pro/toolkit 接口42.1.2 关于Pro/engineer 系统42.2 开发策略53 主要零部件的参数设计与计算63.1车床夹具设计要点63.2车床夹具的安装误差83.3 主要零件的设计83.3.1.夹具体的设计84 各个零件的造型和参数化设计94.1 夹具体的三维造型94.1.1非标准件的设计94.1.2 标准件的三维参数化设计124.2 车床夹具的二次开发(利用protoolkit实现)144.2.1 步骤144.3.车床夹具参数化设计程序开发完成后的Pro/E工作界面51设计总结53致谢54参考文献55黄河科技学院毕业设计说明书 第 56 页 1绪论1.1 课题研究的目的和意义1.1.1 目的机床夹具是机床上用以装夹工件(和引导刀具)的一种装置。其作用是将工件定位,以使工件获得相对于机床和刀具的正确位置,并把工件可靠地夹紧。机床夹具的设计包括生产任务及工作过程分析、工件的定位、工件的夹紧、刀具导向与夹具的对定、夹具连接元件和夹具体的设计、夹具图样设计、夹具精度校核、各类专用夹具的设计。其中机床夹具按使用的机床分类由于各类机床自身工作特点和结构形式各不相同,对所用夹具的结构也相应地提出了不同的要求。按所使用的机床不同,夹具又可分为:车床夹具、铣床夹具、钻床夹具、镗床夹具、磨床夹具、齿轮机床夹具和其他机床夹具等。我所设计的夹具是车床夹具在车床上用来加工工件内、外回转面及端面的夹具称为车床夹具。车床夹具多数安装在主轴上;少数安装在床鞍或床身上。由于设计的零件比较的多,所以需要每次掉零件,然后打开装配图,这样的工作比较的繁重,比较的浪费时间。为了更好地利用这些东西,所以我们借助于计算机辅助设计来,以及通过编写程序来达到调用这些零件,调用装配图,这样就提高了效率,为一个企业的生存提供了竞争的条件。1.1.2 意义车床夹具是车床上的主要的夹具零件,通过对他的参数化设计,来熟练的掌握proe的参数化设计过程,以及对vc+语言的过程。通过程序的编写可以达到改变零件的尺寸来改变装配图的尺寸,然后对一些标准的零件需要建立一些数据库,数据库的作用是把一些零件的主要尺寸储存起来,以便调用。主要的作用是通过proe的开发工具protoolkit结合着vs2005+sql2000来达到多零件的参数化设计和参数化调用,通过对话框的形式对其进行改变。1.2 本课题在国内的研究和发展现状1.2.1 国内cad的应用现状如果让我们调查一下国内企业中CAD 的应用,会得出如下结论,很多所谓CAD应用很好的企业,也只是做到用手工出图转变为计算机出图的现状,当然计算机出图是有很多优点的,漂亮、规范、修改容易、存档方便等。但是如果我们只是停留在这个阶段,就失去了CAD 的作用,因为CAD 是辅助设计,不是辅助绘图。既然是设计就不但想到产品的机械模型,还应想到产品的结构分析、运动机构分析和生产加工处理等,只有这样才能真正发挥CAD 的作用。如果真正做到这一点,单凭二维设计是不够的,虽然传统的制图方法是通过二维视图来描述三维实体,但这种描述做不到进一步的结构分析、运动机构分析和数控加工,不能真正做到生产的自动化,更有甚者,二维视图的描述经常出现二意性和理解错误,因为人们只是按着一些规定在想象三维的模样,限于这种描述方法的缺陷,必须找到更先进的、更合理的三维设计手段,使CAD、CAM、CAE以及PDM容为一体。当然这个目标要有一个过程,但现在我们必须明确。其实,很早就有了先进的解决办法,那就是采用在图形工作站上使用三维CAD 软件,只所以采用工作站是因为当时的微机还不能胜任这项工作,也确实有很多企业看到这种先机,于是不论系统是多么昂贵,不惜血本买进大量的工作站系统,事隔几年,一些企业叫苦不迭,因为血本并未带回效益。但回过头来看,我们发现,这种思想是对的,只是这个想法未变成现实,因为买来的工作站系统在闲置,一个静止的机器怎能去创造效益呢? 究其原因有很多,但最主要的原因是工作站上的系统软件和CAD软件使用起来太复杂,并不能使每个设计人员都能掌握,因此,一旦熟悉操作、使用的(经过培训)技术人员流失,系统马上进入瘫痪,再培养人员是几年以后的事情,转眼到了系统该更新的时候了。是否是我们的设计人员水平低呢?不是,我们的设计水平是够的,是我们的CAD系统太复杂了,不可能在有限的时间内让技术人员既精通本专业,又精通另外的计算机专业。所以必须使系统软件和CAD 软件的使用更简单更容易,只有这样CAD 才能真正得到普及,这也是CAD产业发展、普及的一个方面。1.2.2 分析目前,虽然制造业的厂家均已完成“甩图板”工作,在产品设计中应用二维CAD图形绘制工具-AutoCAD 或是基于AutoCAD 平台的二次开发软件,实现计算机制图并做一些技术文档的编制工作。但是,随着软件应用时间的增长,企业各部门都保存有大量的DWG 格式的产品图纸文件。在设计过程中,由于二维CAD 软件存在局限性,不能完整地表达产品的设计信息。所以,要达到真正意义上的计算机辅助设计,则必须要使用三维CAD 软件,完成诸如零部件的装配干涉检查,有限元分析,机构的运动仿真,数控加工代码的生成。只有运用三维CAD 设计软件,才能在产品设计初始阶段全面了解产品的外观、性能,从而避免产品设计中出现的低级错误.1.3 我国制造业的发展形势目前,随着CAD/CAM/CAPP技术的逢勃发展,计算机越来越成为人们从事机械设计与制造的重要手段。计算机辅助产品造型是所有上述工作的基础。因为只有精确的产品造型,才能对产品的装配与干涉进行检验。基于上述可以总结出我国CAD/CAE/CAM 的发展趋势:1. 新产品使用基于特征建模的三维造型来进行设计;2. 在计算机上完成产品整机的总装配,进行干涉检查和动力学分析;3. 重要零件在计算机上进行有限元刚度、强度分析、模态分析、产品的形状优化设计;4. 建立各单位自己的三维常用零件库,尽量避免重复劳动,提高设计效率;5. 对于有数控加工工序的零部件自动生成加工代码。1.4 关键的问题及解决的思路:1.4.1 关键问题完成本课题关键的就是做好各个零件的参数化设计,包括夹具体、过度盘、压板等。在这个课题中,我是通过pro/e 软件来完成各个零件的三维图形的设计,然后通过Visual C+语言和pro/toolkit 接口,将完成的三维图形做成一个插件的形式插入到pro/e的菜单栏中,然后再通过输入参数的方式对其做设计变更。1.4.2 我的思路用 pro/e 软件对车床夹具进行建模设计的关键还在于正确地建立各个零件的参数,编程确定合乎要求的参数关系式,搞清各个零件变化的每一步骤的目的。掌握了这种经编程并输入参数关系式进行设计的方法即参数化设计方法。就能迅速地对不同参数的零件进行建模,极大地提高工效。2 系统开发环境与开发策略2.1 系统开发环境2.1.1 Pro/toolkit 接口Pro/E 安装盘提供的Pro/Toolkit 工具包主要提供了创建用户应用程序所需函数库文件、头文件、用户指南和示例程序。其中头文件位Pro/Toolkitincludes 目录,库文件位于Pro/Toolkiti486-NTobj目录,这两种类型的文件是用VC开发Pro/E应用程序必不可少的支持文件。在Windows 环境下,可采用各种C 语言为编程语言。我们以WindowsXP为平台,VC+6.0为开发环境,通过Pro/Toolkit接口,来实现对Pro/E的二次开发。2.1.2 关于Pro/engineer 系统Pro/Engineer 系统是美国参数技术公司(Parametric Technology Corporation,简称PTC)的产品。PTC 公司提出的单一数据库、参数化、基于特征、全相关的概念改变了机械CAD/CAE/CAM 的传统观念,这种全新的概念已成为当今世界机械CAD/CAE/CAM领域的标准。利用该概念开发出来的第三代机械CAD/CAE/CAM 产品,Pro/Engineer 软件能将设计至生产全过程集成到一起,让所有的用户能够同时进行同一产品的设计制造工作,即实现所谓的并行工程(Concurrent engineering).Pro/Engineer 系统主要特点如下:1 真正的全相关性,任何地方的修改都会自动反映到所有相关的地方。2 具有真正管理并发进程、实现并行工程的能力。3 具有强大的装配功能,能够始终保持设计者的设计意图。4 容易使用,可以极大地提高设计效率。而且,Pro/Engineer 系统用户界面简洁,概念清晰,符合工程人员的设计思想与习惯。整个系统建立在统一的数据库上,具有完整而统一的模型。另外,Pro/Engineer建立在工作站上,系统独立于硬件,便于移植。Proe/Engineer(简称Pro/E)之所以得到广泛应用,不仅是因为它成熟的参数化技术,更重要的是它具有开放的体系结构和优秀的二次开发工具。Pro/E允许用户和开发者对其进行扩充和修改。此次设计以Pro/E为支撑平台,应用Pro/Toolkit工具包和visual studio 来开发,将用户应用程序编译成可执行文件(.exe文件)或动态链接库文件(.dll文件),在Pro/e环境下加载运行.这样既利用了Pro/E强大的开发功能,又利用了编程效率高的优势。2.2 开发策略目前,对于系统的开发方法主要有三种:1 完全自主版权的开发;2 基于/软件平台的开发;3 基于某个通用软件的开发.其中第一种方法一切从底层做起,开发周期最长,适于大型系统的开发;第二种方法开发周期较短,但开发平台价格昂贵,适合大中型系统的开发;第三种方法开发周期最短,开发成本最低,且灵活多变,适合中小型系统的开发。本次设计采用了第三种方法,即利用美国公司开发的/三维设计软件,再结合Pro/toolkit 接口以及V C+语言对用于夹具的零件进行参数化设计。Pro/Toolkit 应用程序共有2 种工作方式:同步模式包括两种(SynchronousMode)和异步模式(Asyn-chronousMode)。同步模式分为DLL模式和多进程模式(Multi-processMode)。DLL模式是指运用动态链接库将Pro/Toolkit 应用程序集成到Pro/E 中,在该模式下,Pro/Toolkit 应用程序与Pro/E 之间的信息交换是通过直接的函数调用来实现。多进程模式是指Pro/Toolkit代码经过编译和连接后生成一个.EXE文件,作为Pro/E的一个子程序来运行。异步模式可以开发出独立于Pro/E 系统环境的应用程序,有自己独立的程序界面。一般来说在没有特殊的要求下采用同步模式中的DLL 模式,这种方法实现了Pro/E 与应用程序之间的无缝集成。基本作法是用交互方式创建三维模型,再利用Pro/E的参数功能建立设计参数,然后由Pro/Toolkit 应用程序检索出模型的设计参数,并提供参数的编辑功能和根据新的设计参数再生三维模型的功能。其过程如图2-1 所示: 图2-1 实现参数化设计的设计流程图3 主要零部件的参数设计与计算3.1车床夹具设计要点本设计由于零件的特殊性,需采用角铁式车床夹具。角铁式车床夹具的结构特点是具有类似角铁的夹具体。它常用于加工壳体、支座,接头类零件上的圆柱面及端面。当被加工工件的主要定位基准是平面,被加工面的轴线对主要位基准面保持一定的位置关系(平行或成一定的角度)时,相应地夹具上的平面定位件设在与车床主轴轴线相平行或成一定角度的位置上。1. 定位装置的设计要求在车床上加工回转面时 要求工件被加工面的轴线与车床主轴的旋转轴线重合,夹具上定位装置的结构和布置,必须保证这一点。因此,对于轴套类和盘类工件,要求夹具定位元件工作表面的对称中心线与夹具的回转轴线重合。对于壳体、接头或支座等工件,被加工的回转面轴线与工序基准之间有尺寸联系或相互位置精度要求时,应以夹具轴线为基准确定定位元件工作表面的位置。2夹紧装置的设计要求在车削过程中,由于工件和夹具随主轴旋转,除工件受切削扭矩的作用外,整个夹具还受到离心力的作用。此外,工件定位基准的位置相对于切削力和重力的方向是变化的。因此,夹紧机构必须产生足够的夹紧力,自锁性能要可靠。对于角铁式夹具,还应注意施力方式,防止引起夹具变形。3夹具与机床主轴的连接车床夹具与机床主轴的连接精度对夹具的回转精度有决定性的影响。因此,要求夹具的回转轴线与主轴轴线应具有尽可能高的同轴度。心轴类车床夹具以莫氏锥柄与机床主轴锥孔配合连接,用螺杆拉紧。有的心根据径向尺寸的大小,其它专用夹具在机床主轴上的安装连接一般有两种方式;(1) 对于径向尺寸D140mm,或D(23)d的小型夹具,一般用锥柄安装在车床主轴的锥孔中,并用螺杆拉紧。这种连接方式定心精度较高。 (2) 对于径向尺寸较大的夹具。一般通过过渡盘与车床主轴头端连接。过渡盘的使用,使夹具省去了与特定机床的联接部分,从而增加了通用性,即通过同规格的过渡盘可用于别的机床。同时也便于用百分表在夹具校正环或定位面上找正的办法来减少其安装误差。因而在设计圆盘式车床夹具时,就应对定位面与校正面间的同轴度以及定位面对安装平面的垂直度误差提出严格要求。4总体结构设计要求车床夹具一般是在悬臂的状态下工作,为保证加工的稳定性,夹具的结构应力求紧凑、轻便,悬伸长度要短,使重心尽可能靠近主轴。由于加工时夹具随同主轴旋转,如果夹具的总体结构不平衡,则在离心力的作用下将造成振动,影响工件的加工精度和表面粗糙度,加剧机床主轴和轴承的磨损。因此,车床夹具除了控制悬伸长度外,结构上还应基本平衡。角铁式车床夹具的定位装置及其它元件总是安装在主轴轴线的一边,不平衡现象最严重,所以在确定其结构时,特别要注意对它进行平衡。平衡的方法有两种:设置配重块或加工减重孔。为保证安全,夹具上的各种元件一般不允许突出夹具体圆形轮廓之外。此外,还应注意切屑缠绕和切削液飞溅等问题,必要时应设置防护罩。3.2车床夹具的安装误差夹具的安装误差值与下列因素有关:1夹具定位元件与本体安装基面的相互位置误差。2夹具安装基面本身的制造误差以及与安装面的连接误差。(1).对于心轴。夹具的安装误差就是心轴工作表面轴线与中心孔或者心轴锥柄轴线间的同轴度误差。(2).对于其它车床专用夹具,一般使用过渡盘与主轴轴颈连接。当过渡盘是与夹具分离的机床附件时,产生夹具安装误差的因素是:定位元件与夹具体止口轴线间的同轴度误差,或者相互位置尺寸误差;夹具体止口与过渡盘凸缘间的配合间隙,过渡盘定位孔与主轴轴颈间的配合间隙。3.3 主要零件的设计 3.3.1.夹具体的设计根据零件的加工要求以及零件的尺寸要求对夹具体进行了设计。如图3-1 图3-1 夹具体的零件图夹具体中间的 d 孔为工艺孔,作为组装夹具时尺寸的测量工艺孔,也可作为夹具安装到车轴主轴时找正夹具中心与机床主轴回转轴线同轴度的找正孔。这个工艺孔是角铁式夹具上很重要的一个结构要素。夹具与机床主轴的连接是通过过渡盘实现的。角铁式夹具体用螺钉与过渡盘联接,过渡盘与机床主轴前端部连接。过渡盘一般均为车床的附件随车床一起提供,如没有过渡盘则应根据车床主轴端部结构自行设计。4 各个零件的造型和参数化设计4.1 夹具体的三维造型4.1.1非标准件的设计 A.夹具体的三维设计根据零件的尺寸及各个部件之间的配合关系,以及角铁式夹具的规定,对其进行三维化参数设计jiajuti.prt,并最终组装成装配图asm.0003.asm。建立三维模型如图4-1: 图4-1 夹具体三维图和二维图 由于夹具体不是标准件,不必要对其进行建立数据库,要对其进行参数设计,利用proe中的参数和关系对其进行约束,为夹具体设置六个参数,分别是顶圆到中心的距离l1,大外圆的直径l2,下底圆的直径l3,肋板的长度l4,高度l5,肋板到中心线的距离l6,肋板上的小圆之间的距离是l7,支撑钉圆到中心的距离是l8,螺栓圆到中心的距离为l9,根据proe中参数关系设置一下关系d4=L1,d3=L2,d8=L3,d9=L4,d11=L5,d12=L6,d79=L9,d6=L8,d27=L7。在建立参数之间关系的时候,我是根据零件的外径来定夹具体的大外径的,根据工件外径的尺寸与大外径l2的5倍关系,以及底圆l3与零件的外径尺寸的2倍关系,然后根据定位零件的v形块来定l7,以及肋板的长度l4和高度l5,根据v形块的宽度来定l6,l8也是根据零件内径的关系来确定的,还有根据平衡块的位置在什么地方合适来定l1这个尺寸。 B. 利用同样的方法对过度盘,平衡块,连接快,上v块进行三维化设计。其三维模型如图4-2、4-3、4-4、4-5所示: 图4-2 过度盘三维图和二维图并对过度盘进行参数设计,分别是大圆直径w1,凸缘圆直径w2,螺栓圆的到中心的距离ll,连接孔到底圆的距离ww。大圆的直径是根据夹具体的外圆确定的,凸缘圆直径是根据夹具体的底圆确定的以及ll也是根据夹具体的大小来确定的,ww是根据连接快的螺纹孔到过度盘的底圆距离的合适与否来确定的,过度盘的内圆直径是根据零件的外径尺寸来确定的。 图4-3 平衡块三维图 图4-4 连接块三维图对平衡块,连接快和上v块进行同样的三位参数设计,并设置一些参数值来改变他们之间的关系,以达到变化。 图4-5 上v块三维图4.1.2 标准件的三维参数化设计1.零件的三维设计 由于标准件有相应的尺寸要求,需要对其进行建立数据库,使其数据更加的规范。(1)圆柱销的三维参数设计,其三维造型如图4-6所示:图4-6 销子的三维图对其进行设计参数,直径D和长度H,由于他们都是标准件所以在编写程序的时候需要使用sql语句,通过关键字来找到合适的零件尺寸。(2)垫圈三维参数设计,其三维造型如图4-7所示:图4-7 垫圈的三维图对其进行参数设计,并设置参数,内径d, 外径s和厚度h。(3).螺母三维参数设计,其三维造型如图4-8所示:图4-8 螺母的三维图对螺母进行参数设置,内径d和高度h。(4).螺栓三维设计,其三维造型如图4-9所示:图4-9 螺栓的三维图对其进行参数设置,直径d和长度h。并利用同样的方法对v块和压板,支撑钉进行设计。2.建立工程数据库和各个标准零件的数据表。使用SQL Server 2000建立一个“Engineering”数据库,并在其中建立一系列的零件数据表,表结构为: 表4.1 圆柱销表结构列名数据类型长度允许空长度大于Float 8长度到Float 8 D Int 4 C Float 8 输入以下数据: 长度大于长度到 D C83030.584040.63105050.8126061.2148081.6189510222140122.52618063 4.2垫圈表结构列名 数据类型长度 允许空公称尺寸dInt4d1float8d2float8hfloat8并输入一下数据:公称尺寸dd1d2h33.260.544.380.555.39166.4111.686.4151.6并利用同样的方法对螺母,螺栓,压板,v块和支撑钉进行数据的建表和数据的输入,并可以得到以上的数据类型。4.2 车床夹具的二次开发(利用protoolkit实现)4.2.1 步骤1Vs2005配置启动vs2005。在“项目和解决方案”中选择“VC+目录”,在“显示以下内容的目录”中选择“包含文件”,加入以下文件(其中,D:是pro/E的安装盘符):D:PTCproeWildfire4.0protoolkitincludes D:PTCproeWildfire4.0protoolkitprotk_applsincludesD:PTCproeWildfire4.0prodevelopincludes在“显示以下内容的目录”中选择“库文件”,加入以下文件:D:PTCproeWildfire4.0protoolkiti486_ntobjD:PTCproeWildfire4.0prodevelopi486_ntobj(注:请认真检查pro/E的安装目录(路径名)。在以上配置中,输入路径名时不能有空格,比如在以上设置中输入“D:Program FilesproeWildfire 4.0”是不对的,要把路径中的空格去掉,如“D:proeWildfire4.0” 。如果已经按默认设置安装了pro/E(此时安装目录中是有空格的),则必须用D:Progra1proeWi1.0 输入。)(以上工作仅做一次。)2建立新项目,并做项目配置在vs2005中,建立一个新项目,使用MFC DLL模板,项目名称为jiajusheji 。vs2005会自动建立名为jiajusheji的文件夹。配置以下三个项目属性:(1) 常规字符集,将其中的默认“使用Unicode字符集”改为“使用多字节字符集”(2) C/C+预处理器,在“预处理器定义”里加入:PRO_USE_VAR_ARGS (3) 连接器输入,在“附加依赖项”里加入:wsock32.libmpr.libpsapi.libprotk_dllmd.lib(4)建立信息和菜单文件在项目所在目录下,建立一个text目录在text目录下,新建一个信息文本文件,取名为msg.txt,文件内容为:MyHello&欢迎使用基于pro/Toolkit的机床夹具三维参数化设计系统!#MyBye&再见!#在text目录下,再新建一个信息文本文件,取名为menu.txt,文件内容为:m_jiajusheji&车床夹具设计#b_para&零件参数输入#paratip&修改零件参数#b_lingjian&元件参数输入#lingjiantip&输入工件的孔径等参数#(5)源代码输入 在jiajusheji.cpp文件中,输入以下代码(删除所有已有代码):/ jiajusheji.cpp : 定义DLL 的初始化例程。#include stdafx.h#include jiajusheji.h#include dlg_para.h#include dlg_lingjian.h#include /包含pro/Toolkit必要的头文件#include #include #include #include ProFileName msgfil; /定义文件类型的变量,用于显示消息/这三个函数的定义在后面,此处仅说明函数原型void MyDLG();void MyDLGlingjian();static uiCmdAccessState UserAccessTestMenu (uiCmdAccessMode);/初始化函数,此函数将在启动钻模设计辅助应用程序时被调用执行extern C int user_initialize() AfxEnableControlContainer();ProError status;ProName menumsgfile; /定义名称类型的变量,用于生成菜单uiCmdCmdId cmd_id; /定义菜单项标识类型的变量/在pro/E的主菜单栏上添加一个新的菜单ProStringToWstring(menumsgfile,menu.txt);status = ProMenubarMenuAdd(jiajusheji,m_jiajusheji,Help, PRO_B_FALSE,menumsgfile);/添加新菜单下的第一个菜单项status = ProCmdActionAdd(MyDLG,(uiCmdCmdActFn)MyDLG,uiCmdPrioDefault,UserAccessTestMenu,PRO_B_TRUE,PRO_B_TRUE,&cmd_id);/先指定回调函数,即点击此菜单后要执行什么动作(本菜单项的功能是打开工件参数输入对话框)status = ProMenubarmenuPushbuttonAdd(jiajusheji,para,b_para,paratip,NULL,PRO_B_TRUE,cmd_id,menumsgfile);/然后才添加菜单项/再添加第二个菜单项status = ProCmdActionAdd(MyDLGlingjian,(uiCmdCmdActFn)MyDLGlingjian,uiCmdPrioDefault,UserAccessTestMenu,PRO_B_TRUE,PRO_B_TRUE,&cmd_id);status = ProMenubarmenuPushbuttonAdd(jiajusheji,lingjian,b_lingjian,lingjiantip,para,PRO_B_TRUE,cmd_id,menumsgfile);/在pro/E的消息区显示消息ProStringToWstring(msgfil,msg.txt);ProMessageDisplay(msgfil,MyHello);return(0);/菜单可访问性(此函数的定义一般不需修改!)static uiCmdAccessState UserAccessTestMenu(uiCmdAccessMode access_mode)return (ACCESS_AVAILABLE);void MyDLG() /自定义的第一个菜单项的菜单回调函数AFX_MANAGE_STATE(AfxGetStaticModuleState();dlg_lingjian dlg_lingjian; /先定义一个对话框类对象dlg_lingjian.DoModal(); /以模态方式打开工件尺寸参数输入对话框(其中内容视对话框类的名称而变)void MyDLGlingjian() /自定义的第二个菜单项的菜单回调函数AFX_MANAGE_STATE(AfxGetStaticModuleState();dlg_para dlg_para;dlg_para.DoModal(); /打开钻模板参数设置对话框/结束函数,此函数将在停止车床夹具设计辅助应用程序时被调用执行extern C void user_terminate()ProMessageDisplay(msgfil,MyBye); /在pro/E的消息区显示消息return;(6)加入工件参数输入对话框事先做好下面这幅图,并保存成位图(BMP)格式的文件如图局4-10:图4-10 零件图添加一个位图资源(使用“添加资源”对话框中的“导入”按钮,导入位图)如图4-11:图4-11 添加资源 添加一个对话框资源如图4-12:图4-12 对话框1 在上面的原始对话框中,添加静态文本控件(Static Text)、编辑控件(Edit Control)和图片控件(Picture Control),并将对话框界面修改成以下布局如图4-13: 图4-13 零件参数对话框框空白处点击鼠标右键,在弹出的快捷菜单中选择“添加类”,类名称为dlg_lingjian。再添加一个对话框,加入一些按钮控件,并将对话框界面作如下的布局如图4-14:图4-14 元件参数对话框框空白处点击鼠标右键,在弹出的快捷菜单中选择“添加类”,类名称为dlg_para。事先做好下面这幅图,并保存成位图(BMP)格式的文件如图4-15所示: 图4-15 各种零件的三维图设计添加一个位图资源(使用“添加资源”对话框中的“导入”按钮,导入位图)如图4-16所示: 图4-16 添加资源框4.2.2 再对每个按钮添加个对话框资源:以夹具体和垫圈为例子来进行说明。A 夹具体 图4-17 对话框2如图4-17所示在上面的原始对话框中,添加静态文本控件(Static Text)、编辑控件(Edit Control)和图片控件(Picture Control),并将对话框界面修改成以下布局如图4-18所示。图4-18 对话框31.为工件参数输入对话框添加类并为编辑控件关联成员变量 在对话框空白处点击鼠标右键,在弹出的快捷菜单中选择“添加类”,类名称为dlg_jiajuti。选中编辑控件,点击鼠标右键,在弹出的快捷菜单中选择“添加变量”,为每个编辑控件添加一个double类型的变量,变量名取为m_l1,m_l2,m_3,m_l4,m_l5,m_l6。这个成员变量的初始值为零,下面改变初始值。打开dlg_jiajuticpp源程序文件,找到代码段,并作如下声明:dlg_jiajuti:dlg_jiajuti(CWnd* pParent /*=NULL*/): CDialog(dlg_jiajuti:IDD, pParent), m_l1(c), m_l2(a), m_l3(b), m_l4(110), m_l5(210), m_l6(65), m_l7(96), m_l8(60)2.为“确定”按钮添加消息处理代码回到对话框设计界面,双击“确定”按钮,会出现以下程序段(这是“确定”按钮的单击事件过程代码):/ dlg 消息处理程序void dlg_jiajuti:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码OnOK();将其中的两行代码删除,并用以下的程序段替换:#include stdafx.h#include jiajusheji.h#include dlg_jiajuti.h#include /包含pro/Toolkit必要的头文件#include #include #include ProParameter.h#include ProSolid.h#include ProMdl.h#include ProModelItem.h#include ProUIInputpanel.h#include #import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF) rename(BOF,adoBOF) /上面一行导入ADO相关的类声明double a=300,b=200,c=125;/ dlg_jiajuti 对话框IMPLEMENT_DYNAMIC(dlg_jiajuti, CDialog)dlg_jiajuti:dlg_jiajuti(CWnd* pParent /*=NULL*/): CDialog(dlg_jiajuti:IDD, pParent), m_l1(c), m_l2(a), m_l3(b), m_l4(110), m_l5(210), m_l6(65), m_l7(96), m_l8(60)dlg_jiajuti:dlg_jiajuti()void dlg_jiajuti:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_l1);DDX_Text(pDX, IDC_EDIT2, m_l2);DDX_Text(pDX, IDC_EDIT3, m_l3);DDX_Text(pDX, IDC_EDIT4, m_l4);DDX_Text(pDX, IDC_EDIT5, m_l5);DDX_Text(pDX, IDC_EDIT6, m_l6);DDX_Text(pDX, IDC_EDIT7, m_l7);DDX_Text(pDX, IDC_EDIT8, m_l8);BEGIN_MESSAGE_MAP(dlg_jiajuti, CDialog)ON_BN_CLICKED(IDOK, &dlg_jiajuti:OnBnClickedOk)END_MESSAGE_MAP()/ dlg_jiajuti 消息处理程序void dlg_jiajuti:OnBnClickedOk()ProMdl model; /模型ProFamilyName partname; /零件模型文件名int nWindowID; /窗口标识ProModelitem feature; /特征ProParameter param1,param2,param3,param4,param5,param6,param7,param8; /参数(变量个数应以所有模型中参数最多的为准)ProParamvalue value1,value2,value3,value4,value5,value6,value7,value8; /参数值(同上)/打开钻套模型ProStringToWstring(partname,jiajuti.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); /提取工作目录中的零件模型ProMdlDisplay(model); /显示模型 ProMdlWindowGet(model,&nWindowID); /获取模型窗口标识符ProWindowActivate(nWindowID); /激活模型窗口 /初始化钻套参数int i;double l4,l5,l6,l7,l8;ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, Ll1, ¶m1); /这些参数在零件模型中应提前设置好ProParameterInit(&feature, Ll2, ¶m2);ProParameterInit(&feature, Ll3, ¶m3);ProParameterInit(&feature, Ll4, ¶m4);ProParameterInit(&feature, Ll5, ¶m5);ProParameterInit(&feature, Ll6, ¶m6);ProParameterInit(&feature, Ll7, ¶m7);ProParameterInit(&feature, Ll8, ¶m8);UpdateData(true); /将编辑框中的数据传送到关联变量 l4=m_l4; /直接取用变量的值即可 l5=m_l5;l6=m_l6;l7=m_l7;l8=m_l8; /为钻套参数赋新值(一定要对应上面个参数的顺序) value1.type=PRO_PARAM_DOUBLE; /在pro/E中,所有的参数都是实数类型 value1.value.d_val=c; /钻套孔径即为工件钻孔直径ProParameterValueSet(¶m1, &value1); /设置新的参数值 value2.type=PRO_PARAM_DOUBLE; value2.value.d_val=a; /钻套外径,atof函数将串类型转换成实数类型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE; value3.value.d_val=b; /钻套肩径ProParameterValueSet(¶m3, &value3); value4.type=PRO_PARAM_DOUBLE; value4.value.d_val=l4; /钻套长度ProParameterValueSet(¶m4, &value4);value5.type=PRO_PARAM_DOUBLE; value5.value.d_val=l5; /钻套长度ProParameterValueSet(¶m5, &value5); value6.type=PRO_PARAM_DOUBLE; value6.value.d_val=l6; /钻套长度ProParameterValueSet(¶m6, &value6);value7.type=PRO_PARAM_DOUBLE; value7.value.d_val=l7; /钻套长度ProParameterValueSet(¶m7, &value7);value8.type=PRO_PARAM_DOUBLE; value8.value.d_val=l8; /钻套长度ProParameterValueSet(¶m8, &value8);ProSolidRegenerate(ProSolid)model, PRO_B_TRUE); /再生模型ProMdlSave(model); /保存模型 /以上钻套处理完毕/ OnOK(); /关闭对话框3.为dlg_jiajuti.cpp源程序添加必要的头文件#include /包含pro/Toolkit必要的头文件#include #include #include ProParameter.h#include ProSolid.h#include ProMdl.h#include ProModelItem.h#include ProUIInputpanel.h#include #import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF) rename(BOF,adoBOF) /上面一行导入ADO相关的类声明B垫圈添加一个对话框资源如图4-19所示:图4-19 对话框4在上面的原始对话框中,添加静态文本控件(Static Text)、编辑控件(Edit Control)和图片控件(Picture Control),并将对话框界面修改成以下布局如图4-20所示。图4-20 对话框51.为工件参数输入对话框添加类并为编辑控件关联成员变量 在对话框空白处点击鼠标右键,在弹出的快捷菜单中选择“添加类”,类名称为dlg_dianquan。选中编辑控件,点击鼠标右键,在弹出的快捷菜单中选择“添加变量”,为IDC_EDIT1添加一个double类型的变量,变量名取为m_dianquan。这个成员变量的初始值为零,下面改变初始值。打开dlg_dianquancpp源程序文件,找到如下代码段并作相应的变量声明:dlg_dianquan:dlg_dianquan(CWnd* pParent /*=NULL*/): CDialog(dlg_dianquan:IDD, pParent), m_dianquan(D_QUAN)2.为“确定”按钮添加消息处理代码回到对话框设计界面,双击“确定”按钮,会出现以下程序段(这是“确定”按钮的单击事件过程代码):/ dlg 消息处理程序void dlg_dianquan:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码OnOK();将其中的两行代码删除,并用以下的程序段替换:/ dlg_dianquan 消息处理程序void dlg_dianquan:OnBnClickedOk() /OK按钮处理程序UpdateData(true); /将编辑框中的数据(工件孔径)传送到关联变量m_DHole /根据SQL语句生成记录集m_p4Recordset.CreateInstance(_uuidof(Recordset);_variant_t RecordsAffected; CString vSQL; vSQL.Format(SELECT * FROM 垫圈WHERE 公称尺寸d=%d,m_dianquan);m_p4Recordset=m_p4Connection-Execute(_bstr_t(vSQL),&RecordsAffected,adCmdText); if(m_p4Recordset-adoBOF)&(m_p4Recordset-adoEOF)AfxMessageBox(没有满足条件的记录!);m_p4Recordset-Close();return;/从记录集获取相应的值,并赋给变量/while(!m_p4Recordset-adoEOF) /如果要处理多条记录,则可用循环语句/ /目前记录集中只会有一条记录/int d; /存垫圈孔径CString S,H; /存垫圈外径,高度。暂时全部设为串类型,后面再进行转换 _variant_t vFieldValue;D_QUAN=m_dianquan; /直接取用文本框中所输入的垫圈直径(关联变量的值)vFieldValue = m_p4Recordset-GetCollect(S);/获取垫圈外径S = (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_p4Recordset-GetCollect(H);/获取垫圈高度H = (char*)_bstr_t(vFieldValue); /赋给变量/m_p4Recordset-MoveNext(); /将记录指针移到下一条记录/声明变量ProMdl model; /模型ProFamilyName partname; /零件模型文件名int nWindowID; /窗口标识ProModelitem feature; /特征ProParameter param1,param2,param3; /参数(变量个数应以所有模型中参数最多的为准)ProParamvalue value1,value2,value3; /参数值(同上)/*打开垫圈模型*/ProStringToWstring(partname,dianquan.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); /提取工作目录中的零件模型ProMdlDisplay(model); /显示模型 ProMdlWindowGet(model,&nWindowID); /获取模型窗口标识符ProWindowActivate(nWindowID); /激活模型窗口 /初始化垫圈参数int i;ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, LD, ¶m1); /这些参数在零件模型中应提前设置好ProParameterInit(&feature, LS, ¶m2);ProParameterInit(&feature, LH, ¶m3); /为垫圈参数赋新值(一定要对应上面个参数的顺序) value1.type=PRO_PARAM_DOUBLE; /在pro/E中,所有的参数都是实数类型 value1.value.d_val=D_QUAN; /垫圈孔径即为工件垫圈直径ProParameterValueSet(¶m1, &value1); /设置新的参数值 value2.type=PRO_PARAM_DOUBLE; value2.value.d_val=atof(S) ; /垫圈外径,atof函数将串类型转换成实数类型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE; value3.value.d_val=atof(H); /垫圈高度ProParameterValueSet(¶m3, &value3);ProSolidRegenerate(ProSolid)model, PRO_B_TRUE); /再生模型ProMdlSave(model); /保存模型 /以上垫圈处理完毕/ /打开装配文件ProMdlRetrieve(Lasm0003.asm,PRO_MDL_ASSEMBLY, &model);ProMdlDisplay(model);ProSolidRegenerate(ProSolid)model, PRO_B_TRUE); /一定要再生装配模型OnOK(); /关闭对话框标准件和非标准件之间共同地方是:3.为dlg_dianquan.cpp源程序添加必要的头文件、添加ADO类支持和相关变量#include /包含pro/Toolkit必要的头文件#include #include #include ProParameter.h#include ProSolid.h#include ProMdl.h#include ProModelItem.h#include ProUIInputpanel.h#include #import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF) rename(BOF,adoBOF) /上面一行导入ADO相关的类声明static int D_QUAN=8; /静态变量,存对话框中输入的工件钻孔直径_ConnectionPtr m_p4Connection; /定义数据库连接对象_RecordsetPtr m_p4Recordset; /定义记录集对象4为dlg_dianquan类重载OnInitDialog()函数在类视图下,选中dlg_dianquan类,在属性面板中点击“重写”按钮,在下方找到OnInitDialog,选择右边的“添加OnInitDialog”如图4-21、4-22所示:图4-21 类视图图4-22 属性框 此时代码窗口中会显示以下内容:BOOL dlg_dianquan:OnInitDialog()CDialog:OnInitDialog();/ TODO: 在此添加额外的初始化return TRUE; / return TRUE unless you set the focus to a control/ 异常: OCX 属性页应返回FALSE这个函数在对话框显示之前被调用执行。添加代码到“return TRUE;”这一行的上方,添加后的代码为:BOOL dlg_dianquan:OnInitDialog()CDialog:OnInitDialog();/ TODO: 在此添加额外的初始化 /连接数据库/ :CoInitialize(NULL); HRESULT hr; tryhr=m_p4Connection.CreateInstance(_uuidof(Connection);if(SUCCEEDED(hr)m_p4Connection-ConnectionString=Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Engineering;Data Source=20110322-1055;m_p4Connection-ConnectionTimeout=20;/等待连接的时间为shr=m_p4Connection-Open(,adConnectUnspecified);if(FAILED(hr)AfxMessageBox(打开数据库失败!);return true;elseAfxMessageBox(创建连接对象失败!);return true;catch(_com_error e)AfxMessageBox(数据库连接失败!);return true; / AfxMessageBox(数据库连接成功!); 显示连接成功的消息return TRUE; / return TRUE unless you set the focus to a control/ 异常: OCX 属性页应返回FALSE5.编译生成动态连接库文件拉开“生成”菜单,选择“生成解决方案”或“生成jiajusheji”。此时会出现以下错误提示如图4-23所示:图4-23 错误列表出错是因为建立MFC DLL项目时,VS2005在stdafx.h中包含了如下两个操作数据库类的头文件(afxdb.h和 afxdao.h),从而与ADO库中的类型定义冲突。解决这个错误的方法很简单,只要去掉stdafx.h中下面所示的两行代码(即不再包含这两个头文件)即可:#include / MFC ODBC 数据库类#include / MFC DAO 数据库类再次拉开“生成”菜单,选择“生成解决方案”或“生成jiajusheji”。如无错误,则可看到下面这行提示:= 全部重新生成: 1 已成功, 0 已失败, 0 已跳过=得到的jiajusheji.dll动态连接库文件在jiajusheji/debug目录中。6.编写注册文件在工程目录下,建立一个扩展名为.dat的文本文件,文件名自定,内容为:name jiajushejistartup dllallow_stop TRUEexec_file G:娄旭东编程jiajushejidebugjiajusheji.dlltext_dir G:娄旭东编程jiajushejiTextrevision 1151end7.测试确认SQL Server已经启动。启动pro/E,将第1步所建立的文件夹设置成pro/E的工作目录。在pro/E中,拉开“工具”菜单,选择“辅助应用程序”, 在弹出的对话框中点击“注册”,选择第15步所编写的注册文件,点击“启动”,则pro/E主菜单栏上应出现“车床夹具设计”菜单,同时pro/E的消息区会显示相应的消息。关闭“辅助应用程序”对话框。执行“车床夹具设计”菜单命令进行测试。如果需要修改程序,则必须先停止“辅助应用程序”,否则将无法再次生成DLL文件。其他零件的编程过程和上面一样,在这就不多说了。注意:运行前,先要把proe的工作目录设置为你的装配图和零件图所在的位置。以上是对单个的元件进行的参数化设计和编程。下面是对夹具的整体进行编程和修改参数,以达到通过改变加工零件的尺寸来改变整个夹具的尺寸。我现在对程序的编写加以说明:/ dlg_lingjian.cpp : 实现文件/#include stdafx.h#include jiajusheji.h#include dlg_lingjian.h#include /包含pro/Toolkit必要的头文件#include #include #include ProParameter.h#include ProSolid.h#include ProMdl.h#include ProModelItem.h#include ProUIInputpanel.h#include #import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF) rename(BOF,adoBOF) /上面一行导入ADO相关的类声明static double L_jian=65,L_1=8,L_2=69.5,D_H=42.54,a=300,b=200,c=125;_ConnectionPtr m_pConnection; /定义数据库连接对象_RecordsetPtr m_pRecordset; /定义记录集对象/ dlg_lingjian 对话框IMPLEMENT_DYNAMIC(dlg_lingjian, CDialog)dlg_lingjian:dlg_lingjian(CWnd* pParent /*=NULL*/): CDialog(dlg_lingjian:IDD, pParent), m_lingjian(L_jian)dlg_lingjian:dlg_lingjian()void dlg_lingjian:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_lingjian);BEGIN_MESSAGE_MAP(dlg_lingjian, CDialog)ON_BN_CLICKED(IDOK, &dlg_lingjian:OnBnClickedOk)END_MESSAGE_MAP()/ dlg_lingjian 消息处理程序void dlg_lingjian:OnBnClickedOk()UpdateData(true); /将编辑框中的数据(工件孔径)传送到关联变量m_lingjian /根据SQL语句生成记录集m_pRecordset.CreateInstance(_uuidof(Recordset);_variant_t RecordsAffected; CString vSQL; vSQL.Format(SELECT * FROM v块WHERE D大于=%f,m_lingjian,m_lingjian);m_pRecordset=m_pConnection-Execute(_bstr_t(vSQL),&RecordsAffected,adCmdText); if(m_pRecordset-adoBOF)&(m_pRecordset-adoEOF)AfxMessageBox(没有满足条件的记录!);m_pRecordset-Close();return;/从记录集获取相应的值,并赋给变量/while(!m_pRecordset-adoEOF) /如果要处理多条记录,则可用循环语句/ /目前记录集中只会有一条记录/double d;/v形块宽度CString N,L,B,A,A2,H,L1,A1; /v宽度,孔中心距,孔直径及阶梯孔深度。暂时全部设为串类型,后面再进行转换 _variant_t vFieldValue; L_jian=m_lingjian;vFieldValue = m_pRecordset-GetCollect(N); /获取v宽度N= (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_pRecordset-GetCollect(L);/获取孔中心距L= (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_pRecordset-GetCollect(B);/获取孔直径B= (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_pRecordset-GetCollect(A);/获取阶梯孔深度A = (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_pRecordset-GetCollect(A2);/获取阶梯孔深度A2 = (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_pRecordset-GetCollect(H);/获取阶梯孔深度H = (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_pRecordset-GetCollect(L1);/获取阶梯孔深度L1= (char*)_bstr_t(vFieldValue); /赋给变量vFieldValue = m_pRecordset-GetCollect(A1);/获取阶梯孔深度A1 = (char*)_bstr_t(vFieldValue); /赋给变量/m_pRecordset-MoveNext(); /将记录指针移到下一条记录/声明变量ProMdl model; /模型ProFamilyName partname; /零件模型文件名int nWindowID; /窗口标识ProModelitem feature; /特征ProParameter param1,param2,param3,param4,param5,param6,param7,param8,param9; /参数(变量个数应以所有模型中参数最多的为准)ProParamvalue value1,value2,value3,value4,value5,value6,value7,value8,value9; /参数值(同上)/打开v形块模型ProStringToWstring(partname,vxingkuai.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); /提取工作目录中的零件模型ProMdlDisplay(model); /显示模型 ProMdlWindowGet(model,&nWindowID); /获取模型窗口标识符ProWindowActivate(nWindowID); /激活模型窗口 /初始化参数int i;ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, LD, ¶m1); /这些参数在零件模型中应提前设置好ProParameterInit(&feature, LN, ¶m2);ProParameterInit(&feature, LL, ¶m3);ProParameterInit(&feature, LB, ¶m4); ProParameterInit(&feature, LA, ¶m5);ProParameterInit(&feature, LA2, ¶m6);ProParameterInit(&feature, LH, ¶m7);ProParameterInit(&feature, LL1, ¶m8);ProParameterInit(&feature, LA1, ¶m9); /为v形块参数赋新值(一定要对应上面个参数的顺序) value1.type=PRO_PARAM_DOUBLE; /在pro/E中,所有的参数都是整数类型 /*AfxMessageBox(*/ value1.value.d_val=L_jian; /v形块长度即为工件尺寸ProParameterValueSet(¶m1, &value1); /设置新的参数值 value2.type=PRO_PARAM_DOUBLE; value2.value.d_val=atof(N) ; /v宽度,atof函数将串类型转换成整数类型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE; value3.value.d_val=atof(L); /孔中心距ProParameterValueSet(¶m3, &value3); value4.type=PRO_PARAM_DOUBLE; value4.value.d_val=atof(B); /孔直径ProParameterValueSet(¶m4, &value4); value5.type=PRO_PARAM_DOUBLE; value5.value.d_val=atof(A); /阶梯孔深度ProParameterValueSet(¶m5, &value5);value6.type=PRO_PARAM_DOUBLE; value6.value.d_val=atof(A2); /阶梯孔深度ProParameterValueSet(¶m6, &value6);value7.type=PRO_PARAM_DOUBLE; value7.value.d_val=atof(H); /阶梯孔深度ProParameterValueSet(¶m7, &value7);value8.type=PRO_PARAM_DOUBLE; value8.value.d_val=atof(L1); /阶梯孔深度ProParameterValueSet(¶m8, &value8);value9.type=PRO_PARAM_DOUBLE; value9.value.d_val=atof(A1); /阶梯孔深度ProParameterValueSet(¶m9, &value9);ProSolidRegenerate(ProSolid)model, PRO_B_TRUE); /再生模型/ProMdlSave(model); /保存模型 /以上v形块处理完毕/打开零件ProStringToWstring(partname,lingjian.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); ProMdlDisplay(model); ProMdlWindowGet(model,&nWindowID); ProWindowActivate(nWindowID); /初始化零件参数ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, LD, ¶m1);ProParameterInit(&feature, LH, ¶m2); /为零件的参数赋新值 value1.type=PRO_PARAM_DOUBLE; value1.value.d_val=L_jian; /钻模板孔径等于钻套外径ProParameterValueSet(¶m1, &value1); value2.type=PRO_PARAM_DOUBLE; value2.value.d_val=137 ; /目前任意(应根据情况而定)ProParameterValueSet(¶m2, &value2);/打开上v块模型ProStringToWstring(partname,shangvkuai.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); /提取工作目录中的零件模型ProMdlDisplay(model); /显示模型 ProMdlWindowGet(model,&nWindowID); /获取模型窗口标识符ProWindowActivate(nWindowID); /激活模型窗口 /初始化上v块参数ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, LDW, ¶m1); /这些参数在零件模型中应提前设置好ProParameterInit(&feature, LL1, ¶m2);ProParameterInit(&feature, LL2, ¶m3);ProParameterInit(&feature, LDH, ¶m4); /为上v块参数赋新值(一定要对应上面个参数的顺序) value1.type=PRO_PARAM_DOUBLE; /在pro/E中,所有的参数都是实数类型 value1.value.d_val=L_jian; /钻套孔径即为工件钻孔直径ProParameterValueSet(¶m1, &value1); /设置新的参数值 value2.type=PRO_PARAM_DOUBLE; value2.value.d_val=L_1; /钻套外径,atof函数将串类型转换成实数类型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE; value3.value.d_val=L_2; /钻套肩径ProParameterValueSet(¶m3, &value3); value4.type=PRO_PARAM_DOUBLE; value4.value.d_val=D_H; /钻套长度ProParameterValueSet(¶m4, &value4);ProSolidRegenerate(ProSolid)model, PRO_B_TRUE); /再生模型ProMdlSave(model); /保存模型 /打开夹具体模型ProStringToWstring(partname,jiajuti.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); /提取工作目录中的零件模型ProMdlDisplay(model); /显示模型 ProMdlWindowGet(model,&nWindowID); /获取模型窗口标识符ProWindowActivate(nWindowID); /激活模型窗口 /初始化夹具体参数ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, Ll1, ¶m1); /这些参数在零件模型中应提前设置好ProParameterInit(&feature, Ll2, ¶m2);ProParameterInit(&feature, Ll3, ¶m3);ProParameterInit(&feature, Ll4, ¶m4);ProParameterInit(&feature, Ll5, ¶m5);ProParameterInit(&feature, Ll6, ¶m6);ProParameterInit(&feature, Ll7, ¶m7);ProParameterInit(&feature, Ll8, ¶m8); /为夹具体参数赋新值(一定要对应上面个参数的顺序) value1.type=PRO_PARAM_DOUBLE; /在pro/E中,所有的参数都是实数类型 value1.value.d_val=125; /钻套孔径即为工件钻孔直径ProParameterValueSet(¶m1, &value1); /设置新的参数值 value2.type=PRO_PARAM_DOUBLE; value2.value.d_val=a; /钻套外径,atof函数将串类型转换成实数类型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE; value3.value.d_val=b; /钻套肩径ProParameterValueSet(¶m3, &value3); value4.type=PRO_PARAM_DOUBLE; value4.value.d_val=110; /钻套长度ProParameterValueSet(¶m4, &value4);value5.type=PRO_PARAM_DOUBLE; value5.value.d_val=210; /钻套长度ProParameterValueSet(¶m5, &value5); value6.type=PRO_PARAM_DOUBLE; value6.value.d_val=65; /钻套长度ProParameterValueSet(¶m6, &value6);value7.type=PRO_PARAM_DOUBLE; value7.value.d_val=atof(A); /钻套长度ProParameterValueSet(¶m7, &value7);value8.type=PRO_PARAM_DOUBLE; value8.value.d_val=60; /钻套长度ProParameterValueSet(¶m8, &value8);ProSolidRegenerate(ProSolid)model, PRO_B_TRUE); /再生模型ProMdlSave(model); /保存模型 /以上钻套处理完毕/打开过度盘模型ProStringToWstring(partname,guodupan.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); /提取工作目录中的零件模型ProMdlDisplay(model); /显示模型 ProMdlWindowGet(model,&nWindowID); /获取模型窗口标识符ProWindowActivate(nWindowID); /激活模型窗口 /初始化过度盘参数ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&feature);ProParameterInit(&feature, Lw1, ¶m1); /这些参数在零件模型中应提前设置好ProParameterInit(&feature, Lw2, ¶m2);ProParameterInit(&feature, Lll, ¶m3);ProParameterInit(&feature, Lww, ¶m4); /为过度盘参数赋新值(一定要对应上面个参数的顺序) value1.type=PRO_PARAM_DOUBLE; /在pro/E中,所有的参数都是实数类型 value1.value.d_val=a; /钻套孔径即为工件钻孔直径ProParameterValueSet(¶m1, &value1); /设置新的参数值 value2.type=PRO_PARAM_DOUBLE; value2.value.d_val=b; /钻套外径,atof函数将串类型转换成实数类型ProParameterValueSet(¶m2, &value2); value3.type=PRO_PARAM_DOUBLE; value3.value.d_val=130; /钻套肩径ProParameterValueSet(¶m3, &value3); value4.type=PRO_PARAM_DOUBLE; value4.value.d_val=18; /钻套长度ProParameterValueSet(¶m4, &value4);ProSolidRegenerate(ProSolid)model, PRO_B_TRUE); /再生模型ProMdlSave(model); /保存模型 /以上钻套处理完毕/打开平衡块模型ProStringToWstring(partname,pinghengkuai.prt);ProMdlRetrieve(partname, PRO_MDL_PART, &model); /提取工作目录中的零件模型ProMdlDisplay(model); /显示模型 ProMdlWindowGet(model,&nWindowID); /获取模型窗口标识符ProWindowActivate(nWindowID); /激活模型窗口 /初始化平衡块参数ProMdlIdGet(model,&i);ProModelitemInit(model,i,PRO_PART,&fea
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:1920_基于ProToolkit的车床夹具三维参数化设计
链接地址:https://www.renrendoc.com/p-79723328.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!