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