FUNCTION valid_geometrically_bounded_wf_curve
(crv : curve) : BOOLEAN;
IF SIZEOF ([ 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.POLYLINE', 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.B_SPLINE_CURVE', 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.ELLIPSE', 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.CIRCLE' ] * TYPEOF (crv)) = 1 THEN RETURN (TRUE); ELSE IF 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.TRIMMED_CURVE' IN TYPEOF (crv) THEN IF SIZEOF ([ 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.LINE', 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.PARABOLA', 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.HYPERBOLA' ] * TYPEOF (crv\trimmed_curve.basis_curve)) = 1 THEN RETURN (TRUE); ELSE RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve)); END_IF ; ELSE IF 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve)); ELSE IF 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.CURVE_REPLICA' IN TYPEOF (crv) THEN RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve)); ELSE IF 'AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.COMPOSITE_CURVE' IN TYPEOF (crv) THEN RETURN ( SIZEOF ( QUERY ( ccs <* crv\composite_curve.segments| NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve) )) = 0); END_IF ; END_IF ; END_IF ; END_IF ; END_IF ; RETURN (FALSE); END_FUNCTION; -- valid_geometrically_bounded_wf_curve
|