(*
 * $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 Assembly module with interconnect component - EXPRESS ARM
   by LKSoftWare GmbH for implementation purpose within IDA-STEP(TM)
*)

SCHEMA Assembly_module_with_interconnect_component_xim;

USE FROM Assembly_module_design_xim;

USE FROM Interconnect_module_usage_view_xim;

USE FROM Interface_component_xim;

USE FROM Assembly_module_with_interconnect_component_mim;

 	TYPE amwic_assembled_feature_select = EXTENSIBLE GENERIC_ENTITY SELECT BASED_ON assembled_feature_select WITH   
    (Interconnect_component_join_terminal,
     Interconnect_component_interface_terminal,
     Interconnect_module_component_surface_feature,
     Interconnect_module_component_terminal);
  END_TYPE;

 	TYPE conductive_interconnect_terminal_or_interconnect_component_join_terminal = SELECT
 		(Interconnect_component_interface_terminal,
     	Interconnect_component_join_terminal,
     	Movable_packaged_component_join_terminal);
	END_TYPE;

  ENTITY Design_view_terminal_component_shape_relationship
  	(* CONNOTATIONAL *) SUBTYPE OF (representation_relationship_with_transformation);
      SELF\representation_relationship.rep_1 RENAMED associating_component_shape          : Shape_representation;
      associated_usage																																		: conductive_interconnect_terminal_or_interconnect_component_join_terminal;
      SELF\representation_relationship.rep_2 RENAMED associated_terminal_shape_definition : Shape_representation;
      associated_usage_placement           																								: axis2_placement;
    DERIVE
      SELF\representation_relationship.description : text := ?;
      SELF\representation_relationship_with_transformation.transformation_operator : transformation := ?;
      SELF\representation_relationship.name : label := ?;
  END_ENTITY;

  ENTITY Interconnect_component_interface_terminal
    (* CONNOTATIONAL *) SUBTYPE OF (Physical_component_interface_terminal_armx);
      connection : OPTIONAL Connection_zone_in_design_view;
    DERIVE
      SELF\shape_aspect.description : text := 'interconnect component interface terminal';
  END_ENTITY;

  ENTITY Interconnect_component_join_terminal
    SUBTYPE OF (Physical_component_terminal_armx, Shape_feature);
      SELF\Shape_feature.connection_area                : OPTIONAL SET[1:1] OF Connection_zone_in_design_view;
      SELF\Shape_element.containing_shape(* TEMP-CF! *) : Physical_component_armx;
    DERIVE
      SELF\shape_aspect.description : text := 'interconnect component join terminal';
  END_ENTITY;

  ENTITY Interconnect_module_component_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Physical_component_armx, Single_instance, interconnect_module_component);
      SELF\Definition_based_product_occurrence.derived_from : Interconnect_module_usage_view;
    DERIVE
      SELF\Product_view_definition.name_x : STRING := '';
  END_ENTITY;

  ENTITY Interconnect_module_component_surface_feature_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Physical_component_feature_armx, interconnect_module_component_surface_feature);
      SELF\Component_feature_armx.definition : Interconnect_module_surface_feature;
    DERIVE
      SELF\shape_aspect.description : text := 'interconnect module component surface feature';
  END_ENTITY;

  ENTITY Interconnect_module_component_terminal
    (* CONNOTATIONAL *) SUBTYPE OF (Physical_component_terminal_armx);
      SELF\Component_feature_armx.definition           : Interconnect_module_terminal_armx;
      SELF\Shape_element.containing_shape(* TEMP-CF! *) : Interconnect_module_component_armx;
    DERIVE
      SELF\shape_aspect.description : text := 'interconnect module component terminal';
  END_ENTITY;

END_SCHEMA;

