(*
 $Id$
 ISO TC184/SC4/WG12 N4765 - ISO/CD-TS 10303-1322 Modified swept solid - EXPRESS ARM
*)

SCHEMA Modified_swept_solid_arm;

USE FROM Basic_geometric_topology_arm; -- ISO/CD-TS 10303-1323

USE FROM Swept_solid_arm; -- ISO/CD-TS 10303-1321

  TYPE trim_intent = ENUMERATION OF
    (blind,
     through_all,
     up_to_next,
     unspecified);
  END_TYPE;

  TYPE trim_select = SELECT
    (length_measure,
     plane_angle_measure,
     Advanced_face,
     Detailed_geometric_model_element);
  END_TYPE;

  ENTITY Extruded_solid_with_draft_angle
    SUBTYPE OF (Extruded_solid_with_trim_conditions);
      draft_angle : plane_angle_measure;
  END_ENTITY;

  ENTITY Extruded_solid_with_multiple_draft_angles
    SUBTYPE OF (Extruded_solid_with_trim_conditions);
      draft_edges  : LIST[2:?] OF SET[1:?] OF edge_curve;
      draft_angles : LIST[2:?] OF plane_angle_measure;
    WHERE
      WR1: SIZEOF(draft_edges) = SIZEOF(draft_angles);
      WR2: SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0;
  END_ENTITY;

  ENTITY Extruded_solid_with_trim_conditions
    SUPERTYPE OF (ONEOF(Extruded_solid_with_draft_angle, Extruded_solid_with_multiple_draft_angles))
    SUBTYPE OF (Extruded_solid);
      start_condition        : trim_select;
      end_condition          : trim_select;
      start_condition_intent : trim_intent; 
      end_condition_intent   : trim_intent; 
  END_ENTITY;

  ENTITY Solid_of_revolution_with_trim_conditions
    SUBTYPE OF (Solid_of_revolution);
      start_condition : trim_select;
      end_condition   : trim_select;
  END_ENTITY;

END_SCHEMA;

