(*
   $Id$
   ISO TC184/SC4/WG12 N3843 - ISO/TS 10303-1632 Assembly 2d shape - EXPRESS ARM
   Supersedes ISO TC184/SC4/WG12 N3639
*)

SCHEMA Assembly_2d_shape_arm;

	USE FROM Assembly_technology_arm;	-- ISO/TS 10303-1649
	USE FROM Physical_unit_2d_design_view_arm;	-- ISO/TS 10303-1724

	SUBTYPE_CONSTRAINT a2ds_component_2d_location_subtypes FOR Component_2d_location;         
	    ONEOF (Component_2d_edge_location,
	 Component_2d_stacked_location,
	 Component_2d_surface_location);    
	END_SUBTYPE_CONSTRAINT;

  ENTITY Bond_assembly_2d_position;
      bond                      : Assembled_with_bonding;
      assembly_model            : Physical_unit_planar_shape_model;
      bond_model                : Default_assembly_bond_shape_model;
      bond_definition_placement : Axis_placement_2d;
   UNIQUE
   	UR1 : bond;
  END_ENTITY;

  ENTITY Component_2d_edge_location
    SUBTYPE OF (Component_2d_location);
      reference_terminal_assembly_joint : Assembly_joint;
      mounting_surface_assembly_joint   : Assembly_joint;
    WHERE
      WR1 : reference_terminal_assembly_joint <> mounting_surface_assembly_joint;
      WR2 : SELF\Component_2d_location.substrate_location = FALSE;
      WR3 : SIZEOF(['ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_TERMINAL',
                    'ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_SURFACE_FEATURE'] * TYPEOF(mounting_surface_assembly_joint.assembly_feature_1)) >= 1;
      WR4 : 'PACKAGE_ARM.PRIMARY_REFERENCE_TERMINAL' IN TYPEOF(reference_terminal_assembly_joint\assembly_joint.assembly_feature_1);
      WR5 : NOT EXISTS(SELF\Representation_relationship.description);
  END_ENTITY;

  ENTITY Component_2d_stacked_location
    SUBTYPE OF (Component_2d_location);
      mounting_joint : Assembly_joint;
    WHERE
      WR1 : SIZEOF(['ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_TERMINAL',
                    'ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_SURFACE_FEATURE'] * TYPEOF(mounting_joint.assembly_feature_1)) = 0;
      WR2 : SIZEOF(['ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_TERMINAL',
                    'ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_SURFACE_FEATURE'] * TYPEOF(mounting_joint.assembly_feature_2)) = 0;
      WR3 : SELF\Component_2d_location.substrate_location = FALSE;
      WR4 : NOT EXISTS(SELF\Representation_relationship.description);
  END_ENTITY;

  ENTITY Component_2d_surface_location
    SUBTYPE OF (Component_2d_location);
      mounting_surface_assembly_joint : Assembly_joint;
    WHERE
      WR1 : SELF\Component_2d_location.substrate_location = FALSE;
      WR2 : SIZEOF(['ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_TERMINAL',
                    'ASSEMBLY_MODULE_WITH_INTERCONNECT_COMPONENT_ARM.INTERCONNECT_MODULE_COMPONENT_SURFACE_FEATURE'] * TYPEOF(mounting_surface_assembly_joint.assembly_feature_1)) >= 1;
      WR3 : NOT EXISTS(SELF\Representation_relationship.description);
  END_ENTITY;

END_SCHEMA;


