FUNCTION gbsf_check_curve

(* SCHEMA integrated_cnc_schema; *)
FUNCTION gbsf_check_curve (
    cv : representation_item 
    ) : BOOLEAN;
    IF SIZEOF([ 'INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE', 
      'INTEGRATED_CNC_SCHEMA.CONIC', 'INTEGRATED_CNC_SCHEMA.CURVE_REPLICA',
       'INTEGRATED_CNC_SCHEMA.LINE', 
      'INTEGRATED_CNC_SCHEMA.OFFSET_CURVE_3D' ] * TYPEOF(cv)) > 1 THEN
      RETURN (FALSE);
    END_IF;
    IF SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CIRCLE', 
      'INTEGRATED_CNC_SCHEMA.ELLIPSE', 
      'INTEGRATED_CNC_SCHEMA.TRIMMED_CURVE' ] * TYPEOF(cv)) = 1 THEN
      RETURN (TRUE);
    ELSE
      IF ('INTEGRATED_CNC_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
        b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.
        self_intersect = UNKNOWN) THEN
        RETURN (TRUE);
      ELSE
        IF ('INTEGRATED_CNC_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\
          composite_curve.self_intersect = FALSE) OR (cv\composite_curve.
          self_intersect = UNKNOWN) THEN
          RETURN (SIZEOF(QUERY (seg <* cv\composite_curve.segments| NOT 
            gbsf_check_curve(seg.parent_curve))) = 0);
        ELSE
          IF 'INTEGRATED_CNC_SCHEMA.CURVE_REPLICA' IN TYPEOF(cv) THEN
            RETURN (gbsf_check_curve(cv\curve_replica.parent_curve));
          ELSE
            IF (('INTEGRATED_CNC_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
               ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\
              offset_curve_3d.self_intersect = UNKNOWN))) AND NOT (
              'INTEGRATED_CNC_SCHEMA.POLYLINE' IN TYPEOF(cv\offset_curve_3d
              .basis_curve)) THEN
              RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve));
            ELSE
              IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(cv) THEN
                RETURN (gbsf_check_curve(cv\pcurve.reference_to_curve\
                  representation.items[1]) AND gbsf_check_surface(cv\pcurve
                  .basis_surface));
              ELSE
                IF 'INTEGRATED_CNC_SCHEMA.POLYLINE' IN TYPEOF(cv) THEN
                  IF SIZEOF(cv\polyline.points) >= 3 THEN
                    RETURN (TRUE);
                  END_IF;
                ELSE
                  IF 'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE' IN TYPEOF(cv) 
                    THEN
                    IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
                      REPEAT i := 1 TO SIZEOF(cv\surface_curve.
                        associated_geometry);
                        IF 'INTEGRATED_CNC_SCHEMA.SURFACE' IN TYPEOF(cv\
                          surface_curve.associated_geometry[i]) THEN
                          IF NOT gbsf_check_surface(cv\surface_curve.
                            associated_geometry[i]) THEN
                            RETURN (FALSE);
                          END_IF;
                        ELSE
                          IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(cv\
                            surface_curve.associated_geometry[i]) THEN
                            IF NOT gbsf_check_curve(cv\surface_curve.
                              associated_geometry[i]) THEN
                              RETURN (FALSE);
                            END_IF;
                          END_IF;
                        END_IF;
                      END_REPEAT;
                      RETURN (TRUE);
                    END_IF;
                  END_IF;
                END_IF;
              END_IF;
            END_IF;
          END_IF;
        END_IF;
      END_IF;
    END_IF;
    RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface

Referenced By

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


[Top Level Definitions]

Generated by STEP ToolsTM EXPRESS to HTML Converter
on 2010-01-12T10:42:25-02:00