| Application module: Physical connectivity definition | ISO/TS 10303-1755:2018-11(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N9519 - ISO/TS 10303-1755 Physical connectivity definition - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N8194
*)
         
SCHEMA Physical_connectivity_definition_arm;
         USE FROM
         Part_external_reference_arm;
            -- ISO/TS 10303-1711
         USE FROM
         Physical_component_feature_arm;
            -- ISO/TS 10303-1721
         USE FROM
         Physical_connectivity_layout_topology_requirement_arm;
            -- ISO/TS 10303-1826
         USE FROM
         Physical_unit_design_view_arm;
            -- ISO/TS 10303-1728
         USE FROM
         Requirement_decomposition_arm;
            -- ISO/TS 10303-1740
         REFERENCE FROM 
         Requirement_decomposition_arm   -- ISO/TS 10303-1740
  (get_rvd);
         
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
TYPE pcd_documented_element_select =
         
         
         SELECT
         BASED_ON
         documented_element_select
         WITH 
         
            (Physical_connectivity_element, 
    Physical_connectivity_definition);
         END_TYPE; 
         
TYPE pcd_groupable_item =
         
         
         SELECT
         BASED_ON
         groupable_item
         WITH 
         
            (Physical_connectivity_definition, 
    Group_relationship);
         END_TYPE; 
         
TYPE pcd_requirement_assignment_item =
         
         
         SELECT
         BASED_ON
         requirement_assignment_item
         WITH 
         
            (Physical_connectivity_element, 
    Physical_connectivity_definition, 
    Physical_connectivity_definition_relationship);
         END_TYPE; 
         
TYPE physical_connectivity_definition_domain_enumeration =
         
         EXTENSIBLE
         
         ENUMERATION
         
         OF
         
            
         (electrical,
    thermal,
    optical,
    magnetic);
         END_TYPE; 
         
TYPE termination_or_junction =
         
         EXTENSIBLE
         
         GENERIC_ENTITY
         
         
         SELECT
            (Component_terminal, 
    Topological_junction);
         END_TYPE; 
         
ENTITY Physical_connectivity_definition
           SUPERTYPE OF 
         (Physical_connectivity_structure_definition)
           SUBTYPE OF (Shape_element);
           associated_terminals : SET[2:?] OF Physical_component_terminal;
           SELF\Shape_element.associated_definition : Physical_unit_network_definition;
INVERSE
           domain : SET[0:1] OF Physical_connectivity_definition_domain FOR associated_definition;
UNIQUE
           UR1: SELF\Shape_element.element_name, associated_definition;
         
         END_ENTITY;
ENTITY Physical_connectivity_definition_domain;
           domain_type : physical_connectivity_definition_domain_enumeration;
           associated_definition : Physical_connectivity_definition;
         
         END_ENTITY;
ENTITY Physical_connectivity_definition_relationship;
           first_definition : Physical_connectivity_definition;
           second_definition : Physical_connectivity_definition;
           purpose : STRING;
INVERSE
           requirement : SET[1:1] OF Requirement_assignment FOR assigned_to;
         
         END_ENTITY;
ENTITY Physical_connectivity_element;
           name : STRING;
           start_terminus : termination_or_junction;
           end_terminus : termination_or_junction;
           connectivity_context : Physical_connectivity_structure_definition;
UNIQUE
           UR1: name, connectivity_context;
WHERE
           WR1: start_terminus <> end_terminus;
         
         END_ENTITY;
ENTITY Physical_connectivity_layout_topology_requirement_assignment
           SUBTYPE OF (Requirement_assignment);
           SELF\Requirement_assignment.assigned_requirement : Physical_connectivity_layout_topology_requirement;
           SELF\Requirement_assignment.assigned_to : Physical_connectivity_definition;
         
         END_ENTITY;
ENTITY Physical_connectivity_make_from_relationship;
           reusable_definition : Physical_connectivity_definition;
           resultant_definition : Physical_connectivity_definition;
         
         END_ENTITY;
ENTITY Physical_connectivity_structure_definition
           SUBTYPE OF (Physical_connectivity_definition);
DERIVE
           structural_terminal_nodes : SET[0:?] OF Physical_component_terminal := get_pct(structural_element);
           structural_junction_nodes : SET[0:?] OF Topological_junction := get_tj(structural_element);
           tree_structure : LOGICAL := ((SIZEOF(structural_terminal_nodes) + SIZEOF(structural_junction_nodes)) = (SIZEOF(structural_element) + 1));
INVERSE
           structural_element : SET[1:?] OF Physical_connectivity_element FOR connectivity_context;
WHERE
           WR1: SIZEOF(QUERY(stn <* structural_terminal_nodes |
            NOT(stn IN SELF\Physical_connectivity_definition.associated_terminals)
            )) = 0;
           WR2: SIZEOF(structural_terminal_nodes) = 
            SIZEOF(SELF\Physical_connectivity_definition.associated_terminals);
         
         END_ENTITY;
ENTITY Physical_unit_network_definition
           SUBTYPE OF (Part_design_view);
DERIVE
           terminals : SET[0:?] OF Component_terminal := get_terminals(bag_to_set(USEDIN(SELF,'PHYSICAL_CONNECTIVITY_DEFINITION_ARM.PHYSICAL_CONNECTIVITY_DEFINITION.ASSOCIATED_DEFINITION')));
           assembly : SET[0:?] OF Product_view_definition := pcd_get_assemblies(terminals);
WHERE
           WR1: NOT (SIZEOF(terminals) > 1) OR
            (SIZEOF(QUERY(t <* terminals | NOT(SIZEOF(USEDIN(t, 'PHYSICAL_CONNECTIVITY_DEFINITION_ARM.' + 
            'PHYSICAL_CONNECTIVITY_DEFINITION.ASSOCIATED_TERMINALS')) = 1))) = 0);
           WR2: SIZEOF(QUERY( ass <* assembly |
            (ass\Product_view_definition.defined_version = SELF\Product_view_definition.defined_version)
            )) > 0;
         
         END_ENTITY;
ENTITY Topological_junction;
           name : STRING;
           scope : Physical_connectivity_structure_definition;
UNIQUE
           UR1: name, scope;
         
         END_ENTITY;
FUNCTION get_pct
 (input : SET[0:?] OF Physical_connectivity_element) : SET[0:?] OF Physical_component_terminal;
         LOCAL
   pct : SET OF Physical_component_terminal := [];
    i : INTEGER := 0;
  END_LOCAL;
  REPEAT  i := 1 TO SIZEOF(input) BY 1;
   IF ('PHYSICAL_COMPONENT_FEATURE_ARM.PHYSICAL_COMPONENT_TERMINAL' IN TYPEOF(input[i].start_terminus)) THEN
   pct := pct + input[i].start_terminus;
   END_IF;
   IF ('PHYSICAL_COMPONENT_FEATURE_ARM.PHYSICAL_COMPONENT_TERMINAL' IN TYPEOF(input[i].end_terminus)) THEN
   pct := pct + input[i].end_terminus;
   END_IF;
  END_REPEAT;
  RETURN(pct);
         END_FUNCTION;
         
FUNCTION get_terminals
 (input : SET[0:?] OF Physical_connectivity_definition) : SET[0:?] OF Component_terminal;
         LOCAL
   ct : SET OF Component_terminal := [];
    i : INTEGER := 0;
  END_LOCAL;
  REPEAT  i := 1 TO SIZEOF(input) BY 1;
   ct := ct + input[i].associated_terminals;
  END_REPEAT;
  RETURN(ct);
         END_FUNCTION;
         
FUNCTION get_tj
 (input : SET[0:?] OF Physical_connectivity_element) : SET[0:?] OF Topological_junction;
         LOCAL
   tj : SET OF Topological_junction := [];
    i : INTEGER := 0;
  END_LOCAL;
  REPEAT  i := 1 TO SIZEOF(input) BY 1;
   IF ('PHYSICAL_CONNECTIVITY_DEFINITION_ARM.TOPOLOGICAL_JUNCTION' IN TYPEOF(input[i].start_terminus)) THEN
   tj := tj + input[i].start_terminus;
   END_IF;
   IF ('PHYSICAL_CONNECTIVITY_DEFINITION_ARM.TOPOLOGICAL_JUNCTION' IN TYPEOF(input[i].end_terminus)) THEN
   tj := tj + input[i].end_terminus;
   END_IF;
  END_REPEAT;
  RETURN(tj);
         END_FUNCTION;
         
FUNCTION pcd_get_assemblies
 (input : SET[0:?] OF Component_terminal) : SET[0:?] OF Product_view_definition;
         LOCAL
      ac : SET OF Assembly_component := [];
     pvd : SET OF Product_view_definition := [];
    END_LOCAL;
   REPEAT i := 1 TO HIINDEX(input) BY 1;
      ac := ac + input[i]\Component_feature.associated_definition;
   END_REPEAT;
   REPEAT i := 1 to HIINDEX(ac) BY 1;
     pvd  := pvd + ac[i]\Assembly_component.assemblies;
   END_REPEAT;
   RETURN(pvd);
         END_FUNCTION;
         
         END_SCHEMA;  -- Physical_connectivity_definition_arm
© ISO 2018 — All rights reserved