首先需要在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(); }
运行结果:
