Creo二次开发:创建工程图,生成球标和明细表
2016-08-16 15:17
447 查看
首先需要在Creo中创建一个自己的工程图模板,在模板中插入表格,并且设置表格的重复区域。创建工程图时就自动生成明细表了。
代码如下:
//创建工程图
int CPart2DDlg::UserDrawingCreate()
{
ProError err;
ProMdl soild_mdl;
ProMdlType mdl_tpye;
ProMdldata data;
ProModel model;
ProFileName msgfil;
ProName predefined_template,name;
ProDrawing created_drawing=NULL;
ProDwgcreateOptions options=(ProDwgcreateOptions)0;
ProDwgcreateErrs errors;
ProStringToWstring(msgfil,"msg_ugdrawing.txt");
err=ProMdlCurrentGet(&soild_mdl);
if(err!=PRO_TK_NO_ERROR)
return err;
err=ProMdlTypeGet(soild_mdl,&mdl_tpye);
if(err!=PRO_TK_NO_ERROR||mdl_tpye!=PRO_MDL_PART&&mdl_tpye!=PRO_MDL_ASSEMBLY)
return PRO_TK_INVALID_TYPE;
err=ProMdlDataGet(soild_mdl,&data);
wcscpy_s(model.name,data.name);
wcscpy_s(model.type,data.type);
ProStringToWstring(predefined_template,"drw_template");
err = ProMessageDisplay (msgfil, "USER Enter new drawing name: ");
err = ProMessageStringRead (PRO_NAME_SIZE, name);
if (err != PRO_TK_NO_ERROR)
return (err);
err=ProDrawingFromTmpltCreate(name,predefined_template,&model,options,&created_drawing,&errors);
if (err!=PRO_TK_NO_ERROR||err!=PRO_TK_DWGCREATE_ERRORS)
{
return err;
}
return PRO_TK_NO_ERROR;
}
void CPart2DDlg::OnBnClickedBtnDrawingCreate()
{
// TODO: 在此添加控件通知处理程序代码
UserDrawingCreate();
}
//创建球标
ProError UserTableVisitAct(ProDwgtable* p_table,ProError err,ProAppData tables)
{
err=ProArrayObjectAdd((ProArray*)tables,PRO_VALUE_UNUSED,1,p_table);
return PRO_TK_NO_ERROR;
}
ProError UserTableVisitFilt(ProDwgtable* p_table,ProAppData tables)
{
return PRO_TK_NO_ERROR;
}
void UserBomBalloonCreate()
{
ProMdl mdl;
ProMdlCurrentGet(&mdl);
ProArray tables=NULL;
ProArrayAlloc(0,sizeof(ProDwgtable),1,&tables);
ProDrawingTableVisit((ProDrawing)mdl,(ProDwgtableVisitAction)UserTableVisitAct,(ProDwgtableFilterAction)UserTableVisitFilt,(ProAppData)&tables);
int n;
ProArraySizeGet(tables,&n);
if (n==0)
{
AfxMessageBox(_T("遍历失败!"));
}
for (int i=0;i<n;i++)
{
ProDwgtable table;
table=((ProDwgtable*)tables)[i];
ProError err=ProBomballoonAllCreate((ProDrawing)mdl,&table,-1);
}
}
void CPart2DDlg::OnBnClickedBtnBomballoonCreate()
{
// TODO: 在此添加控件通知处理程序代码
UserBomBalloonCreate();
}
运行结果:
代码如下:
//创建工程图
int CPart2DDlg::UserDrawingCreate()
{
ProError err;
ProMdl soild_mdl;
ProMdlType mdl_tpye;
ProMdldata data;
ProModel model;
ProFileName msgfil;
ProName predefined_template,name;
ProDrawing created_drawing=NULL;
ProDwgcreateOptions options=(ProDwgcreateOptions)0;
ProDwgcreateErrs errors;
ProStringToWstring(msgfil,"msg_ugdrawing.txt");
err=ProMdlCurrentGet(&soild_mdl);
if(err!=PRO_TK_NO_ERROR)
return err;
err=ProMdlTypeGet(soild_mdl,&mdl_tpye);
if(err!=PRO_TK_NO_ERROR||mdl_tpye!=PRO_MDL_PART&&mdl_tpye!=PRO_MDL_ASSEMBLY)
return PRO_TK_INVALID_TYPE;
err=ProMdlDataGet(soild_mdl,&data);
wcscpy_s(model.name,data.name);
wcscpy_s(model.type,data.type);
ProStringToWstring(predefined_template,"drw_template");
err = ProMessageDisplay (msgfil, "USER Enter new drawing name: ");
err = ProMessageStringRead (PRO_NAME_SIZE, name);
if (err != PRO_TK_NO_ERROR)
return (err);
err=ProDrawingFromTmpltCreate(name,predefined_template,&model,options,&created_drawing,&errors);
if (err!=PRO_TK_NO_ERROR||err!=PRO_TK_DWGCREATE_ERRORS)
{
return err;
}
return PRO_TK_NO_ERROR;
}
void CPart2DDlg::OnBnClickedBtnDrawingCreate()
{
// TODO: 在此添加控件通知处理程序代码
UserDrawingCreate();
}
//创建球标
ProError UserTableVisitAct(ProDwgtable* p_table,ProError err,ProAppData tables)
{
err=ProArrayObjectAdd((ProArray*)tables,PRO_VALUE_UNUSED,1,p_table);
return PRO_TK_NO_ERROR;
}
ProError UserTableVisitFilt(ProDwgtable* p_table,ProAppData tables)
{
return PRO_TK_NO_ERROR;
}
void UserBomBalloonCreate()
{
ProMdl mdl;
ProMdlCurrentGet(&mdl);
ProArray tables=NULL;
ProArrayAlloc(0,sizeof(ProDwgtable),1,&tables);
ProDrawingTableVisit((ProDrawing)mdl,(ProDwgtableVisitAction)UserTableVisitAct,(ProDwgtableFilterAction)UserTableVisitFilt,(ProAppData)&tables);
int n;
ProArraySizeGet(tables,&n);
if (n==0)
{
AfxMessageBox(_T("遍历失败!"));
}
for (int i=0;i<n;i++)
{
ProDwgtable table;
table=((ProDwgtable*)tables)[i];
ProError err=ProBomballoonAllCreate((ProDrawing)mdl,&table,-1);
}
}
void CPart2DDlg::OnBnClickedBtnBomballoonCreate()
{
// TODO: 在此添加控件通知处理程序代码
UserBomBalloonCreate();
}
运行结果:
相关文章推荐
- ProE二次开发 Creo二次开发 MCADEx Tools 工程图管理工具
- Creo二次开发:查找和替换指定文件夹下的所有工程图中的注释文本
- MCADEx开发 ProE二次开发 Creo二次开发 菜单创建
- Creo二次开发——BOM球标
- Creo二次开发:查找和替换指定文件夹下所有工程图中的符号
- iPhone开发技巧之环境篇(6)--- 创建工程模板
- Revit 二次开发之“在两个机械设备之间创建风管”
- Android开发中使用Eclipse创建工程后提示The project cannot be built until build path errors are resolved问题的解决方法
- Eclipse插件开发时创建自己工程后实现刷新透视图
- session对象在web开发中的创建以及sessionId生成并返回客户端的运行机制
- appfuse 2.1 数据表 反向工程二次开发错误处理
- Pro Engineer 二次开发工程图表格绘制
- solidworks二次开发:更新零件后,对工程图进行更新
- Building Coder(Revit 二次开发) - 从 Revit 中创建 Navisworks 文件
- iPhone开发之创建简单界面视图的三种方式之一 使用xcode4自动生成界面
- Bada学习- C++以及Flash应用开发流程之创建应用工程
- Revit 二次开发之“在机械设备之间创建机械系统”
- Visual C++集成开发环境创建 C语言工程与调试入门
- 对session对象在web开发中的创建以及sessionId生成并返回客户端的运行机制.
- Visual C++集成开发环境创建 C语言工程与调试入门