Pro/TOOLKIT二次开发的高效构建组件
2013-08-11 by:逆向工程中心-设备设计组 来源:仿真在线
Pro/TOOLKIT二次开发的高效构建组件
0引言
日益激烈的市场竞争要求现代企业必须低成本、高效率地开发新产品,全面提高对市场的快速响应能力。要高效率地设计三维产品,则离不开CAD/CAM系统的支持,具有技术成熟、功能强大的proeNGINEER(以下简称proe)参数化造型系统在设计和制造业中得到了日益广泛的应用,proe作为通用的三维CAD/CAM系统在功能上基本能够满足产品三维设计要求,但要高效地进行产品设计以满足更高层次的要求,还需要借助于其自带的高级开发工具包Pro/TOOLKIT。
Pro/TOOLKIT是美国PTC公司为proe系统提供的二次开发工具包。即应用程序接口(API),其主要目的是让用户或第三方通过C程序代码扩充proe系统的功能,开发基于proe系统的应用程序模块,将proe的通用性与专业性完美地结合起来,从而满足用户更高层次的需求。
组件是许多元件按照一定规则的组合以满足用户实际的需要。本文以构建模座为例,详细地介绍了组件构建的技术过程、所需要用到的函数及核心代码。
1 proe二次开发技术实现
1.1 开发环境
Pro/TOOLKIT支持在Windows 2000/NT/XP操作系统中使用C和C++语言设计程序,采用Microsoft Visual C++6.0作为编译器和连接器,并可以在Microsoft Visual C++6.0的集成环境下完成程序的设计、调试和编译。
1.2 技术实现
proe为应用程序提供两种工作模式:同步模式和异步模式,同步模式首先开启proe,通过注册文件来运行编译后的可执行文件;异步模式通过运行编译后的可执行文件来开启proe,不需要编写注册文件;本文采用的是同步模式。使用Pro/TOOLKIT开发应用程序包含三个步骤,分别是:编写源文件、生成可执行文件以及Pro/TOOLKIT应用程序在proe中的注册并运行;
第一步同于一般的VC源程序的编辑,由于Pro/TOOLKIT不能兼容C++代码,所以在用VC6.0新建程序文件时必须显式指定文件的后缀名为.c,若没有指定则会默认为.cpp,从而使程序不能正常运行;
第二步在编译时需要再添加三个库文件,否则编译时会出现类型识别错误,具体操作为:选择Project/Settings..菜单,选择“Link”选项卡,在“Category:”(类型)下拉列表中选择General(通用),在“ObjecL/Library modules”下加入mpr.lib,protoolkit.lib, wsock32.lib;
第三步是在proe中注册并运行,要使程序在proe中运行,需要在同一目录下编写一个名为protk.dat的注册文件,然后通过注册文件使可执行文件在proe中运行。
1.3 创建Pro/TOOLKIT应用程序
按照proe环境运行的要求,所有的Pro/TOOLKIT程序都是采用以下结构设计:
#include"ProToolkit. h"
……;
int user_initialize(){
……;
return 0;}
void user_ terminate(){……;}
所有Pro/TOOLKIT应用程序都必须包含函数user_initialize()和函数user_terminate(),这两个函数是Pro/TOOLKIT的开发人员编写的原始函数。函数user_initialize()是Pro/TOOLKIT应用程序的入口点,所有的初始化过程在这个函数内完成,函数初始化成功返回值为0,否则系统会返回相应的提示。proe结束,用户确认退出时,应用程序调用user_terminate(),该函数的返回值为void。
2 构建组件
组件是由许多元件按照一定规则的组合,在组件中添加元件最关键的问题是元件的方向、元件的坐标以及元件参数的大小。本算法通过给定三个坐标值(即元件坐标面分别与组件坐标面的偏距值)来限定元件在组件中的具体位置,克服了相邻元件相互关联的局限性,每个元件在组件中都相互独立,使得在构建过程中可以非常灵活地替换元件,提高了组件的容错性;通过参数化来调整元件实体模型尺寸的大小,给定具体的参数值即可再生多种尺寸的元件;通过调整面与面的对齐方式来约束元件在组件中的方向。
下面以构建模座为例分别详细介绍:当新建一个空组件时,proe会出现如图1所示的一个三维空间,即一个三维坐标平面;在添加第一个元件(即上底板)时,如图2所示,当限定图2所示元件的三个坐标面front,right,top分别与图1所示的三个坐标平面asm_front,asm_right,asm_top平行对齐,并给定相应面与面之间的偏距,则此元件在组件(即这个三维空间)中的确切位置就确定了,再分别设定元件的方向和元件实体模型尺寸值后即完成了把元件添加到组件中的过程。
(1)方向。组件的三个坐标平面是固定的,所以当我们需要调整元件的方向时可以选择元件的不同平面分别与组件的三个平面对齐;当用图2中元件的三个面right,front,top与图1中组件的三个面asm_front,asm_right,asm_top分别对齐时,元件的放置方式则会改变,变成Front面的正向朝左。根据排列组合原理,三个面与另外三个面分别对齐总共有3×2×1种,则元件在组件中放置的方式一共可以有6种。在proe中常用的对齐方式一共有两种,分别是对齐(align)与匹配(mate);proe中规定了组件的三个坐标面的正方向,若对齐方式选择mate,则匹配的两个平面相互平行且正方向相反;若对齐方式选择align,则对齐的两个平面相互平行且正方向相同。如图3所示,螺丝的front面的正向朝前,当用组件的坐标面asm_front与螺丝的坐标面front对齐时,螺丝按图3所示放置;当用组件的坐标面asm_front与螺丝的坐标面front匹配时,螺丝则按图4所示放置,此时螺丝的front面的正向朝后。螺丝的其他四种放置方式(即front面正向朝左、右、上、下)都可以通过调整元件坐标面分别与组件的坐标面对齐来实现。
(2)坐标。在构建组件的过程中,不可能每一个元件的平面都与组件平面重合,这就要通过设定偏距来解决,也即是设定元件的坐标值。以构造模座为例,最多只能有一个元件的坐标面与组件坐标面完全重合。设定坐标的方法:先设定函数ProAsmcompconstraintTypeSet的第二个参数为PRO_ASM_ALIGN_OFF或者PRO_ASM_MATE_OFF(对齐方式若是align则选择前者、若是mate则选后者),然后再通过函数ProAsmcompconstraintOffsetSet()来设定具体的偏距值的大小。一次只能设定一组对齐平面的偏距,在模座构造中需要设定三次才能限定好单个元件在模座中的具体位置。给定元件的三个坐标值后,元件在组件中的具体位置也就固定。
(3)参数化。在构建组件时元件的尺寸大小需根据实际需要来设定。按照效率优先原则不可能在proe中把每一个需要的尺寸都设计好;每种元件只需要设计一个,然后可以在程序中把具体尺寸赋给相应的参数来自动再生所需的元件。以模座为例,当设定好图2所示的元件的长、宽、高三个参数后,只要给定不同的参数值,模座的上底板、下底板、模脚、A/B板等都可以通过此元件再生来生成,这就极大地提高了设计效率。需要设定参数的名称以及各个参数之间的约束关系,设定好参数名称后可以调用函数ProParameter ValueSet()来设定具体的参数值的大小。
3 构建组件所需要的函数及核心代码
下面列举出在本方法构建组件时所用到的函数及其功能:
(1)ProAsmcompAasemble():用来向组件或二级组件的初位置添加元件;
(2)ProArrayAlloc():用来申请内存空间;
(3)PmAsmcomppathlnit():用来初始化ProAsmcompath的结构;
(4)ProModelitemByNamelnit():用来获取单个模型的成员句柄;
(5)ProSelectionAlloc():用来申请空间以及将成员句柄填入到数组;
(6)ProAsmcompconstraintA11oc():用来中请组件约束结构的内存空;
(7)ProAsmcompconstraintTypeSet():用来按照约束条件设置约束;
(8)ProAsmcompconstraintOffsetSet():用来设置偏距值;
(9)ProAsmcompconstraintAsmreferenceSet():用来给组件按照具体约束设置好约束引用和方向;
(10)ProAsmcompconstraintCompreferenceSet():用来给元件按照具体约束设置好约束引用和方向;
(11)ProArray0bjectAdd():用来向对象数组中添加设置好的约束引用和方向;
(12)ProAsmcompConstraintsSet():用来向组件中添加约束数组;
(13)ProArrayFree():用来释放ProArray结构。
核心代码:
程序执行后会将名为name_prt[1]的元件添加到组件中,并限定此元件的三个坐标面front、top、right分别与组件的三个坐标面asm_front、asm_top、asm_right对齐,且偏距分别为0。当要调入其他的元件,只需要修改参数name_prt[1]。当依次调入构建模座所需要的元件时即可生成一个完整的模座。极大地提高了模座的设计效率,有效地缩短了模具的设计周期。
相关标签搜索:Pro/TOOLKIT二次开发的高效构建组件 Pro/TOOLKIT二次开发的高效构建组件 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训 Autoform培训 有限元培训 Solidworks培训 UG模具培训 PROE培训 运动仿真