尺寸ProDimension
在Pro/TOOLKIT中,类型ProDimension用来表示尺寸。定义如下:
typedef struct pro_model_item
{
ProType type;
int id;
ProMdl owner;
} ProDimension;
ProDimension和ProModelitem共用相同的数据结构。
- type:值为PRO_DIMENSION或PRO_REF_DIMENSION。
- id:尺寸ID。
- owner:拥有尺寸的模型。
尺寸常用的API如下:
// 获取尺寸名称
ProError ProDimensionSymbolGet(ProDimension *dimension,
ProName symbol);
// 设置尺寸名称
ProError ProDimensionSymbolSet(ProDimension *dimension,
ProName symbol);
// 获取尺寸值
ProError ProDimensionValueGet(ProDimension *dimension,
double *value);
// 设置尺寸值
ProError ProDimensionValueSet(ProDimension *dimension,
double value);
// 获取尺寸公差值
ProError ProDimensionToleranceGet(ProDimension *dimension,
double *upper_limit,
double *lower_limit);
// 设置尺寸公差值
ProError ProDimensionToleranceSet(ProDimension *dimension,
double upper_limit,
double lower_limit);
示例
ProFeatureParamsDisplay:显示特征的尺寸参数
ProError ProFeatureParamsDisplay(ProSelection feature_sel,
ProParamType param_type);
代码如下:
// 获取尺寸数据
int TestGetDimInfo(uiCmdCmdId command,
uiCmdValue *p_value,
void *p_push_command_data)
{
ProError err;
// 选择特征
ProSelection* sels;
int nSel = 0;
err = ProSelect("feature", 1, NULL, NULL, NULL, NULL, &sels, &nSel);
if (PRO_TK_NO_ERROR != err || 1 != nSel)
{
return -1;
}
// 显示特征的所有尺寸
err = ProFeatureParamsDisplay(sels[0], PRO_DIM_PARAM);
// 选择尺寸
nSel = 0;
err = ProSelect("dimension", 1, NULL, NULL, NULL, NULL, &sels, &nSel);
if (PRO_TK_NO_ERROR != err || 1 != nSel)
{
return -1;
}
ProDimension dim;
err = ProSelectionModelitemGet(sels[0], &dim);
// 尺寸名称
ProName dimName;
err = ProDimensionSymbolGet(&dim, dimName);
// 尺寸值
double value;
err = ProDimensionValueGet(&dim, &value);
// 尺寸显示值
double display_value;
err = ProDimensionDisplayedValueGet(&dim, &display_value);
// 尺寸的上下公差
double upper_limit;
double lower_limit;
err = ProDimensionToleranceGet(&dim, &upper_limit, &lower_limit);
// 显示信息
CStringW cstrInfo;
cstrInfo.Format(L"尺寸名称: %s \n尺寸值: %.5f \n尺寸显示值: %.5f \n尺寸的上公差: %.5f \n尺寸的下公差: %.5f",
dimName, value, display_value, upper_limit, -lower_limit);
MessageBoxW(NULL, cstrInfo, L"icaxdev: Sample006", MB_OK);
return 0;
}