FUNCTION msf_surface_check
(surf : surface) : BOOLEAN;
IF 'AIC_MANIFOLD_SURFACE.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN RETURN(TRUE); ELSE
(* a swept_surface shall have a valid sweeping curve *) IF 'AIC_MANIFOLD_SURFACE.SWEPT_SURFACE' IN TYPEOF (surf) THEN RETURN (msf_curve_check(surf\swept_surface.swept_curve)); ELSE (* an offset_surface shall NOT self-intersect AND shall REFERENCE a valid surface *) IF (('AIC_MANIFOLD_SURFACE.OFFSET_SURFACE' IN TYPEOF (surf)) AND (surf\offset_surface.self_intersect = FALSE) OR (surf\offset_surface.self_intersect = UNKNOWN)) THEN RETURN (msf_surface_check(surf\offset_surface.basis_surface)); ELSE (* a surface_replica shall have a valid parent surface *) IF 'AIC_MANIFOLD_SURFACE.SURFACE_REPLICA' IN TYPEOF(surf) THEN RETURN(msf_surface_check(surf\surface_replica.parent_surface)); ELSE
(* a b_spline_surface shall NOT self-intersect *) IF (('AIC_MANIFOLD_SURFACE.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND (surf\b_spline_surface.self_intersect = FALSE) OR (surf\b_spline_surface.self_intersect = UNKNOWN)) THEN RETURN(TRUE); END_IF; END_IF; END_IF; END_IF; END_IF; RETURN(FALSE); END_FUNCTION; -- msf_surface_check
|