FUNCTION gbsf_check_curve
(* SCHEMA associative_draughting; *)
FUNCTION gbsf_check_curve(
cv: curve
): BOOLEAN;
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
'ASSOCIATIVE_DRAUGHTING.CIRCLE','ASSOCIATIVE_DRAUGHTING.ELLIPSE'] *
TYPEOF(cv)) = 1 THEN
RETURN(TRUE);
ELSE
IF ('ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
b_spline_curve.self_intersect = FALSE) THEN
RETURN(TRUE);
ELSE
IF ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (
cv\composite_curve.self_intersect = FALSE) THEN
RETURN(SIZEOF(QUERY ( seg <* cv\composite_curve.segments | (NOT
gbsf_check_curve(seg.parent_curve)) )) = 0);
ELSE
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
'ASSOCIATIVE_DRAUGHTING.CURVE_REPLICA'] * TYPEOF(cv)) = 1
THEN
RETURN(gbsf_check_curve(cv\curve_replica.parent_curve));
ELSE
IF (SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
'ASSOCIATIVE_DRAUGHTING.OFFSET_CURVE_3D'] * TYPEOF(cv)) = 1)
AND (cv\offset_curve_3d.self_intersect = FALSE) THEN
RETURN(gbsf_check_curve(cv\offset_curve_3d.basis_curve));
ELSE
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
'ASSOCIATIVE_DRAUGHTING.PCURVE'] * TYPEOF(cv)) = 1 THEN
RETURN(gbsf_check_curve(cv\pcurve.reference_to_curve.items
[1]) AND gbsf_check_surface(cv\pcurve.basis_surface));
ELSE
IF 'ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(cv) THEN
IF (SIZEOF(cv\polyline.points) >= 3) AND (SIZEOF(
bag_to_set(USEDIN(cv,'')) - bag_to_set(USEDIN(cv,
'ASSOCIATIVE_DRAUGHTING.INTERSECTION_CURVE.CURVE_3D')))
=
0) THEN
RETURN(TRUE);
END_IF;
ELSE
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
'ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE'] * TYPEOF(cv))
= 1 THEN
IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
associated_geometry) BY 1;
IF 'ASSOCIATIVE_DRAUGHTING.SURFACE' IN TYPEOF(cv\
surface_curve.associated_geometry[i]) THEN
IF NOT gbsf_check_surface(cv\surface_curve.
associated_geometry[i]) THEN
RETURN(FALSE);
END_IF;
ELSE
IF 'ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(cv\
surface_curve.associated_geometry[i]) THEN
IF NOT gbsf_check_curve(cv\surface_curve.
associated_geometry[i]) THEN
RETURN(FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN(TRUE);
END_IF;
ELSE
IF 'ASSOCIATIVE_DRAUGHTING.TRIMMED_CURVE' IN TYPEOF(cv)
THEN
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
'ASSOCIATIVE_DRAUGHTING.LINE',
'ASSOCIATIVE_DRAUGHTING.PARABOLA',
'ASSOCIATIVE_DRAUGHTING.HYPERBOLA'] * TYPEOF(cv\
trimmed_curve.basis_curve)) = 1 THEN
RETURN(TRUE);
ELSE
RETURN(gbsf_check_curve(cv\trimmed_curve.
basis_curve));
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN(FALSE);
END_FUNCTION; -- gbsf_check_curve
Referenced By
Defintion gbsf_check_curve is references by the following definitions:
[Top Level Definitions] [Exit]Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:14:12-04:00