由于本人还在初学,部分代码是借鉴其他大佬,并将其改动完成的一个功能,主要供自己学习,不产生经济效益。
可实现的功能:获取Creo参数化模型中设置的可变参数值反向传给编辑框并显示。
ProError UserSearchMdlParamVisitAc(ProParameter *param, ProError status, ProAppData data)
{
vector<ProParameter> *pf = (vector<ProParameter>*)data;
pf->push_back(*param);/容器
return PRO_TK_NO_ERROR;
}
int CDlgTest::UsrGetCurrentParam()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
ProError status;
ProMdl p_handle;
ProParamvalue proval;//参数值
ProModelitem p_modelitem;
ProFeature afeat;
ProCharLine char_name, char_value;
BOOL bRet = FALSE;
//获取当前激活窗口的模型
status = ProMdlCurrentGet(&p_handle);
if (status != PRO_TK_NO_ERROR)
{
MessageBox(TEXT("界面没有发现模型!"),TEXT("温馨提示"));//报错
return status;
}
//获得用户编辑框中输入的尺寸值
status = ProMdlToModelitem(p_handle, &p_modelitem);
vector<ProParameter> dims;//不带参数的构造函数初始化
status = ProParameterVisit(&p_modelitem, NULL, (ProParameterAction)UserSearchMdlParamVisitAc, &dims);
for (unsigned j = 0; j < dims.size(); j++)
{
//获得参数的值
status = ProParameterValueGet(&dims[j], &proval);
if (PRO_TK_NO_ERROR != status)
{
return status;
}
ProWstringToString(char_name, dims[j].id);
CString ParamName;
CStringW ParamValue;
double temp = 0;
ParamName.Format(_T("%ws"), dims[j].id);
temp = proval.value.d_val;
if ("尺寸代码"== ParamName)
{
m_edit = temp;//控件变量
}
UpdateData(FALSE);
}
```可实现的功能:获取Creo参数化模型中设置的可变参数值反向传给编辑框并显示