FUNCTION gbsf_check_curve

(* SCHEMA associative_draughting; *)
  FUNCTION gbsf_check_curve(
               cv: curve
      ): BOOLEAN;
    IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
        'ASSOCIATIVE_DRAUGHTING.CIRCLE','ASSOCIATIVE_DRAUGHTING.ELLIPSE'] *
         TYPEOF(cv)) = 1 THEN
      RETURN(TRUE);
    ELSE
      IF ('ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
          b_spline_curve.self_intersect = FALSE) THEN
        RETURN(TRUE);
      ELSE
        IF ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (
            cv\composite_curve.self_intersect = FALSE) THEN
          RETURN(SIZEOF(QUERY ( seg <* cv\composite_curve.segments | (NOT 
              gbsf_check_curve(seg.parent_curve)) )) = 0);
        ELSE
          IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
              'ASSOCIATIVE_DRAUGHTING.CURVE_REPLICA'] * TYPEOF(cv)) = 1
               THEN
            RETURN(gbsf_check_curve(cv\curve_replica.parent_curve));
          ELSE
            IF (SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
                'ASSOCIATIVE_DRAUGHTING.OFFSET_CURVE_3D'] * TYPEOF(cv)) = 1) 
                AND (cv\offset_curve_3d.self_intersect = FALSE) THEN
              RETURN(gbsf_check_curve(cv\offset_curve_3d.basis_curve));
            ELSE
              IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
                  'ASSOCIATIVE_DRAUGHTING.PCURVE'] * TYPEOF(cv)) = 1 THEN
                RETURN(gbsf_check_curve(cv\pcurve.reference_to_curve.items
                    [1]) AND gbsf_check_surface(cv\pcurve.basis_surface));
              ELSE
                IF 'ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(cv) THEN
                  IF (SIZEOF(cv\polyline.points) >= 3) AND (SIZEOF(
                      bag_to_set(USEDIN(cv,'')) - bag_to_set(USEDIN(cv,
                      'ASSOCIATIVE_DRAUGHTING.INTERSECTION_CURVE.CURVE_3D')))
=
                       0) THEN
                    RETURN(TRUE);
                  END_IF;
                ELSE
                  IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
                      'ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE'] * TYPEOF(cv)) 
                      = 1 THEN
                    IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
                      REPEAT i := 1 TO SIZEOF(cv\surface_curve.
                          associated_geometry) BY 1;
                        IF 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.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;
                  ELSE
                    IF 'ASSOCIATIVE_DRAUGHTING.TRIMMED_CURVE' IN TYPEOF(cv)
                         THEN
                      IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
                          'ASSOCIATIVE_DRAUGHTING.LINE',
                          'ASSOCIATIVE_DRAUGHTING.PARABOLA',
                          'ASSOCIATIVE_DRAUGHTING.HYPERBOLA'] * TYPEOF(cv\
                          trimmed_curve.basis_curve)) = 1 THEN
                        RETURN(TRUE);
                      ELSE
                        RETURN(gbsf_check_curve(cv\trimmed_curve.
                            basis_curve));
                      END_IF;
                    END_IF;
                  END_IF;
                END_IF;
              END_IF;
            END_IF;
          END_IF;
        END_IF;
      END_IF;
    END_IF;
    RETURN(FALSE);

  END_FUNCTION; -- gbsf_check_curve

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] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:14:12-04:00