| Application module: Packaged part black box model | ISO/TS 10303-1710:2018-11(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N9862 - ISO/TS 10303-1710 Packaged part black box model - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N9453
*)
         
SCHEMA Packaged_part_black_box_model_arm;
         USE FROM
         Functional_assignment_to_part_arm;
            -- ISO/TS 10303-1674
         USE FROM
         Functional_usage_view_arm;
            -- ISO/TS 10303-1705
         USE FROM
         Package_arm;
            -- ISO/TS 10303-1707
         USE FROM
         Part_external_reference_arm;
            -- ISO/TS 10303-1711
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
TYPE package_or_package_external_reference =
         
         
         SELECT
            (Package, 
    Package_external_reference);
         END_TYPE; 
         
TYPE ppbbm_material_item_select =
         
         
         SELECT
         BASED_ON
         material_item_select
         WITH 
         
            (Packaged_part);
         END_TYPE; 
         
ENTITY Packaged_part
           SUBTYPE OF (Part_usage_view);
           used_package : SET[1:?] OF package_or_package_external_reference;
           implemented_function : 
         OPTIONAL 
         Functional_unit_usage_view;
DERIVE
           potting_compound : SET[0:1] OF Material_identification := bag_to_set(QUERY( temp <* USEDIN(SELF,
         		     'GENERIC_MATERIAL_ASPECTS_ARM.MATERIAL_IDENTIFICATION.ITEMS') | 
         		     (SIZEOF( QUERY( cla <* USEDIN(temp,'CLASSIFICATION_ASSIGNMENT_ARM.' + 
         		 	'CLASSIFICATION_ASSIGNMENT.' + 'ITEMS') | cla.role = 'potting compound')) = 1)));
           base_package : SET[1:?] OF Package := QUERY(up <* used_package | 
         		                                       (SIZEOF(['ALTERED_PACKAGE_ARM.ALTERED_PACKAGE',
         		                                          'PART_EXTERNAL_REFERENCE_ARM.PACKAGE_EXTERNAL_REFERENCE'] * TYPEOF(up)) = 0)
         		                                          );
INVERSE
           access_mechanisms : SET[0:?] OF Packaged_part_terminal FOR associated_definition;
WHERE
           WR1: NOT (EXISTS(implemented_function) XOR (SIZEOF(access_mechanisms) > 0));
           WR2: SIZEOF(base_package) = 1;
           WR3: single_package_product(base_package, used_package);
         
         END_ENTITY;
ENTITY Packaged_part_join_terminal
           SUBTYPE OF (Packaged_part_terminal);
DERIVE
           SELF\Part_terminal.interface_or_join_terminal : interface_or_join_terminal_enumeration := interface_or_join_terminal_enumeration.join_terminal;
         
         END_ENTITY;
ENTITY Packaged_part_terminal
           ABSTRACT SUPERTYPE
         
           SUBTYPE OF (Part_terminal);
           terminal_of_package : SET[1:?] OF Package_terminal;
           SELF\Part_feature.associated_definition : Packaged_part;
WHERE
           WR1: disjoint_package_terminals(terminal_of_package);
           WR2: NOT EXISTS(SELF\Part_feature.precedent_feature);
         
         END_ENTITY;
FUNCTION disjoint_package_terminals
 (input : SET[0:?] OF Package_terminal) : BOOLEAN;
         LOCAL
   pk : SET OF Package := []; -- get access to information base
  END_LOCAL;
  
  REPEAT i := 1 to HIINDEX( input);
  pk := pk + input[i].associated_definition;
  END_REPEAT;
  
    RETURN(SIZEOF(input) = SIZEOF(pk));
         END_FUNCTION;
         
FUNCTION single_package_product
 (input1 : SET[0:?] OF Package; input2 : SET[0:?] OF package_or_package_external_reference) : BOOLEAN;
         RETURN(TRUE);
         END_FUNCTION;
         
         END_SCHEMA;  -- Packaged_part_black_box_model_arm
© ISO 2018 — All rights reserved