在3.0上用VC6开发的应用程序,对话框在初始时,执行修改模型参数的值,但是模型参数的值能修改,但是程序返回时就出错了。
部分程序段如下:
DividePointActFn();
ParamUpdate("ML",distance);
ParamUpdate("MB1",vanewidth1);
ParamUpdate("MB2",vanewidth2);
子程序:
ProError DividePointActFn()
{ ProError status;
ProPath PartName;
// ProMdl solid_mdl;
ProStringToWstring(PartName,"E:\\EPROE-WORK\\MODELF.prt");
status=ProMdlLoad (PartName, PRO_MDL_PART,PRO_B_FALSE, &solid_mdl);
if (status == PRO_TK_NO_ERROR&&solid_mdl!=NULL)
{
//显示并再生装入的零件模型
ProMdlDisplay(solid_mdl);
ProMdlWindowGet(solid_mdl,&w_id);
ProWindowActivate(w_id);
ProSolidRegenerate ((ProSolid(solid_mdl)),PRO_B_TRUE);
}
return ( PRO_TK_NO_ERROR );
}
void ParamUpdate(char *Name, //(In)参数名
double parameter)//参数值
{
ProError status;
wchar_t PName;
ProParameter param;
ProParamvalue value;;
status=ProMdlToModelitem(solid_mdl, &modelitem);
if(status==PRO_TK_NO_ERROR)
{
// AfxMessageBox("获得模型项选项");
ProStringToWstring(&PName,Name);
status=ProParameterInit(&modelitem,&PName,¶m);
// if(status==PRO_TK_NO_ERROR)
// AfxMessageBox("初始化papra成功");
//根据指定的参数名获得参数对象指针
ProParameterValueGet(¶m,&value);
// if(status==PRO_TK_NO_ERROR)
// AfxMessageBox("获得value句柄");
value.value.d_val=parameter;
// AfxMessageBox("赋初值");
//新的参数值设置
ProParameterValueSet(¶m, &value);
ProSolidRegenerate((ProSolid)solid_mdl,PRO_B_TRUE);
}
else if(status==PRO_TK_BAD_INPUTS)
AfxMessageBox("The mdl argument is NULL");
else if(status==PRO_TK_INVALID_PTR)
AfxMessageBox("The handle is invalid");
}
就是调用完ParamUpdate返回时就出错了,希望前辈们能给小弟指点一二!!先谢了!! |