| Application module: Physical unit design view | ISO/TS 10303-1728:2018-11(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N9464 - ISO/TS 10303-1728 Physical unit design view - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N8206
*)
         
SCHEMA Physical_unit_design_view_arm;
         USE FROM
         Assembly_component_arm;
            -- ISO/TS 10303-1802
         USE FROM
         Interface_component_arm;
            -- ISO/TS 10303-1691
         USE FROM
         Part_template_arm;
            -- ISO/TS 10303-1722
         USE FROM
         Physical_unit_usage_view_arm;
            -- ISO/TS 10303-1732
         USE FROM
         Specification_document_arm;
            -- ISO/TS 10303-1747
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
TYPE assembly_component_or_item_number =
         
         
         SELECT
            (Assembly_item_number, 
    Assembly_component_relationship);
         END_TYPE; 
         
TYPE assembly_item_number_or_process_specification =
         
         
         SELECT
            (Assembly_item_number, 
    Process_specification);
         END_TYPE; 
         
TYPE bonding_or_coating =
         
         ENUMERATION
         
         OF
         
            
         (bonding,
    coating);
         END_TYPE; 
         
TYPE pudv_extended_value_with_unit =
         
         EXTENSIBLE
         
         
         SELECT
         BASED_ON
         extended_value_with_unit
         WITH 
         
            (textual_quantity_specification);
         END_TYPE; 
         
TYPE pudv_groupable_item =
         
         
         SELECT
         BASED_ON
         groupable_item
         WITH 
         
            (Assembly_component, 
    Assembly_component_relationship);
         END_TYPE; 
         
TYPE pudv_physical_unit =
         
         
         SELECT
         BASED_ON
         physical_unit
         WITH 
         
            (Part_design_view);
         END_TYPE; 
         
TYPE pudv_requirement_assignment_item =
         
         EXTENSIBLE
         
         GENERIC_ENTITY
         
         
         SELECT
         BASED_ON
         requirement_assignment_item
         WITH 
         
            (Assembly_item_number, 
    Assembly_component_relationship, 
    Component_material_relationship);
         END_TYPE; 
         
TYPE textual_quantity_specification =
         STRING;
         END_TYPE; 
         
ENTITY Assembly_alternate_product
           SUBTYPE OF (Alternate_product_relationship);
           basis_context : Part_design_view;
WHERE
           WR1: NOT EXISTS (SELF\Alternate_product_relationship.criteria);
         
         END_ENTITY;
ENTITY Assembly_item_number;
           assembly_usage : SET[1:?] OF Assembly_component_relationship;
           item_number : STRING;
DERIVE
           assembly : Product_view_definition := assembly_usage[1].relating_view;
           part : Product := assembly_usage[1].related_view\Definition_based_product_occurrence.derived_from\Product_view_definition.defined_version.of_product;
UNIQUE
           UR1: assembly, item_number;
WHERE
           WR1: SIZEOF(QUERY(au <* assembly_usage | NOT (au.relating_view\Definition_based_product_occurrence.derived_from\Product_view_definition.defined_version.of_product
            = Part))) = 0;
           WR2: SIZEOF(QUERY(au <* assembly_usage | NOT (au.relating_view = assembly))) = 0;
         
         END_ENTITY;
ENTITY Component_feature_to_physical_usage_view_assignment;
           defined_part_feature : Part_feature;
           assigned_design_object : Component_feature;
UNIQUE
           UR1: assigned_design_object;
           UR2: defined_part_feature;
         
         END_ENTITY;
ENTITY Component_material_relationship;
           associated_design : Part_design_view;
           component_1 : assembly_component_or_item_number;
           component_2 : 
         OPTIONAL 
         assembly_component_or_item_number;
           material : 
         OPTIONAL 
         assembly_component_or_item_number;
           role : bonding_or_coating;
           specification : 
         OPTIONAL 
         assembly_item_number_or_process_specification;
WHERE
           WR1: component_1 <> component_2;
           WR2: component_1 <> material;
           WR3: component_1 <> specification;
           WR4: component_2 <> material;
           WR5: component_2 <> specification;
           WR6: material <> specification;
           WR7: valid_assembly_context_for_bond(associated_design, component_1);
           WR8: valid_assembly_context_for_bond(associated_design, component_2);
           WR9: valid_assembly_context_for_bond(associated_design, material);
           WR10: valid_assembly_context_for_bond(associated_design, specification);
         
         END_ENTITY;
ENTITY Component_to_physical_usage_view_assignment
           SUBTYPE OF (View_definition_relationship);
           SELF\View_definition_relationship.relating_view RENAMED design_view_component : Assembly_component;
           SELF\View_definition_relationship.related_view RENAMED usage_view_component : Assembly_component;
WHERE
           WR1: design_view_component <> usage_view_component;
           WR2: NOT EXISTS(SELF\View_definition_relationship.relation_type);
         
         END_ENTITY;
ENTITY Connection_zone_in_design_view
           SUBTYPE OF (Connection_zone);
           SELF\Shape_element.associated_definition : Part_design_view;
WHERE
           WR1: NOT EXISTS(SELF\Shape_element.element_name);
         
         END_ENTITY;
ENTITY Next_assembly_usage_occurrence_relationship
           SUBTYPE OF (Next_assembly_usage);
UNIQUE
           UR1: SELF\Product_occurrence_definition_relationship.relating_view, SELF\Assembly_component_relationship.location_indicator;
         
         END_ENTITY;
ENTITY Part_design_view
           SUBTYPE OF (Part_view_definition);
           usage_view : 
         OPTIONAL 
         Part_usage_view;
WHERE
           WR1: SIZEOF(QUERY(nauo <* USEDIN(SELF, 'PRODUCT_VIEW_DEFINITION_RELATIONSHIP_ARM.VIEW_DEFINITION_RELATIONSHIP.RELATING_VIEW')
            |
            (('PHYSICAL_UNIT_DESIGN_VIEW_ARM.NEXT_ASSEMBLY_USAGE_OCCURRENCE_RELATIONSHIP' IN TYPEOF(nauo)) XOR
            ('ASSEMBLY_STRUCTURE_ARM.NEXT_ASSEMBLY_USAGE' IN TYPEOF(nauo)))                 
            )) = 0;
         
         END_ENTITY;
SUBTYPE_CONSTRAINT pudv_connection_zone_subtypes FOR Connection_zone;
           ONEOF (Connection_zone_in_usage_view,
         Connection_zone_in_design_view);
      
         END_SUBTYPE_CONSTRAINT;
SUBTYPE_CONSTRAINT pudv_part_view_definition_subtypes FOR Part_view_definition;
           ONEOF (Part_usage_view,
         Part_design_view);
      
         END_SUBTYPE_CONSTRAINT;
RULE unique_assembly_item_number FOR 
         (Assembly_item_number);
LOCAL
      acr : BAG OF Assembly_component_relationship := [];
    END_LOCAL;
    REPEAT i := 1 to SIZEOF(Assembly_item_number) by 1;
      acr  := acr + Assembly_item_number[i].assembly_usage;
    END_REPEAT;WHERE
           WR1: SIZEOF(acr) = SIZEOF(bag_to_set(acr));
         END_RULE;
         
FUNCTION valid_assembly_context_for_bond
 (input1 : Part_design_view; input2 : GENERIC_ENTITY) : BOOLEAN;
         RETURN(TRUE);
         END_FUNCTION;
         
         END_SCHEMA;  -- Physical_unit_design_view_arm
© ISO 2018 — All rights reserved