NX/UG二次开发:UF的方式创建大致偏置
2026/6/3 19:47:15 网站建设 项目流程

//片体大致偏置
bool CreateRoughOffset(tag_t sheet_body,double offset_distance, double offset_deviation, double stepover_distance, tag_t& feature_tag, int get_type) //get_type 1 = Feat, 2 = Body
{
tag_t tTempCsys;
tag_t current_feature[2];
tag_t work_part;

work_part = UF_ASSEM_ask_work_part();
UF_CALL(UF_MODL_ask_current_feature(work_part, &current_feature[0]));

double matrix[9] = { 1,0,0, 0,1,0, 0,0,1 };
tag_t matrix_tag;
double origin[3] = { 0,0,0 };
UF_CALL(UF_CSYS_create_matrix(matrix, &matrix_tag));
UF_CSYS_create_temp_csys(origin, matrix_tag, &tTempCsys);

UF_MODL_rough_offset_t parms;
parms.num_entities = 1;
parms.entities = &sheet_body;
parms.smart_csys = tTempCsys;
sprintf_s(parms.offset_distance, "%f", offset_distance);
sprintf_s(parms.offset_deviation, "%f", offset_deviation);
sprintf_s(parms.stepover_distance, "%f", stepover_distance);
parms.surf_method = UF_RSO_SURF_METHOD_ROUGH_FIT;
parms.surf_ctrl_type = UF_RSO_SURF_CTRL_BY_USER;
parms.u_patches = 1;
parms.boundary_trim = UF_RSO_TRIM_OPT_NO;
tag_t offset_feature;

UF_CALL(UF_MODL_create_rough_offset(&parms, &offset_feature));
if (NULL_TAG == offset_feature)
{
UF_CALL(UF_MODL_ask_current_feature(work_part, &current_feature[1]));
if (current_feature[1] != current_feature[0])
offset_feature = current_feature[1];

if (2 == get_type)
UF_CALL(UF_MODL_ask_feat_body(offset_feature, &offset_feature));
}

if (offset_feature)
{
feature_tag = offset_feature;
return 1;
}

return 0;
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询