您的位置:首页 > 其它

Pro/TOOLKIT示例程序(十三)UDF

2018-01-21 16:06 190 查看
以下示例演示怎样使用Pro/TOOLKIT插入UDF。

示例中的UDF通过选择一个基准点来创建一个孔特征,可以指定孔的直径和孔的深度。

// 示例:插入UDF
int TestUDF(uiCmdCmdId  command,
uiCmdValue *p_value,
void       *p_push_command_data)
{
ProError err;

// 获取当前模型
ProMdl mdlCurr;
err = ProMdlCurrentGet(&mdlCurr);

// 选择基准点
ProSelection *sels;
int nSel = 0;
err = ProSelect("point", 1, NULL, NULL, NULL, NULL, &sels, &nSel);
if (PRO_TK_NO_ERROR != err || 1 != nSel)
{
return -1;
}
ProSelection pntSel;
ProSelectionCopy(sels[0], &pntSel);

// udf数据
ProGroup udf;
ProUdfdata  udfData;
ProUdfdataAlloc(&udfData);
ProUdfdataNameSet(udfData, L"hole", NULL);
ProUdfdataDependencySet(udfData, PROUDFDEPENDENCY_INDEPENDENT);

// 设置udf的参考
ProUdfreference udfPntref;
ProUdfreferenceAlloc(L"place_point", pntSel, PRO_B_FALSE, &udfPntref);
ProUdfdataReferenceAdd(udfData, udfPntref);

// 设置udf的尺寸数据:diameter=50.0, depth=50.0
ProUdfvardim  udfDiaDim, udfDepthDim;
err = ProUdfvardimAlloc(L"diameter", 50, PROUDFVARTYPE_DIM, &udfDiaDim);
err = ProUdfdataUdfvardimAdd(udfData, udfDiaDim);
err = ProUdfvardimAlloc(L"depth", 50, PROUDFVARTYPE_DIM, &udfDepthDim);
err = ProUdfdataUdfvardimAdd(udfData, udfDepthDim);

// 创建udf
err = ProUdfCreate((ProSolid)mdlCurr, udfData, NULL, NULL, 0, &udf);
if (PRO_TK_NO_ERROR != err)
{
AfxMessageBox(TEXT("Create udf failed."));
}

// 释放资源
ProUdfdataFree(udfData);
ProUdfvardimFree(udfDiaDim);
ProUdfvardimFree(udfDepthDim);
ProUdfreferenceFree(udfPntref);
ProSelectionFree(&pntSel);

// 刷新窗口显示
ProWindowRepaint(-1);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息