Application module: Physical unit usage view ISO/TS 10303-1732:2019(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definitions
   4.3 ARM entity definitions
   4.4 ARM function definitions
   4.5 ARM rule definition
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definitions
     5.2.2 MIM entity definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

(*
ISO/TC 184/SC 4/WG 12 N10308 - ISO/TS 10303-1732 Physical unit usage view - EXPRESS ARM
Supersedes ISO/TC 184/SC 4/WG 12 N9513
*)



SCHEMA Physical_unit_usage_view_arm;

USE FROM Feature_and_connection_zone_arm;    -- ISO/TS 10303-1671

USE FROM Item_definition_structure_arm;    -- ISO/TS 10303-1345

USE FROM Part_feature_location_arm;    -- ISO/TS 10303-1714

USE FROM Part_shape_arm;    -- ISO/TS 10303-1807

USE FROM Requirement_assignment_arm;    -- ISO/TS 10303-1233

USE FROM Shape_composition_arm;    -- ISO/TS 10303-1742

REFERENCE FROM Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);


TYPE material_state_change_enumeration = ENUMERATION OF
   (material_addition,
    material_removal);
END_TYPE;

TYPE physical_unit = EXTENSIBLE GENERIC_ENTITY SELECT
   (Part_usage_view);
END_TYPE;

TYPE puuv_documented_element_select = SELECT BASED_ON documented_element_select WITH
   (Part_feature);
END_TYPE;

TYPE puuv_groupable_item = SELECT BASED_ON groupable_item WITH
   (Part_feature);
END_TYPE;

TYPE puuv_requirement_assignment_item = SELECT BASED_ON requirement_assignment_item WITH
   (Part_feature,
    Part_view_definition);
END_TYPE;

ENTITY Connection_zone_in_usage_view
  SUBTYPE OF (Connection_zone);
  SELF\shape_element.associated_definition : Part_usage_view;
WHERE
  WR1: NOT EXISTS(SELF\Shape_element.element_name);
END_ENTITY;

ENTITY Connection_zone_map_identification;
  reference_connection_zone_shape : Usage_view_connection_zone_terminal_shape_relationship;
  mapped_connection_zone_shape : Usage_view_connection_zone_terminal_shape_relationship;
UNIQUE
  UR1: reference_connection_zone_shape, mapped_connection_zone_shape;
WHERE
  WR1: reference_connection_zone_shape <> mapped_connection_zone_shape;
  WR2: reference_connection_zone_shape.associated_connection_zone_shape_definition <> mapped_connection_zone_shape.associated_connection_zone_shape_definition;
END_ENTITY;

ENTITY Derived_part_view_definition_relationship
  SUBTYPE OF (View_definition_relationship);
  SELF\view_definition_relationship.relating_view : Part_view_definition;
  SELF\view_definition_relationship.related_view : Part_view_definition;
WHERE
  WR1: SIZEOF(get_derived_shape_element(related_view)) > 0;
  WR2: SIZEOF(QUERY(gdrse <* get_derived_shape_element(related_view) | (SIZEOF(QUERY(se <* gdrse.derived_from | relating_view <> se.associated_definition)) = 0))) = SIZEOF(get_derived_shape_element(related_view));
  WR3: NOT EXISTS(SELF\View_definition_relationship.relation_type);
END_ENTITY;

ENTITY Part_feature
  SUBTYPE OF (General_part_feature);
  SELF\shape_element.associated_definition : Part_usage_view;
  material_state_change : OPTIONAL material_state_change_enumeration;
  precedent_feature : OPTIONAL Part_feature;
INVERSE
  subsequent_feature : SET[0:1] OF part_feature FOR precedent_feature;
WHERE
  WR1: NOT EXISTS(precedent_feature) OR (NOT (SIZEOF(subsequent_feature) = 1) OR (acyclic_part_feature_precedence_relationship(SELF, [subsequent_feature[1]], 'PHYSICAL_UNIT_USAGE_VIEW_ARM.PART_FEATURE')));
  WR2: NOT EXISTS(SELF\Shape_element.description);
END_ENTITY;

ENTITY Part_feature_make_from_relationship
  SUBTYPE OF (Shape_element_relationship);
  associated_make_from : View_definition_relationship;
  SELF\shape_element_relationship.relating RENAMED reusable_feature : Part_feature;
  SELF\shape_element_relationship.related RENAMED resultant_feature : Part_feature;
UNIQUE
  UR1: reusable_feature, resultant_feature;
WHERE
  WR1: reusable_feature :<>: resultant_feature;
  WR2: reusable_feature.associated_definition :<>: resultant_feature.associated_definition;
END_ENTITY;

ENTITY Part_feature_template_definition
  SUBTYPE OF (Feature_definition_with_connection_area);
  id : STRING;
UNIQUE
  UR1: id;
END_ENTITY;

ENTITY Part_feature_template_shape_model
  SUBTYPE OF (Geometric_model);
WHERE
  WR1: NOT (SIZEOF(USEDIN(SELF, '')) > 1) OR (SIZEOF(QUERY(foo <* USEDIN(SELF, '') | NOT (SIZEOF(['PART_FEATURE_LOCATION_ARM.USAGE_CONCEPT_USAGE_RELATIONSHIP', 'SHAPE_PROPERTY_ASSIGNMENT_ARM.SHAPE_DESCRIPTION_ASSOCIATION'] * TYPEOF(foo)) = 1))) = 0);
  WR2: NOT EXISTS(SELF\Representation.description);
  WR3: ((SIZEOF(USEDIN(SELF, 'PROPERTY_ASSIGNMENT_ARM.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')) = 0));
END_ENTITY;

ENTITY Part_usage_view
  SUBTYPE OF (Part_view_definition);
END_ENTITY;

ENTITY Usage_view_connection_zone_terminal_shape_relationship;
  associating_terminal_shape : Part_feature_template_shape_model;
  associated_usage : Connection_zone_in_usage_view;
  associated_connection_zone_shape_definition : Geometric_model;
  associated_usage_placement : Axis_placement;
WHERE
  WR1: associating_terminal_shape :<>: associated_connection_zone_shape_definition;
END_ENTITY;

RULE unique_assembly_component_relationship FOR
(assembly_component_relationship);
    LOCAL
  gee : SET OF Product_view_definition := [];
  gei : SET OF Product_view_definition := [];
    END_LOCAL;
  REPEAT i := 1 TO SIZEOF(assembly_component_relationship) BY 1;
    gee := gee + assembly_component_relationship[i]\Product_occurrence_definition_relationship.related_view;
    gei := gei + assembly_component_relationship[i]\Product_occurrence_definition_relationship.relating_view;
  END_REPEAT;
WHERE
  WR1: SIZEOF(gee) = SIZEOF(gei);
END_RULE;

FUNCTION acyclic_part_feature_precedence_relationship
 (relation : Part_feature; relatives : SET[1:?] OF Part_feature; specific_relation : STRING) : BOOLEAN;
  LOCAL
  x : SET OF Part_feature;
    END_LOCAL;
      IF relation.precedent_feature IN relatives
  THEN
    RETURN(FALSE);
  END_IF;
      x := QUERY(pd
                 <* bag_to_set(USEDIN(relation.precedent_feature, 'PHYSICAL_UNIT_USAGE_VIEW_ARM.PART_FEATURE.SUBSEQUENT_FEATURE'))
                 | specific_relation IN TYPEOF(pd));
      REPEAT i := 1 TO HIINDEX(x);
    IF NOT acyclic_part_feature_precedence_relationship(x[i], relatives + relation.precedent_feature, specific_relation)
    THEN
      RETURN(FALSE);
    END_IF;
  END_REPEAT;
      RETURN(TRUE);
END_FUNCTION;

FUNCTION get_derived_shape_element
 (input : Part_view_definition) : SET OF Derived_shape_element;
  LOCAL
  se : SET OF Shape_element := [];
    END_LOCAL;
      se := se + bag_to_set(USEDIN(input, 'SHAPE_PROPERTY_ASSIGNMENT_ARM.SHAPE_ELEMENT.ASSOCIATED_DEFINITION'));
      RETURN(QUERY(dse <* se | 'DERIVED_SHAPE_ELEMENT_ARM.DERIVED_SHAPE_ELEMENT' IN TYPEOF(se)));
END_FUNCTION;

END_SCHEMA;  -- Physical_unit_usage_view_arm


© ISO 2019 — All rights reserved