您的位置:首页 > 其它

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();

}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ProE 二次开发 mfc