| Application module: Part definition relationship | ISO/TS 10303-1055:2019(E)  © ISO  | 
         
         (*
ISO/TC 184/SC 4/WG 12 N10333 - ISO/TS 10303-1055 Part definition relationship - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N9872
*)
         
SCHEMA Part_definition_relationship_arm;
         USE FROM
         Part_view_definition_arm;
            -- ISO/TS 10303-1023
         USE FROM
         Product_view_definition_relationship_arm;
            -- ISO/TS 10303-1041
         USE FROM
         Value_with_unit_arm;
            -- ISO/TS 10303-1054
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
TYPE pdr_additional_application_domain_enumeration =
         
         ENUMERATION
         
         BASED_ON 
         additional_application_domain_enumeration
         WITH 
         
            
         (complete_design,
    partial_design,
    partial_design_interface);
         END_TYPE; 
         
ENTITY Definitional_part_view_usage
           SUBTYPE OF (View_definition_usage);
           SELF\View_definition_relationship.relating_view : Part_view_definition;
           SELF\View_definition_relationship.related_view : Part_view_definition;
WHERE
           WR1: acyclic_definitional_part_view_usage (SELF, [related_view], 
            'PART_DEFINITION_RELATIONSHIP_ARM.DEFINITIONAL_PART_VIEW_USAGE');
         
         END_ENTITY;
ENTITY Make_from_relationship
           SUBTYPE OF (View_definition_usage);
           SELF\View_definition_relationship.relating_view : Part_view_definition;
           SELF\View_definition_relationship.related_view : Part_view_definition;
           quantity : 
         OPTIONAL 
         Value_with_unit;
           priority : 
         OPTIONAL 
         INTEGER;
WHERE
           WR1: SELF\View_definition_relationship.relating_view :<>: 
            SELF\View_definition_relationship.related_view;
           WR2: NOT(EXISTS(quantity)) XOR 
            	((NOT ('NUMBER' IN TYPEOF(quantity.value_component))) XOR (quantity.value_component > 0));
         
         END_ENTITY;
SUBTYPE_CONSTRAINT pdr_view_definition_usage_subtypes FOR View_definition_usage;
           ONEOF (Definitional_part_view_usage,
         Make_from_relationship);
      
         END_SUBTYPE_CONSTRAINT;
FUNCTION acyclic_definitional_part_view_usage
 (relation : Definitional_part_view_usage; relatives : SET[1:?] OF Part_view_definition; specific_relation : STRING) : BOOLEAN;
         LOCAL
  x : SET OF Definitional_part_view_usage;
END_LOCAL;
  IF relation.relating_view IN relatives THEN
    RETURN (FALSE);
  END_IF;
  x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_view,
       'PART_DEFINITION_RELATIONSHIP_ARM.DEFINITIONAL_PART_VIEW_USAGE.RELATED_VIEW')) | specific_relation IN TYPEOF(pd));
  REPEAT i := 1 TO HIINDEX(x);
    IF NOT acyclic_definitional_part_view_usage(x[i], relatives +
      relation.relating_view, specific_relation) THEN
      RETURN  (FALSE);
    END_IF;
  END_REPEAT;
  RETURN (TRUE);
         END_FUNCTION;
         
         END_SCHEMA;  -- Part_definition_relationship_arm
© ISO 2019 — All rights reserved