FUNCTION check_curve_planarity
(checked_curve : curve) : BOOLEAN;
LOCAL crv : curve := checked_curve; i,j : INTEGER; result : LOGICAL := UNKNOWN; END_LOCAL;
-- Determine whether the curve lies on a plane, according TO its type
IF (SIZEOF(['GEOMETRY_SCHEMA.CONIC','GEOMETRY_SCHEMA.LINE'] * TYPEOF(crv)) > 0) THEN result := TRUE; ELSE IF (('GEOMETRY_SCHEMA.TRIMMED_CURVE' IN TYPEOF(crv)) AND check_curve_planarity(crv.basis_curve)) THEN result := TRUE; ELSE IF (('GEOMETRY_SCHEMA.PCURVE' IN TYPEOF(crv)) AND ('GEOMETRY_SCHEMA.PLANE' IN TYPEOF(crv.basis_surface))) THEN result := TRUE; ELSE IF ('GEOMETRY_SCHEMA.SURFACE_CURVE' IN TYPEOF(crv)) THEN BEGIN REPEAT j := 1 TO HIINDEX(crv.basis_surface); IF ('GEOMETRY_SCHEMA.PLANE' IN TYPEOF(crv.basis_surface[j])) THEN result := TRUE; END_IF; END_REPEAT; END; END_IF; END_IF; END_IF; END_IF;
RETURN(result); END_FUNCTION; -- check_curve_planarity
|