许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  CREO二次开发:打开同名工程图功能实现

CREO二次开发:打开同名工程图功能实现

阅读数 24
点赞 0
article_banner

一、实现功能

在组件下打开零部件的同名工程图,如无同名工程图则新建工程图。如选择的文件为组件则插入材料明细表。

二、新建 命令

1、命令图标可不添加。

2、图标存放位置:https://www.gofarlic.com\Program Files\PTC\Creo 7.0.7.0\Common Files\text\resource(根据CREO安装位置下修改)。

extern "C" int user_initialize(){    ProError     status;    uiCmdCmdId   cmd_drw;    ProFileName MsgFile;    ProStringToWstring(MsgFile, "Message.txt");     status = ProCmdActionAdd("cmd_create_drw", (uiCmdCmdActFn)Draw, uiCmdPrioDefault, AccessDefault, PRO_B_TRUE, PRO_B_TRUE, &cmd_drw);    status = ProCmdIconSet(cmd_drw, "auto_drawing_large.png");//命令图标,32*32或16*16像素    status = ProCmdDesignate(cmd_drw, "createdrw", "open or creat drw", "open or creat drw", MsgFile);    return status;}

三、 程序 主体

1、选择零部件

可使用ProSelect或ProSelbufferSelectionsGet获取选择的零部件。

ProError status;ProSelection* sels;int nb_sel; status = ProSelect("prt_or_asm", 10, NULL, NULL, NULL, NULL, &sels, &nb_sel);if (status != PRO_TK_NO_ERROR){	return(status);}

2、尝试打开工程图

ProMdlFiletypeLoad仅将工程图读取到内存中,并不打开窗口。可通过ProObjectwindowMdlnameCreate创建窗口。

 status = ProSelectionModelitemGet(sels[i], &asmcomp); ProMdl Model = asmcomp.owner;ProMdl Drw_model;ProMdldata mdldata; ProMdlDataGet(Model, &mdldata); ProMdlDirectoryPathGet(Model, path);//获取零部件路径ProWstringConcatenate(mdldata.name, path, PRO_VALUE_UNUSED);ProWstringConcatenate(_T(".drw"), path, PRO_VALUE_UNUSED);status = ProMdlFiletypeLoad(path, PRO_MDLFILE_UNUSED, PRO_B_FALSE, &Drw_model);//读取工程图

3、新建工程图

ProMdlFiletypeLoad返回错误是就需新建工程图。ProDrawingFromTmpltCreate可根据 模板 创建新的工程图。

ProError status;ProModel Model;ProPath template_path = _T("...");//模板文件位置 ProMdlMdlnameGet(asmcomp.owner, Model.name);ProMdlExtensionGet(asmcomp.owner, Model.type); ProDrawing draw;ProDwgcreateErrs err; status = ProDrawingFromTmpltCreate(Model.name, template_path, &Model, PRODWGCREATE_DISPLAY_DRAWING, &draw, &err);//根据模板建立工程图if (status != PRO_TK_NO_ERROR){	AfxMessageBox(_T("图纸生成失败!"));	return(status);}

4、插入材料明细表

当选择的为组件是则需插入材料明细表。

if (asmcomp.type == PRO_ASSEMBLY){	ProDwgtable table;	ProPoint3d point = { 559.52,213.54,0 };//插入坐标位置 	status = ProDwgtableByOriginRetrieve(draw, _T("表名称"), _T("表存放位置"), 0, point, (ProSolid)asmcomp.owner, NULL, &table);//插入材料明细表,	if (status != PRO_TK_NO_ERROR)	{		AfxMessageBox(_T("表格插入失败!"));		return(status);	}}


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空