Pro/E是完全基于Feature(特征)的三维软件。
在模型树上的每个项目都是特征。如下图所示
以下程序实现对ProE当前模型下Feature的遍历访问,附代码:
ProError _VisitSolidAllFeats_(ProFeature* p_feature, ProError status, ProAppData app_data) { ProArrayObjectAdd((ProArray*)app_data, -1, 1, p_feature); return PRO_TK_NO_ERROR; } int Test(uiCmdCmdId command, uiCmdValue *p_value, void *p_push_command_data) { ProError err; ProMdl mdl; // 获取当前模型句柄 err = ProMdlCurrentGet(&mdl); if (PRO_TK_NO_ERROR != err) return -1; // 定义数组变量,用于记录后面遍历访问的所有ProFeature ProArray arr; ProArrayAlloc(0, sizeof(ProFeature), 10, &arr); // 变量访问当前模型下的所有Feature ProSolidFeatVisit((ProSolid)mdl, _VisitSolidAllFeats_, NULL, &arr); // 输出数组中的所有ProFeature的Id int nSize; ProArraySizeGet(arr, &nSize); CString cstr; cstr.Format(TEXT("共有%d个Feature"), nSize); AfxMessageBox(cstr); for (int i=0; i<nSize; ++i) { int id = ((ProFeature*)arr)[i].id; cstr.Format(TEXT("Feature Id = %d"), id); AfxMessageBox(cstr); } // 释放数组资源 ProArrayFree(&arr); return 0; }
源码下载 VS2005+Proe3.0
http://download.csdn.net/detail/wangyao1052/4945338