(*
 * $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 Ap210 assembly physical design - EXPRESS ARM
   by LKSoftWare GmbH for implementation purpose within IDA-STEP(TM)
*)

SCHEMA Ap210_assembly_physical_design_xim;
   USE FROM Design_product_data_management_xim;
   USE FROM Altered_part_xim;
   USE FROM Assembly_functional_interface_requirement_xim;
   USE FROM Assembly_module_with_macro_component_xim;
   USE FROM Assembly_module_with_cable_component_2d_xim;   
   USE FROM Assembly_module_with_cable_component_3d_xim;
   USE FROM Assembly_2d_shape_xim;
   USE FROM Assembly_3d_shape_xim;
   USE FROM Chemical_substance_xim;
   USE FROM Design_specific_assignment_to_assembly_usage_view_xim;
   USE FROM Device_marking_xim;
   USE FROM Interconnect_module_to_assembly_module_relationship_xim;	-- ISO/TS 10303-1685   
   USE FROM Physical_unit_interconnect_definition_xim;

	TYPE ap210_apd_assembly_module_or_assembly_group_component = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON assembly_module_or_assembly_group_component WITH (
		Assembly_group_component_armx);
	END_TYPE;
(** Assembly_module_with_packaged_connector_component_xim and 
Assembly_module_with_interconnect_component_xim  - most likely in some Assembly CC *)
	SUBTYPE_CONSTRAINT physical_component_interface_terminal_armx_subtypes FOR Physical_component_interface_terminal_armx;     
		(ONEOF (Packaged_connector_component_interface_terminal,
		 Interconnect_component_interface_terminal));
	END_SUBTYPE_CONSTRAINT;

(** most likely some Assembly_module CC *)
	SUBTYPE_CONSTRAINT packaged_part_armx_subtypes FOR Packaged_part_armx; 
	    (ONEOF (Minimally_defined_connector_armx, -- Assembly_functional_interface_requirement_xim
	 	Packaged_connector_armx) ANDOR -- Packaged_connector_model_xim
	 	Altered_packaged_part); -- Altered_part_xim
	END_SUBTYPE_CONSTRAINT;
	
	(** It most likely should be in Assembly_module CC *)
	SUBTYPE_CONSTRAINT ap210_physical_component_subtypes FOR Physical_component_armx;  
		(ONEOF (Assembly_module_component_armx, --Assembly_module_with_subassembly_xim
		Bare_die_component_armx, -- Assembly_module_design_xim
		Cable_component_armx, -- Assembly_module_with_cable_component_xim
		Interconnect_module_component_armx, -- Assembly_module_with_interconnect_component_xim
		Packaged_component_armx, -- Assembly_module_design_xim
		Routed_interconnect_component_armx, -- Assembly_module_design_xim
		Routed_physical_component_armx)); -- Assembly_module_design_xim 
	END_SUBTYPE_CONSTRAINT;
	
	(** It most likely should be in Assembly_module CC *)
	SUBTYPE_CONSTRAINT ap210_part_usage_view_subtypes FOR Part_usage_view;  
	    ONEOF (Package_armx,
		 Bare_die_armx,
		 Cable_usage_view_armx,
		 Packaged_part_armx,
		 Assembly_module_usage_view,
		 Interconnect_module_usage_view);
	END_SUBTYPE_CONSTRAINT;

	SUBTYPE_CONSTRAINT ap210_apd_part_view_definition_subtypes FOR Part_view_definition ; 
		(ONEOF (Part_usage_view,
		Part_design_view,
		Stratum_armx,
		Physical_unit_interconnect_definition_armx));
	END_SUBTYPE_CONSTRAINT; 

   
END_SCHEMA;


