Overview Schemas Index

AIC_GEOMETRICALLY_BOUNDED_SURFACE (jsdai.SAic_geometrically_bounded_surface)


FUNCTION gbsf_check_curve
          (cv : representation_item) : BOOLEAN;

IF SIZEOF(['AIC_GEOMETRICALLY_BOUNDED_SURFACE.BOUNDED_CURVE', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.CONIC', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.CURVE_REPLICA', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.LINE', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN
    RETURN  (FALSE);
  END_IF;
  IF  SIZEOF(['AIC_GEOMETRICALLY_BOUNDED_SURFACE.CIRCLE', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.ELLIPSE', 'AIC_GEOMETRICALLY_BOUNDED_SURFACE.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN
    RETURN  (TRUE);
  ELSE
    IF  (('AIC_GEOMETRICALLY_BOUNDED_SURFACE.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  (('AIC_GEOMETRICALLY_BOUNDED_SURFACE.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  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.CURVE_REPLICA' IN  TYPEOF(cv) THEN
          RETURN  (gbsf_check_curve(cv\curve_replica.parent_curve));
        ELSE
          IF  (('AIC_GEOMETRICALLY_BOUNDED_SURFACE.OFFSET_CURVE_3D' IN  TYPEOF(cv)) AND  ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN)) AND  (NOT ('AIC_GEOMETRICALLY_BOUNDED_SURFACE.POLYLINE' IN  TYPEOF(cv\offset_curve_3d.basis_curve)))) THEN
            RETURN  (gbsf_check_curve(cv\offset_curve_3d.basis_curve));
          ELSE
            IF  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.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  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.POLYLINE' IN  TYPEOF(cv) THEN
                IF  (SIZEOF(cv\polyline.points) >= 3) THEN
                  RETURN  (TRUE);
                END_IF;
              ELSE
                IF  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.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  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.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  'AIC_GEOMETRICALLY_BOUNDED_SURFACE.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; -- gbsf_check_curve

public class FGbsf_check_curve
          public static Value run(SdaiContext _context, Value cv)