FUNCTION gbsf_check_surface

(* SCHEMA step_ship_schema; *)
-- ONLY IN AP203
FUNCTION gbsf_check_surface(sf: surface): BOOLEAN;
    IF (('STEP_SHIP_SCHEMA.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(['STEP_SHIP_SCHEMA.SPHERICAL_SURFACE',
          'STEP_SHIP_SCHEMA.TOROIDAL_SURFACE'] * TYPEOF(sf)) = 1 THEN
        RETURN(TRUE);
      ELSE
        IF 'STEP_SHIP_SCHEMA.CURVE_BOUNDED_SURFACE' IN TYPEOF(sf)
             THEN
          IF SIZEOF(['STEP_SHIP_SCHEMA.CONICAL_SURFACE',
              'STEP_SHIP_SCHEMA.CYLINDRICAL_SURFACE',
              'STEP_SHIP_SCHEMA.PLANE'] * TYPEOF(sf\
              curve_bounded_surface.basis_surface)) = 1 THEN
            RETURN(SIZEOF(QUERY ( bcurve <* sf\curve_bounded_surface.
                boundaries | (NOT gbsf_check_curve(bcurve)) )) = 0);
          ELSE
            IF gbsf_check_surface(sf\curve_bounded_surface.basis_surface)
                 THEN
              RETURN(SIZEOF(QUERY ( bcurve <* sf\curve_bounded_surface.
                  boundaries | (NOT gbsf_check_curve(bcurve)) )) = 0);
            END_IF;
          END_IF;
        ELSE
          IF (('STEP_SHIP_SCHEMA.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 'STEP_SHIP_SCHEMA.RECTANGULAR_COMPOSITE_SURFACE' IN
                TYPEOF(sf) THEN
              REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.
                  segments) BY 1;
                REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.
                    segments[i]) BY 1;
                  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 'STEP_SHIP_SCHEMA.RECTANGULAR_TRIMMED_SURFACE' IN
                  TYPEOF(sf) THEN
                IF SIZEOF(['STEP_SHIP_SCHEMA.CONICAL_SURFACE',
                    'STEP_SHIP_SCHEMA.CYLINDRICAL_SURFACE',
                    'STEP_SHIP_SCHEMA.PLANE'] * TYPEOF(sf\
                    rectangular_trimmed_surface.basis_surface)) = 1 THEN
                  RETURN(TRUE);
                ELSE
                  RETURN(gbsf_check_surface(sf\rectangular_trimmed_surface
                      .basis_surface));
                END_IF;
              ELSE
                IF 'STEP_SHIP_SCHEMA.SURFACE_REPLICA' IN TYPEOF(sf)
                     THEN
                  RETURN(gbsf_check_surface(sf\surface_replica.
                      parent_surface));
                ELSE
                  IF 'STEP_SHIP_SCHEMA.SWEPT_SURFACE' 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;
      END_IF;
    END_IF;
    RETURN(FALSE);
END_FUNCTION;

Referenced By

Defintion gbsf_check_surface is references by the following definitions:
DefinitionType
 gbsf_check_curve FUNCTION
 gbsf_check_point FUNCTION
 geometrically_bounded_surface_shape_representation ENTITY


[Top Level Definitions] [Exit]

Generated by STEP ToolsTM EXPRESS to HTML Converter
on 2007-09-24T12:42:22-04:00