| Application module: Physical unit usage view | ISO/TS 10303-1732:2019(E) © ISO | 
         (*
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