Overview Schemas Index

AIC_GEOMETRICALLY_BOUNDED_SURFACE (jsdai.SAic_geometrically_bounded_surface)


FUNCTION gbsf_check_surface
          (sf : surface) : BOOLEAN;

IF (('AIC_GEOMETRICALLY_BOUNDED_SURFACE.B_SPLINE_SURFACE' IN  TYPEOF(sf)) AND  (sf\b_spline_surface.self_intersect = FALSE) OR  (sf\b_spline_surface.self_intersect = UNKNOWN)) THEN
    RETURN  (TRUE);
  ELSE
    IF  SIZEOF(['AIC_GEOMETRICALLY_BOUNDED_SURFACE.SPHERICAL_SURFACE', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.TOROIDAL_SURFACE', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.CURVE_BOUNDED_SURFACE', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF(sf)) = 1 THEN
      RETURN  (TRUE);
    ELSE
      IF  (('AIC_GEOMETRICALLY_BOUNDED_SURFACE.OFFSET_SURFACE' IN  TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (sf\offset_surface.self_intersect = UNKNOWN)) THEN
        RETURN  (gbsf_check_surface(sf\offset_surface.basis_surface));
      ELSE
        IF  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.RECTANGULAR_COMPOSITE_SURFACE' IN  TYPEOF(sf) THEN
          REPEAT  i := 1 TO  SIZEOF(sf\rectangular_composite_surface.segments);
            REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]);
              IF  NOT (gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface)) THEN
                RETURN  (FALSE);
              END_IF;
            END_REPEAT;
          END_REPEAT;
          RETURN  (TRUE);
        ELSE
          IF  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.SURFACE_REPLICA' IN  TYPEOF(sf) THEN
            RETURN  (gbsf_check_surface(sf\surface_replica.parent_surface));
          ELSE
            IF 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN
              RETURN  (gbsf_check_curve(sf\swept_surface.swept_curve));
            END_IF;
          END_IF;
        END_IF;
      END_IF;
    END_IF;
  END_IF;
  RETURN (FALSE);

END_FUNCTION; -- gbsf_check_surface

public class FGbsf_check_surface
          public static Value run(SdaiContext _context, Value sf)