Overview Schemas Index

SKETCH_SCHEMA (jsdai.SSketch_schema)


FUNCTION get_plane_of_implicit_geometry
          (ps : positioned_sketch) : plane;

LOCAL
    sb     : sketch_basis_select := ps.sketch_basis;
    result : plane := ?;
  END_LOCAL;

  -- determine plane OF  implicit geometry FROM the underlying ENTITY data
  -- TYPE  OF  its owning instance OF  positioned_sketch_representation.  If
  -- the sketch basis is OF  TYPE  planar_curve_select THEN  the planarity 
  -- OF  the curve is guaranteed BY a WHERE RULE on the SELECT TYPE OF  that 
  -- name.

  IF  ('TOPOLOGY_SCHEMA.FACE_SURFACE' IN  TYPEOF(sb)) THEN  
    result := sb.face_geometry;
  ELSE
    IF  ('GEOMETRY_SCHEMA.CURVE_BOUNDED_SURFACE' IN  TYPEOF(sb)) THEN
      result := sb.basis_surface;
    ELSE  
      IF  ('SKETCH_SCHEMA.PLANAR_CURVE_SELECT' IN  TYPEOF(sb)) THEN
      BEGIN
 
        IF  ('GEOMETRY_SCHEMA.CONIC' IN  TYPEOF(sb)) 
          THEN  result := dummy_gri || surface() || 
            elementary_surface(sb.position) || plane();
        END_IF;

        IF  ('GEOMETRY_SCHEMA.TRIMMED_CURVE' IN  TYPEOF(sb)) 
          THEN  
          BEGIN
            result := get_plane_of_implicit_geometry(
            dummy_gri || positioned_sketch(sb.basis_curve,[]));
          END;
        END_IF;

        IF  ('GEOMETRY_SCHEMA.PCURVE' IN  TYPEOF(sb))
          THEN  result := sb.basis_surface;
        END_IF;

        IF  ('GEOMETRY_SCHEMA.SURFACE_CURVE' IN  TYPEOF(sb)) THEN
        BEGIN
          IF  ((SIZEOF(sb.basis_surface) = 1) -- CASE  OF  one basis surface 
            AND  ('GEOMETRY_SCHEMA.PLANE' IN  TYPEOF(sb.basis_surface[1])))
          THEN  result := sb.basis_surface[1];
          ELSE  -- CASE OF  two basis surfaces
            IF  (('GEOMETRY_SCHEMA.PLANE' IN  TYPEOF(sb.basis_surface[1]))
              AND  ('GEOMETRY_SCHEMA.PLANE' IN  TYPEOF(sb.basis_surface[2])))
            THEN  result := ?;
              -- both basis surfaces are planes, their intersection curve 
              -- is a line, AND no UNIQUE plane is defined
            ELSE  -- only one OF the two basis surfaces is a plane
              IF ('GEOMETRY_SCHEMA.PLANE' IN TYPEOF(sb.basis_surface[1]))
              THEN result := sb.basis_surface[1];
              ELSE result := sb.basis_surface[2];
              END_IF;
            END_IF;
          END_IF;
        END;
        END_IF;
      END;
      END_IF;
    END_IF;
  END_IF;

  RETURN(result);

END_FUNCTION; -- get_plane_of_implicit_geometry

public class FGet_plane_of_implicit_geometry
          public static Value run(SdaiContext _context, Value ps)