(*
 * $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 Part feature function - EXPRESS ARM
   by LKSoftWare GmbH for implementation purpose within IDA-STEP(TM)
*)

SCHEMA Part_feature_function_xim;

  USE FROM Physical_unit_usage_view_xim;

--	USE FROM Geometric_tolerance_xim (Single_datum);

USE FROM Part_feature_function_mim;

  ENTITY Fiducial_part_feature_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Part_tooling_feature_armx, fiducial_part_feature);
  END_ENTITY;

  ENTITY Part_interface_access_feature_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Part_feature, part_interface_access_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_XIM.PART_TERMINAL' IN TYPEOF(SELF));
      WR4 : NOT ('PACKAGE_XIM.PACKAGE_BODY_ARMX' IN TYPEOF(SELF));
      WR5 : NOT ('PART_FEATURE_FUNCTION_XIM.PART_MOUNTING_FEATURE_ARMX' IN TYPEOF(SELF));
      WR6 : NOT ('INTERCONNECT_MODULE_USAGE_VIEW_XIM.INTERCONNECT_MODULE_SURFACE_FEATURE' IN TYPEOF(SELF));
      WR7 : NOT ('PACKAGE_XIM.PACKAGE_TERMINAL_ARMX' IN TYPEOF(SELF));
      WR8 : NOT ('PACKAGE_XIM.PACKAGE_BODY_SURFACE_ARMX' IN TYPEOF(SELF));
      WR9 : NOT ('PACKAGE_XIM.POLARITY_INDICATION_FEATURE' IN TYPEOF(SELF));
  END_ENTITY;

  ENTITY Part_mating_feature_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Part_feature, part_mating_feature);
      SELF\Shape_feature.connection_area : OPTIONAL SET[1:?] OF Connection_zone_in_usage_view;
    WHERE
      WR1 : NOT ('PART_FEATURE_FUNCTION_XIM.PART_MOUNTING_FEATURE_ARMX' IN TYPEOF(SELF));
      WR2 : NOT ('INTERCONNECT_MODULE_USAGE_VIEW_XIM.INTERCONNECT_MODULE_SURFACE_FEATURE' IN TYPEOF(SELF));
      WR3 : NOT ('PACKAGE_XIM.PACKAGE_TERMINAL_ARMX' IN TYPEOF(SELF));
      WR4 : NOT ('FUNCTIONAL_ASSIGNMENT_TO_PART_XIM.PART_TERMINAL' IN TYPEOF(SELF));
  END_ENTITY;

  ENTITY Part_mounting_feature_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Part_feature, part_mounting_feature);
      SELF\Shape_feature.connection_area : OPTIONAL SET[1:?] OF Connection_zone_in_usage_view;
  END_ENTITY;

  ENTITY Part_tooling_feature_armx
    SUPERTYPE OF (ONEOF (Fiducial_part_feature_armx,
 Tool_registration_mark_armx) ANDOR
 Test_point_part_feature_armx)
    (* CONNOTATIONAL *) SUBTYPE OF (Part_feature, part_tooling_feature);
  END_ENTITY;

  ENTITY Test_point_part_feature_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Part_tooling_feature_armx, test_point_part_feature);
  WHERE
   WR1: 'FUNCTIONAL_ASSIGNMENT_TO_PART_XIM.PART_TERMINAL' IN TYPEOF(SELF);
  END_ENTITY;

 ENTITY Thermal_feature_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Part_feature, thermal_feature);
  END_ENTITY;

  ENTITY Tool_registration_mark_armx
    (* CONNOTATIONAL *) SUBTYPE OF (Part_tooling_feature_armx, tool_registration_mark);
  END_ENTITY;

END_SCHEMA;




