选择当前视图中的部件作为部件,自动检查是否已经添加过重复部件,如果添加过就不在添加,而是在其下添加文件。代码如下
UF_UI_ONT_switch_view(UF_UI_ONT_geometry_mode);
UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_machining_geometry_grp_type, &geom_tag);//查询坐标系是否重复
while (geom_tag != NULL_TAG)
{
UF_OBJ_ask_type_and_subtype(geom_tag, &geom_type, &geom_subtype);
if (geom_subtype == UF_mill_geom_featr_subtype)
{
count_1++;
UF_OBJ_ask_name(geom_tag, geom_name);
if (!strcmp(geom_name, new_geom_name))
{
button_1 = 1;
new_geom_tag = NULL_TAG;
new_geom_tag = geom_tag;
UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_solid_type, &gongjian_tag);
if (gongjian_tag != NULL_TAG)
{
UF_OBJ_ask_type_and_subtype(maopi_tag, &gj_type, &gj_subtype);
}
else
{
uc1601("请先创建或打开一个工件!\n在没有工件情况下无法设置毛坯和几何体", 1);
}
}
}
UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_machining_geometry_grp_type, &geom_tag);
}
printf("总共有%d个工件", count_1);
if (button_1 == 0)//如果标志位为0就说明没有加过这个工件
{
UF_NCGEOM_create(mcs_type_name, mcs_subtype_name, &new_mcs_tag);
UF_SETUP_ask_geom_root(setupTag, &geom_group);
UF_NCGROUP_accept_member(geom_group, new_mcs_tag);
UF_CSYS_ask_wcs(&wcs);
UF_PARAM_set_tag_value(new_mcs_tag, UF_PARAM_MCS, wcs);
UF_OBJ_set_name(new_mcs_tag, new_mcs_name);
UF_CAM_opt_ask_subtypes(type_names[2], UF_CAM_OPT_STYPE_CLS_GEOM, &geom_sub_cnt, &geom_sub_names);
UF_NCGEOM_create((char*)type_names[2], (char *)geom_sub_names[1], &new_geom_tag);
UF_OBJ_set_name(new_geom_tag, new_geom_name);
if (new_geom_tag != NULL)
{
UF_NCGROUP_accept_member(new_mcs_tag, new_geom_tag);
}
app_data_list[0] = (UF_CAMGEOM_app_data_p_t)UF_allocate_memory(sizeof(UF_CAMGEOM_app_data_t), &err_code);
app_data_list[0] = NULL;//就相当于UF_free
UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_solid_type, &gongjian_tag);
if (gongjian_tag != NULL_TAG)
{
UF_OBJ_ask_type_and_subtype(maopi_tag, &gj_type, &gj_subtype);
}
else
{
uc1601("请先创建或打开一个工件!\n在没有工件情况下无法设置毛坯和几何体", 1);
}
UF_CAMGEOM_append_items(new_geom_tag, UF_CAM_part, 1, &gongjian_tag, app_data_list); // 设置工件
UF_CAMGEOM_append_items(new_geom_tag, UF_CAM_blank, 1, &gongjian_tag, app_data_list); // 设置毛坯
//UF_CAMGEOM_append_items(WORKPIECE,UF_CAM_check,1,&area_face, app_data_list); // 设置检查体
}
else
uc1601("存在重复工件", 0);
UF_NCGROUP_accept_member(new_geom_tag, opt_tag);
UF_UI_ONT_refresh(); //不加这句会不能马上在界面中能显示
UF_DISP_refresh();