(*
 $Id$
 ISO TC184/SC4/WG12 N4780 - ISO/CD-TS 10303-1772 Ply orientation specification - EXPRESS ARM
 Supersedes ISO TC184/SC4/WG12 N4385
*)

SCHEMA Ply_orientation_specification_arm;

USE FROM Part_and_zone_laminate_tables_arm; -- ISO/CD-TS 10303-1770

  TYPE angle_select = SELECT 
    (Axis_placement_3d,
     Curve,
     Direction,
     Point_path);
  END_TYPE;

  ENTITY Direction_of_fiber_orientation_within_a_ply
    SUBTYPE OF (Representation);
      SELF\Representation.context_of_items : Geometric_coordinate_space; 
      SELF\Representation.items            : SET[1:?] OF angle_select;
    INVERSE 
      orientations : SET[1:1] OF Ply_orientation_angle FOR rep_1;
  END_ENTITY;

  ENTITY Draped_orientation_angle
    SUBTYPE OF (Ply_orientation_angle);
  END_ENTITY;

  ENTITY Laid_orientation_angle
    SUBTYPE OF (Ply_orientation_angle);
  END_ENTITY;

  ENTITY Ply_orientation_angle 
    SUPERTYPE OF (ONEOF (Draped_orientation_angle, 
                         Laid_orientation_angle)) 
    SUBTYPE OF (Representation_relationship);  
      angle_reference                        : angle_select; 
      SELF\Representation_relationship.rep_1 : Direction_of_fiber_orientation_within_a_ply;
      SELF\Representation_relationship.rep_2 : Reinforcement_orientation_basis; 
  END_ENTITY;

  ENTITY Point_and_vector
    SUBTYPE OF (Detailed_geometric_model_element);
      location : point_select;
      vector : LIST [1:2] OF Direction;
  END_ENTITY;

  ENTITY Point_path
    SUBTYPE OF (Detailed_geometric_model_element);
      directions : LIST [1:?] OF Point_and_vector;
  END_ENTITY;

  ENTITY Reinforcement_orientation_basis
    SUBTYPE OF (Representation);
      SELF\Representation.context_of_items : Geometric_coordinate_space; 
      SELF\Representation.items            : SET [1:1] OF Axis_placement_3d; 
    DERIVE
      basis_location : Cartesian_point := SELF\Representation.items[1]\Axis_placement.origin;
      orientation    : Direction       := SELF\Representation.items[1]\Axis_placement.x_axis;
    INVERSE 
      tables       : SET[1:?] OF Laminate_table FOR basis; 
      orientations : SET[1:?] OF Ply_orientation_angle FOR rep_2;
  END_ENTITY;

  SUBTYPE_CONSTRAINT pos_detailed_geometric_model_element_subtypes FOR Detailed_geometric_model_element;
    ONEOF (Point_and_vector,
           Point_path);
  END_SUBTYPE_CONSTRAINT;

END_SCHEMA;