(*
 * $Id$
 *
 * JSDAI(TM), a way to implement STEP, ISO 10303
 * Copyright (C) 1997-2008, LKSoftWare GmbH, Germany
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License
 * version 3 as published by the Free Software Foundation (AGPL v3).
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * JSDAI is a registered trademark of LKSoftWare GmbH, Germany
 * This software is also available under commercial licenses.
 * See also http://www.jsdai.net/
 *)

(*
   Derived from ISO TC184/SC4/WG12 N - ISO/CD-TS 10303-xxxx Layered 3d shape - EXPRESS ARM
   by LKSoftWare GmbH for implementation purpose within IDA-STEP(TM)
*)

SCHEMA Layered_3d_shape_xim;

    USE FROM Layered_2d_shape_xim; -- ISO/TS 10303-1693
	USE FROM Physical_unit_3d_shape_xim;	-- ISO/TS 10303-1727
	USE FROM Advanced_boundary_representation_xim;	-- ISO/TS 10303-1514
	USE FROM Curve_swept_solid_xim;	-- ISO/TS 10303-1659
	USE FROM Geometrically_bounded_surface_xim;	-- ISO/TS 10303-1507	
	
USE FROM Layered_3d_shape_mim;


	TYPE l3ds_feature_or_non_feature_usage = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON feature_or_non_feature_usage WITH 
 		(part_template_or_physical_unit_3d_shape_model_select);
	END_TYPE;

 	  TYPE part_template_or_physical_unit_3d_shape_model_select = EXTENSIBLE GENERIC_ENTITY SELECT
	    (Physical_unit_3d_shape_model);
	  END_TYPE;

	SUBTYPE_CONSTRAINT l3ds_geometric_representation_relationship_subtypes FOR Shape_representation_relationship;     
		(ONEOF (Shape_definition_3d_intersection_armx,
		 Shape_definition_3d_plane_projection 
		 ));    
	END_SUBTYPE_CONSTRAINT;

  ENTITY Shape_definition_3d_intersection_armx
    (* CONNOTATIONAL *) SUBTYPE OF (shape_definition_3d_intersection);
      orientation_intersection_plane : axis2_placement_3d;
      planar_shape_origin            : axis2_placement_2d;
      SELF\representation_relationship.rep_1 RENAMED surface_intersection_result : Planar_shape_model;
      SELF\representation_relationship.rep_2 RENAMED projected_volume            : Shape_representation;
    DERIVE
      SELF\representation.items : SET [1:?] OF representation_item := ?;
      SELF\representation.context_of_items : representation_context := ?;
      SELF\representation_relationship_with_transformation.transformation_operator : transformation := ?;
      SELF\Representation_relationship.name : label := 'shape definition 3d intersection';
    WHERE
      WR1 : NOT ('LAYERED_3D_SHAPE_XIM.PLANAR_SHAPE_MODEL' IN TYPEOF(projected_volume));
  END_ENTITY;

  ENTITY Shape_definition_3d_plane_projection
    (* CONNOTATIONAL *) SUBTYPE OF (representation_relationship_with_transformation);
      viewing_plane       : axis2_placement_3d;
      planar_shape_origin : axis2_placement_2d;
      SELF\representation_relationship.rep_1 RENAMED surface_projection_result : Planar_shape_model;
      SELF\representation_relationship.rep_2 RENAMED projected_volume          : Shape_representation;
    DERIVE
      SELF\representation_relationship_with_transformation.transformation_operator : transformation := ?;
      SELF\Representation_relationship.name : label := 'shape definition 3d plane projection';
    WHERE
      WR1 : NOT ('LAYERED_3D_SHAPE_XIM.PLANAR_SHAPE_MODEL' IN TYPEOF(projected_volume));
  END_ENTITY;

END_SCHEMA;


