批量生成工程图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

批量生成工程图

具有如下功能:

1)在列表中列出装配体下所有的零件,选择多个需要生成工程图的零件

2)然后对选中的零件生成工程图

3)在每一个工程图中添加表,列出工程图对应模型的参数信息(名称,类型,值等)

代码如下:

//动作函数

ProError UserFeatVisitAct(ProFeature* p_feature,ProError status,ProAppData data)

{

ProArrayObjectAdd((ProArray*)data,PRO_VALUE_UNUSED,1,p_feature);

return PRO_TK_NO_ERROR;

}

void CDrawingGenerate::UserLoadAllPartInAsm(ProMdl mdl)

{

ProError status;

ProArray array;

status=ProArrayAlloc(0,sizeof(ProFeature),1,&array);

if (PRO_TK_NO_ERROR!=status)

{

AfxMessageBox(_T("内存错误!"));

return;

}

//遍历特征

status=ProSolidFeatVisit((ProSolid)mdl,(ProFeatureVisitAction)UserFeatVisitAct,NULL,(ProAppData)&array); if (PRO_TK_NO_ERROR!=status)

{

AfxMessageBox(_T("遍历失败!"));

return;

}

int array_size;

status=ProArraySizeGet(array,&array_size);

if (0==array_size)

{

AfxMessageBox(_T("no feature was found!"));

return;

}

//循环筛选特征

for (int i=0;i

{

ProFeature feature;

feature=((ProFeature*)array)[i];

int num=feature.id;

ProMdl mdl_prt;

ProName name;

ProFeattype p_type;

status=ProFeatureTypeGet(&feature,&p_type);

//1000--PRO_MDL_COMPONENT,筛选出PART即可

if (1000==p_type)

{

status=ProAsmcompMdlGet((ProAsmcomp*)&feature,&mdl_prt); status=ProMdlNameGet(mdl_prt,name);

CString m_strID;

m_strID.Format(_T("%d"),num);

m_PartList.InsertItem(0,name);

m_PartList.SetItemText(0,1,m_strID);

UserLoadAllPartInAsm(mdl_prt);

}

}

ProArrayFree(&array);

}

void CDrawingGenerate::OnBnClickedBtnOpenAssembly()

{

// TODO: 在此添加控件通知处理程序代码

ProError err;

ProMdl mdl;

ProFamilyName name;

ProStringToWstring(name,"D:\\demo\\parts\\bottle.asm");

err=ProMdlRetrieve(name,PRO_MDL_ASSEMBLY,&mdl);

if (PRO_TK_NO_ERROR!=err)

{

return;

}

ProMdlDisplay(mdl);

UserLoadAllPartInAsm(mdl);

int pid;

ProWindowCurrentGet(&pid);

ProWindowActivate(pid);

}

//遍历参数的动作函数

ProError UserParamVisitAct(ProParameter *param,ProError status,ProAppData data) {

vector *pf=(vector*)data;

pf->push_back(*param);

return PRO_TK_NO_ERROR;

}

//向表格添加数据

ProError TableTextAdd(ProDwgtable* table,int col,int row,char* text)

{

ProError status;

ProWstring* lines;

ProLine first_line;

//准备要填写的内容

status=ProArrayAlloc(1,sizeof(ProWstring),1,(ProArray*)&lines); ProStringToWstring(first_line,text);

lines[0]=(ProWstring)first_line;

//将内容填入表格

status=ProDwgtableTextEnter(table,col,row,lines);

status=ProArrayFree((ProArray*)&lines);

return status;

}

int CDrawingGenerate::UserDrawingAllCreate()

{

ProError status;

ProName name;

ProStringToWstring(name,"D:\\demo\\parts");

ProPath *file_list,*dir_list;

status=ProArrayAlloc(0,sizeof(ProPath),1,(ProArray*)&file_list);

status=ProArrayAlloc(0,sizeof(ProPath),1,(ProArray*)&dir_list);

status=ProFilesList(name,L"*.prt",PRO_FILE_LIST_LATEST,&file_list,&dir_list);

if (PRO_TK_NO_ERROR!=status)

{

return status;

}

ProMdl mdl;

int size=0;

ProArraySizeGet((ProArray)file_list,&size);

for (int i=0;i

相关文档
最新文档