1、工程师的痛点
在实际的设计任务中,工程师需要及时查看零件的参数信息,但是实际的操作工程中只能一个一个的去查看参数,着实的麻烦。
2、通过开发可以批量的查看零部件的参数信息
①、新建MFC的Dialog用来放数据,
初始化面板信息的代码:MFC操作不做细述,可以查看资料。
DWORD dwStyle= param.GetExtendedStyle();
dwStyle|= LVS_EX_GRIDLINES;
param.SetExtendedStyle(dwStyle);
param.InsertColumn(0,_T("标识号"),LVCFMT_LEFT,60,0);
param.InsertColumn(1,_T("编码"),LVCFMT_LEFT,80,0);
param.InsertColumn(2,_T("Test"),LVCFMT_LEFT,80,0);
param.InsertColumn(3,_T("材料"),LVCFMT_LEFT,80,0);
③、 获取当前的组件信息
//获取到当前的模型信息
ProMdlmdlCurr;
err =ProMdlCurrentGet(&mdlCurr);
ProMdlTypemdlType;
err =ProMdlTypeGet(mdlCurr, &mdlType);
if (PRO_MDL_ASSEMBLY != mdlType)
{
AfxMessageBox(_T("需要打开一个装配体信息"));
return TRUE;
}
⑥、遍历当前装配体下的零件数据
// 组件特征的遍历,找到下面的所有的零件信息
err =ProSolidFeatVisit((ProSolid)mdlCurr,ASMPartFun, NULL,&featArr);
//遍历零部件信息
if (mdlType == PRO_MDL_PART)
{
ProArrayObjectAdd((ProArray*)app_data,PRO_VALUE_UNUSED,1,&mdl); //如果是零件信息加入到队列
}
if (mdlType == PRO_MDL_ASSEMBLY)
{
ProSolidFeatVisit((ProSolid)mdl,ASMPartFun, NULL,app_data);//如果是组件信息再次进入遍历
}
//参数的初始化并写入面板的List列表中
for (int i=0;i<array_size;i++)
{
ProMdlmdl1;
mdl1= ((ProMdl*)featArr)[i]; //获取组件下的每一个零件
ProNamename;
ProMdlNameGet(mdl1,name);//获取零件名称
/*AfxMessageBox(name);*/
CStringstr;
str.Format(_T("%d"),i);
indexNo= param.InsertItem(LVIF_TEXT|LVIF_PARAM,param.GetItemCount(),str,0,0,0,i);//样式
param.SetItemText(indexNo,1,name);
ProModelitemcur_modelitem;
ProParameterparam1;
ProName paramname;
ProParamvalueproval;
ProMdlToModelitem(mdl1,&cur_modelitem);//将模型转换成模型项
ProStringToWstring(paramname,"TEST");
ProParameterInit(&cur_modelitem,paramname,¶m1); //初始化参数名为Test的参数
ProParameterValueGet(¶m1,&proval);//获取该参数值并放入proval属性中
CStringWcstrFeatId;
cstrFeatId.Format(_T("%f"), proval.value.d_val);
param.SetItemText(indexNo,2,cstrFeatId);
ProNamematerialname;
ProParameterparammaterial;
ProParamvalueprovalmaterial;
ProStringToWstring(materialname,"MATERIAL_NAME");//初始化材料的参数
ProParameterInit(&cur_modelitem,materialname,¶mmaterial); //初始化材料参数的
ProParameterValueGet(¶mmaterial,&provalmaterial);//获取材料参数的数值
CStringWcsMaterial;
csMaterial.Format(_T("%s"), provalmaterial.value.s_val);
⑦、编辑并运行
⑧、效果显示,完成
后续功能
① 、指定零件并打开
② 、修改参数
③ 、通过EXCEL批量导出修改后在批量修改参数。
④ 、等等按照实际业务需要