bool smoothSpline(tag_t from_spline, double tol_dist, double tol_angel, tag_t* smoothed_spline)
{
UF_UNDO_mark_id_t mark_id;
try
{
UF_UNDO_set_mark(UF_UNDO_visible, NULL, &mark_id);
UF_CURVE_spline_t spline_data;
int num_states;
UF_CURVE_state_t* states;
int num_states2;
UF_CURVE_state_t* states2 = NULL;
int error = 0;
*smoothed_spline = NULL_TAG;
UF_CALL(UF_CURVE_ask_spline_data(from_spline, &spline_data));
UF_CALL(error = UF_CURVE_smooth_spline_data(&spline_data, spline_data.order - 2, tol_dist, tol_angel, &num_states, &states));
if (states) { UF_free(states); }
if (error) { return 0; }
UF_CALL(error = UF_CURVE_create_spline(&spline_data, smoothed_spline, &num_states2, &states2));
UF_free(spline_data.knots);
UF_free(spline_data.poles);
if (states2) { UF_free(states2); }
if (error) { return 0; }
if (*smoothed_spline) { return 1; }
return 1;
}
catch (exception& ex)
{
UF_CALL(UF_UNDO_undo_to_mark(mark_id, NULL));
return 0;
}
}
【UG\NX二次开发】UF 光顺样条曲线(UF_CURVE_smooth_spline_data)
于 2024-01-20 18:05:41 首次发布