简化的,只对一条 arc偏置。
要搞清楚不同的UF_CURVE_offset_data_s.offset_type,对应者不同的UF_CURVE_offset_data_s.offset_def
还有一个问题就是,我没搞明白怎样设置偏置方向的。
////////////////////////////////////////////////////////////////////////////////
double step = 1.0;
char distance_str[] = {"0.25"};
char *part_name="sample";
int units = UF_PART_METRIC;
tag_t part_tag,arc1_tag,*offset_curves;
tag_t wcs;
UF_CURVE_arc_t arc_coords;
int num_curves=1;
UF_STRING_t input_string;
UF_CURVE_offset_data_t offset_data;
UF_CURVE_offset_distance_data_t offset_distance1;
if( UF_CALL(UF_initialize()) )
{
return;
}
UF_CALL(UF_PART_new(part_name, units, [$part_tag))]
UF_CALL(UF_CSYS_ask_wcs([$wcs))]
UF_CALL(UF_CSYS_ask_matrix_of_object(wcs,[$arc_coords.matrix_tag))]
arc_coords.start_angle = 78.0 * (PI/180);
arc_coords.end_angle = 101.0 * (PI/180);
arc_coords.arc_center[0] = 0.5;
arc_coords.arc_center[1] = -2.4750;
arc_coords.arc_center[2] = 3.0;
arc_coords.radius = 2.525;
UF_CALL(UF_CURVE_create_arc([$arc_coords,&arc1_tag))]
UF_MODL_create_string_list(1,1,[$input_string)]
input_string.num = 1;
input_string.string[0] = 1;
input_string.dir[0] = 1;
input_string.id[0] = arc1_tag;
offset_data.offset_type = UF_CURVE_OFFSET_DISTANCE_FILLET;
offset_data.input_curves = [$input_string]
offset_data.approximation_tolerance = step;
UF_MODL_ask_distance_tolerance([$offset_data.string_tolerance)]
offset_data.offset_def.distance_type1 = [$offset_distance1]
offset_distance1.distance = distance_str;
UF_CALL(UF_CURVE_create_offset_curve(&offset_data,
&num_curves,
[$offset_curves))]
UF_free(offset_curves);
UF_CALL(UF_terminate()); |