(*
   $Id$
   ISO TC184/SC4/WG12 N4083 - ISO/TS 10303-1712 Part feature function - EXPRESS ARM
   Supersedes ISO TC184/SC4/WG12 N3510
*)

SCHEMA Part_feature_function_arm;

	USE FROM Physical_unit_usage_view_arm;	-- ISO/TS 10303-1732

  ENTITY Fiducial_part_feature
    SUBTYPE OF (Part_tooling_feature);
  END_ENTITY;

  ENTITY Part_interface_access_feature
    SUBTYPE OF (Part_feature);
      accessed_interface                 : Part_feature;
      SELF\Shape_feature.connection_area : OPTIONAL SET[1:?] OF Connection_zone_in_usage_view;                  
    WHERE
      WR1 : SELF\Part_feature.material_state_change = material_removal;
      WR2 : SELF <> accessed_interface;
      WR3 : NOT ('FUNCTIONAL_ASSIGNMENT_TO_PART_ARM.PART_TERMINAL' IN TYPEOF(SELF));
      WR4 : NOT ('PACKAGE_ARM.PACKAGE_BODY' IN TYPEOF(SELF));
      WR5 : NOT ('PART_FEATURE_FUNCTION_ARM.PART_MOUNTING_FEATURE' IN TYPEOF(SELF));
      WR6 : NOT ('INTERCONNECT_MODULE_USAGE_VIEW_ARM.INTERCONNECT_MODULE_SURFACE_FEATURE' IN TYPEOF(SELF));
      WR7 : NOT ('PACKAGE_ARM.PACKAGE_TERMINAL' IN TYPEOF(SELF));
      WR8 : NOT ('PACKAGE_ARM.PACKAGE_BODY_SURFACE' IN TYPEOF(SELF));
      WR9 : NOT ('PACKAGE_ARM.POLARITY_INDICATION_FEATURE' IN TYPEOF(SELF));
  END_ENTITY;

  ENTITY Part_mating_feature
    SUBTYPE OF (Part_feature);
      SELF\Shape_feature.connection_area : OPTIONAL SET[1:?] OF Connection_zone_in_usage_view;                  
    WHERE
      WR1 : NOT ('PART_FEATURE_FUNCTION_ARM.PART_MOUNTING_FEATURE' IN TYPEOF(SELF));
      WR2 : NOT ('INTERCONNECT_MODULE_USAGE_VIEW_ARM.INTERCONNECT_MODULE_SURFACE_FEATURE' IN TYPEOF(SELF));
      WR3 : NOT ('PACKAGE_ARM.PACKAGE_TERMINAL' IN TYPEOF(SELF));
      WR4 : NOT ('FUNCTIONAL_ASSIGNMENT_TO_PART_ARM.PART_TERMINAL' IN TYPEOF(SELF));
  END_ENTITY;

  ENTITY Part_mounting_feature
    SUBTYPE OF (Part_feature);
      SELF\Shape_feature.connection_area : OPTIONAL SET[1:?] OF Connection_zone_in_usage_view;            
  END_ENTITY;

  ENTITY Part_tooling_feature
    SUPERTYPE OF (ONEOF (Fiducial_part_feature,
 Tool_registration_mark) ANDOR
 Test_point_part_feature)
    SUBTYPE OF (Part_feature);
  END_ENTITY;

  ENTITY Test_point_part_feature
    SUBTYPE OF (Part_tooling_feature);
  WHERE
   WR1: 'FUNCTIONAL_ASSIGNMENT_TO_PART_ARM.PART_TERMINAL' IN TYPEOF(SELF);
  END_ENTITY;

  ENTITY Thermal_feature
    SUBTYPE OF (Part_feature);
  END_ENTITY;

  ENTITY Tool_registration_mark
    SUBTYPE OF (Part_tooling_feature);
  END_ENTITY;

END_SCHEMA;
