基本思路
- 检索所有模型尺寸
- 按照位置对尺寸进行排序
- 检索球标模型
- 遍历尺寸,根据尺寸类型和占位宽度计算球标和尺寸的相对位置
- 创建顺序球标
程序实现
- 检索尺寸前先判断当前环境是否为绘图环境,如果不是则直接退出。下面函数可以判断当前环境。
int CheckEnv(int count, ...)
{
pfcSession_ptr session = pfcGetProESession();
pfcModels_ptr Models = session->ListModels();
pfcModel_ptr Model = session->GetCurrentModel();
pfcModelType ModelType;
int EnvFlag = 0;
if (Models->getarraysize() == 0 || Model == NULL)
{
session->UIDisplayLocalizedMessage(MSGFILE, "Model is not found in current session!", NULL);
}
else if (count == 0)
{
if (Model->GetType() == pfcMDL_DRAWING)
{
EnvFlag = 1;
}
}
else
{
va_list ap;
va_start(ap, count);
for (int i = 0; i < count; i++)
{
if (Model->GetType() == va_arg(ap, pfcModelType))
{
EnvFlag = 1;
break;
}
}
va_end(ap);
}
if (EnvFlag == 0)
{
LOG(LOG_WARNING) << "ModelType is error!";
session->UIDisplayLocalizedMessage(MSGFILE, "ModelType is error!", NULL);
}
return EnvFlag;
}
- 当图纸为零件图时,可以直接检索尺寸。
pfcModelItems_ptr mdlitems = mdl->ListItems(pfcITEM_DIMENSION);
当图纸为组件图时,需要先获取当前图纸中的所有零件,再获取零件的相应尺寸
pfcModels_ptr Models = drawing->ListModels();
//获取组件图中的尺寸
for (xint i = 0; i < Models->getarraysize(); i++)
{
Dimensions->insertseq(0, drawing->ListShownDimensions(Models->get(i), pfcModelItemType_nil));
}
- 检索到的尺寸可以存放在 pfcDimension2Ds_ptr 对象中,为方便后续计算,这里创建 DimensionStruct 类。检索到的尺寸初始化为 DimensionStruct 类的对象,并存放在
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删