Creo二次开发:创建工程图,生成球标和明细表

首先需要在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     {
        ProDwgtable table;
        table=((ProDwgtable*)tables)[i];
        ProError err=ProBomballoonAllCreate((ProDrawing)mdl,&table,-1);
    }
}

void CPart2DDlg::OnBnClickedBtnBomballoonCreate()
{
    // TODO: 在此添加控件通知处理程序代码
    UserBomBalloonCreate();
}

运行结果:

Creo二次开发:创建工程图,生成球标和明细表_第1张图片

你可能感兴趣的:(Creo二次开发:创建工程图,生成球标和明细表)