(*
   $Id$
   ISO TC184/SC4/WG12 N4675 - ISO/CD-TS 10303-1767 Composite constituent shape - EXPRESS ARM
   Supersedes ISO TC184/SC4/WG12 N4388
*)

SCHEMA Composite_constituent_shape_arm;

USE FROM Advanced_boundary_representation_arm; -- ISO/CD-TS 10303-1514

USE FROM Construction_geometry_arm; -- ISO/CD-TS 10303-1131

USE FROM Edge_based_wireframe_arm; -- ISO/TS 10303-1501

USE FROM Elemental_topology_arm; -- ISO/TS 10303-1005

USE FROM Geometrically_bounded_surface_arm; -- ISO/TS 10303-1507

USE FROM Geometrically_bounded_wireframe_arm; -- ISO/TS 10303-1510

USE FROM Manifold_surface_arm; -- ISO/CD-TS 10303-1509

USE FROM Shell_based_wireframe_arm; -- ISO/TS 10303-1502

USE FROM Value_with_unit_extension_arm; -- ISO/TS 10303-1753

  TYPE boundary_class_zone = SELECT 
    (Boundary_curve_representation,
     Loop);
  END_TYPE;

  TYPE composite_assembly_shape = SELECT 
    (Advanced_brep_shape_representation,
     Edge_based_wireframe_shape_representation,
     Faceted_brep_shape_representation,
     Geometrically_bounded_surface_shape_representation,
     Geometrically_bounded_wireframe_shape_representation,
     Manifold_surface_shape_representation,
     Shell_based_wireframe_shape_representation,
     Three_d_geometry_set);
  END_TYPE;

  TYPE core_shape = SELECT 
    (Advanced_brep_shape_representation,
     Beveled_sheet_representation,
     Faceted_brep_shape_representation);
  END_TYPE;

  TYPE ply_laminate_shape = SELECT 
    (Composite_sheet_representation,
     Three_d_geometry_set);
  END_TYPE;
 
  TYPE ply_piece_shape = SELECT 
    (Ply_shape);
  END_TYPE;
  
  TYPE projection_method = ENUMERATION OF 
    (projection_reference,
     surface_normal);
  END_TYPE;
 
  ENTITY Beveled_sheet_representation
    SUBTYPE OF (Constituent_shape_representation);
      bevel_angle             : Angle_data_element;
      boundary_surface        : Composite_sheet_representation;
      vertical_profile_height : Length_data_element;
  END_ENTITY;

  ENTITY Boundary_curve_representation;
    bounds : SET [1:?] OF Curve;
  END_ENTITY;

  ENTITY Composite_sheet_representation
    SUPERTYPE OF (ONEOF(Face_based_sheet_representation, Geometric_sheet_representation))
    SUBTYPE OF (Constituent_shape_representation);
  END_ENTITY;

  ENTITY Constituent_shape_representation
    ABSTRACT SUPERTYPE OF (ONEOF(Three_d_geometry_set, Composite_sheet_representation, Beveled_sheet_representation))
    SUBTYPE OF (Geometric_model);
  END_ENTITY;

  ENTITY Face_based_sheet_representation
    SUBTYPE OF (Composite_sheet_representation);
      face_surface : Surface;
      inner_bounds : OPTIONAL SET [1:?] OF Loop;
      outer_bound  : Loop;
  END_ENTITY;

  ENTITY Flat_pattern_ply_shape
    SUBTYPE OF (Ply_shape);
      wrapup_origin_on_flat_pattern : Cartesian_point;
      wrapup_origin_on_surface      : Cartesian_point;
  END_ENTITY;

  ENTITY Geometric_sheet_representation
    SUBTYPE OF (Composite_sheet_representation);
      basis_surface : Surface;
      cutouts       : OPTIONAL SET [1:?] OF Boundary_curve_representation;
      outer_edge    : Boundary_curve_representation;
  END_ENTITY;

  ENTITY Laid_ply_shape
    SUBTYPE OF (Ply_shape);
  END_ENTITY;

  ENTITY Loop
    SUBTYPE OF (Detailed_topological_model_element);
  END_ENTITY;

  ENTITY Ply_shape
    SUPERTYPE OF (ONEOF(Projected_ply_shape, Laid_ply_shape, Flat_pattern_ply_shape));
      defining_model : Composite_sheet_representation;
      basis : OPTIONAL Ply_shape;
  END_ENTITY;

  ENTITY Projected_ply_shape
    SUPERTYPE OF (ONEOF(View_ply_shape, Surface_ply_shape))
    SUBTYPE OF (Ply_shape);
      method               : projection_method;
      projection_direction : OPTIONAL Direction;
  END_ENTITY;

  ENTITY Surface_ply_shape
    SUBTYPE OF (Projected_ply_shape);
      offset       : Length_data_element;
      surface_role : STRING;
  END_ENTITY;

  ENTITY Three_d_geometry_set
    SUBTYPE OF (Constituent_shape_representation);
      basis_role        : STRING;
      basis_surface     : Surface;
      defining_boundary : SET [1:?] OF Curve;
  END_ENTITY;

  ENTITY View_ply_shape
    SUBTYPE OF (Projected_ply_shape);
  END_ENTITY;

END_SCHEMA;