基于Creo 二次开发实现工程图快速转换PDF

2020-12-22 10:36孟志强
机电产品开发与创新 2020年6期
关键词:菜单栏零组件工程图

孟志强

(公安部第一研究所, 北京100048)

0 引言

随着数字化设计、现代制造技术的发展,CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAE(计算机辅助工程)技术得到了迅速普及和极大发展。 Creo 是PTC 公司推出的CAD/CAM/CAE 设计软件,提供了目前最全面、集成度最高的产品开发环境, 在工业设计和机械设计领域得以广泛的应用。 除此之外, 市面上还有诸多其他CAD/CAM/CAE 软 件, 比 如UG、CATIA、SOLIDWORKS、MasterCAM 等等。各设计部门、加工厂家采用的设计软件不尽相同, 各单位间直接采用3D 模型进行沟通交流还存在模型格式统一的现实困难, 目前阶段还是不可避免的需要通过二维工程图纸进行交流。

PDF 是Portable Document Format 的缩写, 即可移植文档格式,是一种独立于应用程序、硬件、操作系统的方式呈现文档的文件格式。 每个PDF 文件包含固定布局的平面文档的完整描述,包括文本、字形、图形以及其它需要显示的信息。 而PDF 文件可以不依赖操作系统以及显示终端,可方便阅读、打印和存储。 而且PDF 文件进行权限设置以后,可以很好的保证文件的完整性,防止他人随意篡改。因此将工程图纸转化为PDF 文件,既可以保护知识产权,又可以方便使用不同设计软件的设计人员、生产人员、管理人员之间交流交互,尤其是当设计部门异地指导加工生产时。 而且传统对图纸进行存档保存需要采取晒印蓝图的方式,既费时也费力,而采用PDF 文件的形式进行电子化保存备份,则更为方便快捷。

Creo 软件自带的将工程图以保存副本的方式转化成PDF 格式文件的方法,仅仅能实现单张工程图的转换,而以笔者所在设计部门进行的设计开发工作, 一套设备图纸少则两三百张,多则上千张,采用此种方法过于麻烦费事。为此本文中笔者利用Creo 提供的二次开发工具Creo Parametric TOOLKIT 进行二次开发,设计一款程序快速便捷地将Creo 工程图转化为PDF 文档。

1 工程图快速转化PDF

1.1 环境的搭建

Creo Parametric TOOLKIT 是PTC 公司为Creo Parametric 定制的开发工具包, 使用面向对象的C 语言编程,提供了用于Creo 设计软件底层资源调用的函数库和头文件,使客户具有根据自己的具体需求定制扩展Creo Parametric 功能的能力。

本文使用的CAD 设计平台为Creo 5.0, 采用与Creo 5.0 契合度较高的Visual Studio 2015 进行程序开发。 通过建立MFC DLL 项目,包含TOOLKIT 提供的头文件,添加TOOLKIT 提供的库文件, 配置项目属性的附加依赖项以及忽略特定库等, 采用同步模式进行二次开发, 设计程序,编写代码,实现主体功能。

1.2 程序设计

如图1 所示,为实现Creo 工程图快速转化为PDF 文档,本程序设计思路如下:打开一个模型,进行模型属性判定,如果是零件(.prt 格式文件),则打开零件同名图纸,输出零件同名PDF,存入指定文件夹,结束程序;如果是组件(.asm 格式文件),则对该组件进行遍历,如果组件中各子零组件(子零件和子组件)还未输出同名PDF,则加载各子零组件同名图纸,输出各子零组件同名PDF,存入指定文件夹,再进行标示,表示已输出同名PDF;当整个组件完成遍历时,结束程序,从而实现一键将组件模型关联的所有的工程图快速转换为PDF 文档。

图1 程序流程图

1.3 界面设计

利用TOOLKIT 提供的函数ProMenubarMenuAdd 可以在Creo 菜单栏中新增菜单项、 利用函数ProCmdActionAdd 设置新增菜单项的动作响应、 利用ProMenubarmenuPushbuttonAdd 在新增菜单项下添加子菜单项,并且在ZhuanPDF.txt 文档中进行菜单栏显示设置, 具体相关函数使用如下所示。

如图2a 所示为Creo 初始启动时菜单栏选项卡情况,图2b 为启动了二次开发的辅助应用程序后的菜单栏选项卡情况,系统会生成一个TOOLKIT 的选项卡,在其“工具”菜单栏之下,生成设计的“批量转PDF”子菜单;而为了应用方便,可以在Creo 快速启动栏中,增添TOOLKIT 命令的按钮,可自行编辑按钮图像,如图2c 所示,可以更方便快捷地调用二次开发加载的应用程序。

图2a Creo 初始菜单

图2c 设置快速启动项

1.4 程序实现

由图1 程序流程图可见, 程序主体由一个遍历过程来实现,通过遍历Creo 当前打开的模型,依次对遍历访问的子零组件进行相应的操作。 对模型进行遍历可通过TOOLKIT 提供的遍历函数ProSolidFeatVisit 来实现,其中参数User_action_parameter_tiqu 为遍历主函数体,而参数UserAsmCompFilter 为过滤函数,用以设置遍历条件,具体函数形式如下所示。

ProSolidFeatVisit ((ProSolid)model,user_action_parameter_tiqu,UserAsmCompFilter,&appdata);

User_action_parameter_tiqu (ProFeature *feature,ProError status,ProAppData appdata);

UserAsmCompFilter ( ProFeature *feature,ProAppData app_data);

通过调用函数ProMdlDataGet 获得模型的名字、类型、存储路径、版本号等信息,从而得到需要转化为PDF的工程图纸名称, 如下所示p_asm 为模型句柄,mdldata为ProMdldata 结构体,变量name 存储模型名字。

ProMdlDataGet(p_asm,&mdldata);

CString name = mdldata.name;

而通过函数ProMdlLoad 来加载当前模型句柄指向部件的同名图纸,做好输出同名PDF 文档的准备。

status=ProMdlLoad(wfile,type,booltrue,&draw);

通过函数ProPDFoptionsIntpropertySet 和ProPDFoptionsBoolpropertySet 进行PDF 输出的参数诸如输出层、线型、 颜色、 字体、 分辨率等等的设置; 然后通过函数ProPDFExport 输出PDF 文档到指定的位置。

ProPDFoptionsAlloc(&options);

ProPDFoptionsIntpropertySet (options,

1.5 实现案例

如图3a 所示,为展示效果以某部件A18615L_1_4_1_3.ASM 为例, 从模型树中可以看出, 该组件为三级结构。 通过运行二次开发的程序,按照遍历顺序,依次从上往下输出组件以及各子零组件工程图的同名PDF 文档,如图3b 所示。

图3a 模型树

图3b 输出PDF

2 结论

笔者以Visual Studio 2015 为开发环境, 利用Creo 自带的API 开发包TOOLKIT,对Creo 进行二次开发,生成辅助应用程序。 通过对打开的模型进行遍历,实现一键快速准确的将工程图纸批量转化为PDF 文档,通过实际使用证明了该方法的有效性及准确性,可以大大提高工作效率。

猜你喜欢
菜单栏零组件工程图
四合一铅笔刀设计
公 告
细碎星子,汇成不灭的银河
面向工程认证的机制专业工程图学(一)课程教学探索
MASTERCAM工程图出图功能研究
试析Access2010中利用宏实现自定义菜单
台湾电子零组件批发业:大陆产业链变化使其备受压力
自编翻译程序