ENTITY machining_tool

(* SCHEMA integrated_cnc_schema; *)
ENTITY machining_tool
  SUBTYPE OF (action_resource);
  WHERE
  WR1:  NOT (SELF.kind.name = 'milling cutting tool') OR
        ((0 <= SIZEOF (QUERY (arr <* USEDIN (SELF,
          'INTEGRATED_CNC_SCHEMA.ACTION_RESOURCE_RELATIONSHIP.RELATING_RESOURCE') |
          (('INTEGRATED_CNC_SCHEMA.MACHINING_CUTTING_COMPONENT'
             IN TYPEOF (arr.related_resource)) AND
           (arr.related_resource.kind.name = 'milling cutting edge') )))) AND

         (verify_optional_tool_body_item
           (SELF, 'overall assembly length')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'overall assembly length')) AND

         (verify_optional_tool_body_item
           (SELF, 'effective cutting diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'effective cutting diameter')) AND

         (verify_optional_tool_body_item
           (SELF, 'maximum depth of cut')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum depth of cut')) AND

         (verify_optional_tool_body_item (SELF, 'hand of cut')) AND
         (verify_enumeration_tool_body_item (SELF, 'hand of cut',
           ['left', 'right', 'neutral'])) AND

         (verify_optional_tool_body_item (SELF, 'coolant through tool')) AND
         (verify_enumeration_tool_body_item (SELF, 'coolant through tool',
           ['supported', 'not supported'])) 
        );

  WR2:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'counterbore', 'countersink',
         'spade drill', 'spot drill', 'step drill', 'tapered drill',
         'twist drill', 'drill']))
        OR
        ((verify_optional_tool_body_item      (SELF, 'point angle')) AND
         (verify_angle_measure_tool_body_item (SELF, 'point angle'))
        );

  WR3:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'countersink'))
        OR
        ((verify_optional_tool_body_item
           (SELF, 'minimum cutting diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'minimum cutting diameter')) AND

         (verify_required_tool_body_item
           (SELF, 'maximum usable length')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum usable length'))
        );

  WR4:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'tapered drill'))
        OR
        ((verify_required_tool_body_item      (SELF, 'taper angle')) AND
         (verify_angle_measure_tool_body_item (SELF, 'taper angle'))
        );


  -- Could make this stronger if we want
  WR5:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'step drill'))
        OR
        ((verify_required_tool_body_item      (SELF, 'step diameters')) AND
         (verify_rep_item_for_tool_body
           (SELF, 'step diameters',
           ['INTEGRATED_CNC_SCHEMA.COMPOUND_REPRESENTATION_ITEM'])) AND

         (verify_required_tool_body_item      (SELF, 'step lengths')) AND
         (verify_rep_item_for_tool_body
           (SELF, 'step lengths',
           ['INTEGRATED_CNC_SCHEMA.COMPOUND_REPRESENTATION_ITEM']))
        );

  WR6:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'ballnose endmill', 'bullnose endmill',
         'dovetail mill', 'endmill', 'facemill', 'profiled endmill',
         'shoulder mill', 'tee slot mill', 'thread mill', 'side mill']))
        OR
        ((verify_optional_tool_body_item
           (SELF, 'number of effective teeth')) AND
         (verify_count_measure_tool_body_item
           (SELF, 'number of effective teeth')) AND

         (verify_optional_tool_body_item       (SELF, 'edge radius')) AND
         (verify_length_measure_tool_body_item (SELF, 'edge radius'))
        );

  WR7:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'ballnose endmill', 'bullnose endmill',
         'endmill', 'facemill', 'profiled endmill']))
        OR
        ((verify_optional_tool_body_item
           (SELF, 'tool cutting edge angle')) AND
         (verify_angle_measure_tool_body_item
           (SELF, 'tool cutting edge angle'))
        );

  WR8:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'ballnose endmill'))
        OR verify_ballnose_endmill_dimensions (SELF);

  WR9:  NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'bullnose endmill'))
        OR verify_bullnose_endmill_dimensions (SELF);

  WR10: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'tee slot mill'))
        OR
        ((verify_optional_tool_body_item       (SELF, 'cutting width')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutting width'))
        );

  WR11: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'dovetail mill'))
        OR
        ((verify_optional_tool_body_item       (SELF, 'included angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'included angle'))
        );

  WR12: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'side mill'))
        OR
        ((verify_optional_tool_body_item       (SELF, 'cutter width')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutter width'))
        );


  WR13: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'thread mill', 'tapping tool',
         'combined drill and tap']))
        OR
        ((verify_required_tool_body_item  (SELF, 'thread form type')) AND
         (verify_rep_item_for_tool_body   (SELF, 'thread form type',
           ['INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'])) AND

         (verify_required_tool_body_item       (SELF, 'thread size')) AND
         (verify_length_measure_tool_body_item (SELF, 'thread size')) AND

         (verify_required_tool_body_item       (SELF, 'thread pitch')) AND
         (verify_length_measure_tool_body_item (SELF, 'thread pitch'))
        );


  WR14: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'tapping tool', 'combined drill and tap']))
        OR
        ((verify_required_tool_body_item
           (SELF, 'taper thread count')) AND
         (verify_count_measure_tool_body_item
           (SELF, 'taper thread count'))
        );


  WR15: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'reamer', 'combined drill and reamer',
         'tapered reamer']))
        OR
        ((verify_required_tool_body_item       (SELF, 'taper length')) AND
         (verify_length_measure_tool_body_item (SELF, 'taper length'))
        );

  WR16: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'tapered reamer'))
        OR
        ((verify_required_tool_body_item       (SELF, 'taper angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'taper angle'))
        );

  WR17: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description IN [ 'combined drill and reamer',
         'combined drill and tap']))
        OR
        ((verify_required_tool_body_item       (SELF, 'drill length')) AND
         (verify_length_measure_tool_body_item (SELF, 'drill length'))
        );


  WR18: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'boring tool'))
        OR
        ((verify_required_tool_body_item    (SELF, 'retract movement')) AND
         (verify_enumeration_tool_body_item (SELF, 'retract movement',
           ['permitted', 'forbidden']))
        );

  WR19: NOT ((SELF.kind.name = 'milling cutting tool') AND
        (SELF.description = 'user defined milling tool'))
        OR
        ((verify_optional_tool_body_item  (SELF, 'tool description')) AND
         (verify_rep_item_for_tool_body   (SELF, 'tool description',
           ['INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'])) AND

         (verify_optional_tool_body_item 
           (SELF, 'corner radius')) AND
         (verify_length_measure_tool_body_item 
           (SELF, 'corner radius')) AND

         (verify_optional_tool_body_item 
           (SELF, 'corner radius center horizontal')) AND
         (verify_length_measure_tool_body_item 
           (SELF, 'corner radius center horizontal')) AND

         (verify_optional_tool_body_item 
           (SELF, 'corner radius center vertical')) AND
         (verify_length_measure_tool_body_item 
           (SELF, 'corner radius center vertical')) AND

         (verify_optional_tool_body_item       (SELF, 'taper angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'taper angle')) AND

         (verify_optional_tool_body_item       (SELF, 'tip outer angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'tip outer angle'))
        );

  WR20: NOT (SELF.kind.name = 'turning cutting tool') OR
        ((verify_required_tool_body_item       (SELF, 'functional length')) AND
         (verify_length_measure_tool_body_item (SELF, 'functional length')) AND

         (verify_required_tool_body_item       (SELF, 'f dimension')) AND
         (verify_length_measure_tool_body_item (SELF, 'f dimension')) AND

         (verify_optional_tool_body_item
           (SELF, 'minimum cutting diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'minimum cutting diameter')) AND

         (verify_optional_tool_body_item
           (SELF, 'a dimension on f')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'a dimension on f')) AND

         (verify_optional_tool_body_item
           (SELF, 'a dimension on lf')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'a dimension on lf')) AND

         (verify_optional_tool_body_item    (SELF, 'hand of cut')) AND
         (verify_enumeration_tool_body_item (SELF, 'hand of cut',
           ['left', 'right', 'neutral'])) AND

         (0 <= SIZEOF (QUERY (arr <* USEDIN (SELF,
          'INTEGRATED_CNC_SCHEMA.ACTION_RESOURCE_RELATIONSHIP.RELATING_RESOURCE') |
          (('INTEGRATED_CNC_SCHEMA.MACHINING_CUTTING_COMPONENT'
             IN TYPEOF (arr.related_resource)) AND
           (arr.related_resource.kind.name = 'turning cutting edge') ))))
        );

  WR21: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'turning threading tool'))
        OR
        ((verify_required_tool_body_item       (SELF, 'thread pitch')) AND
         (verify_length_measure_tool_body_item (SELF, 'thread pitch')) AND

         (verify_required_tool_body_item       (SELF, 'thread hand')) AND
         (verify_enumeration_tool_body_item    (SELF, 'thread hand',
           ['left', 'right'])) AND

         (verify_required_tool_body_item       (SELF, 'thread type')) AND
         (verify_enumeration_tool_body_item    (SELF, 'thread type',
           ['internal', 'external'])) AND

         (verify_required_tool_body_item       (SELF, 'thread profile')) AND
         (verify_enumeration_tool_body_item    (SELF, 'thread profile',
           ['full', 'partial'])) AND

         (verify_required_tool_body_item  (SELF, 'thread form type')) AND
         (verify_rep_item_for_tool_body   (SELF, 'thread form type',
           ['INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM']))
        );

  WR22: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'grooving tool'))
        OR
        ((verify_required_tool_body_item
           (SELF, 'cutting width')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'cutting width')) AND

         (verify_required_tool_body_item
           (SELF, 'maximum grooving depth')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum grooving depth')) AND

         (verify_optional_tool_body_item
           (SELF, 'corner radius')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'corner radius')) AND

         (verify_optional_tool_body_item
           (SELF, 'maximum axial grooving diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'maximum axial grooving diameter')) AND

         (verify_optional_tool_body_item
           (SELF, 'minimum axial grooving diameter')) AND
         (verify_length_measure_tool_body_item
           (SELF, 'minimum axial grooving diameter'))
        );

  WR23: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'knurling tool'))
        OR
        ((verify_required_tool_body_item    (SELF, 'knurl pattern')) AND
         (verify_enumeration_tool_body_item (SELF, 'knurl pattern',
           ['straight', 'diagonal', 'diamond'])) AND

         (verify_optional_tool_body_item       (SELF, 'cutting length')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutting length')) AND

         (verify_optional_tool_body_item       (SELF, 'cutting angle')) AND
         (verify_angle_measure_tool_body_item  (SELF, 'cutting angle')) AND

         (verify_optional_tool_body_item       (SELF, 'cutting pitch')) AND
         (verify_length_measure_tool_body_item (SELF, 'cutting pitch'))
        );

  WR24: NOT ((SELF.kind.name = 'turning cutting tool') AND
        (SELF.description = 'user defined turning tool'))
        OR
        ((verify_required_tool_body_item  (SELF, 'tool identifier')) AND
         (verify_rep_item_for_tool_body   (SELF, 'tool identifier',
           ['INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM']))
        );


  WR25: (1 >= SIZEOF (QUERY (rar <* USEDIN (SELF,
          'INTEGRATED_CNC_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES') |
         ((1 = SIZEOF(rar.operations)) AND
          ('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL_USAGE'
           IN TYPEOF (rar\action_resource_requirement.operations[1])))
        )));
END_ENTITY; -- 10303-238: integrated_cnc_schema

Explicit Attributes

Entity machining_tool has the following local and inherited explicit attributes:
AttributeTypeDefined By
 namelabel (STRING)action_resource
 descriptiontext (STRING)action_resource
 usageSET OF supported_item (SELECT)action_resource
 kindaction_resource_type (ENTITY)action_resource

Derived Attributes

    No derived attributes

Inverse Attributes

    No Inverse Attributes

Supertypes

Entity machining_tool inherits from the following supertypes:
  action_resource

Subtypes

    No subtypes

Referenced By

Entity machining_tool and its supertypes are referenced by the following definitions:
DefinitionTypeReferenced Entity
 action_resource_relationship ENTITY action_resource
 characterized_resource_definition SELECT action_resource
 get_tool_body_item FUNCTION machining_tool
 requirement_for_action_resource ENTITY action_resource
 verify_angle_measure_tool_body_item FUNCTION machining_tool
 verify_ballnose_endmill_dimensions FUNCTION machining_tool
 verify_bullnose_endmill_dimensions FUNCTION machining_tool
 verify_count_measure_tool_body_item FUNCTION machining_tool
 verify_enumeration_tool_body_item FUNCTION machining_tool
 verify_length_measure_tool_body_item FUNCTION machining_tool
 verify_optional_tool_body_item FUNCTION machining_tool
 verify_rep_item_for_tool_body FUNCTION machining_tool
 verify_required_tool_body_item FUNCTION machining_tool


[Top Level Definitions]

Generated by STEP ToolsTM EXPRESS to HTML Converter
on 2010-01-12T10:42:21-02:00