具有如下功能:
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<array_size;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