Application module: Physical node requirement to implementing component allocation | ISO/TS 10303-1723:2018-11(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N9459 - ISO/TS 10303-1723 Physical node requirement to implementing component allocation - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N8197
*)
SCHEMA Physical_node_requirement_to_implementing_component_allocation_arm;
USE FROM
Assembly_module_with_packaged_connector_component_arm;
-- ISO/TS 10303-1645
USE FROM
Assembly_technology_arm;
-- ISO/TS 10303-1649
USE FROM
Physical_connectivity_definition_arm;
-- ISO/TS 10303-1755
ENTITY Assembly_to_part_connectivity_structure_allocation;
name : STRING;
assembly_element : Physical_connectivity_element;
part_element : Part_connected_terminals_element;
assembly_context : Physical_connectivity_definition;
UNIQUE
UR1: name, assembly_context;
END_ENTITY;
ENTITY Physical_node_branch_requirement_to_implementing_component_allocation;
name : STRING;
physical_node_branch_requirement : Physical_connectivity_element;
implementation_component : Assembly_component;
part_element : Part_connected_terminals_element;
implementation_interface_joint_set :
OPTIONAL
SET[1:?] OF Interface_mounted_join;
implementation_joint_set :
OPTIONAL
SET[1:?] OF Assembly_joint;
UNIQUE
UR1: name, implementation_component;
END_ENTITY;
ENTITY Physical_node_requirement_to_implementing_component_allocation;
physical_node_requirement : Physical_connectivity_definition;
implementation_component : Assembly_component;
implementation_interface_joint_set :
OPTIONAL
SET[1:?] OF Interface_mounted_join;
implementation_joint_set :
OPTIONAL
SET[1:?] OF Assembly_joint;
DERIVE
implementation_connection_definition_1 : SET[0:1] OF Part_connected_terminals_definition := get_pctd(implementation_component,
implementation_joint_set);
implementation_connection_definition_2 : SET[0:1] OF Packaged_connector_terminal_relationship := get_pctr(implementation_component,
implementation_interface_joint_set);
WHERE
WR1: EXISTS(implementation_interface_joint_set) XOR EXISTS(implementation_joint_set);
WR2: (SIZEOF(implementation_connection_definition_1) + SIZEOF(implementation_connection_definition_2) = 1) OR
(('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.INTERFACE_COMPONENT' IN TYPEOF(implementation_component))
AND
('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.PHYSICAL_COMPONENT_INTERFACE_TERMINAL' IN TYPEOF(get_cit(implementation_component,implementation_joint_set))))
OR
('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.ROUTED_INTERCONNECT_COMPONENT' IN TYPEOF(implementation_component));
WR3: SIZEOF(QUERY(pct <* physical_node_requirement.associated_terminals | pct\Component_feature.associated_definition = implementation_component))
= 0;
END_ENTITY;
FUNCTION get_cit
(ac : Assembly_component; ajb : SET[0:?] OF Assembly_joint) : Physical_component_interface_terminal;
LOCAL cf : LIST[1:2] OF component_feature := [ajb[1].assembly_feature_1, ajb[1].assembly_feature_2]; cit : Physical_component_interface_terminal; END_LOCAL; REPEAT i := 1 TO 2 BY 1; IF ac :=: cf[i].associated_definition THEN IF ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.INTERFACE_COMPONENT' IN TYPEOF(cf[i].associated_definition)) THEN RETURN(cf[i]); ELSE RETURN(?); END_IF; ELSE RETURN(?); END_IF; END_REPEAT; RETURN(?);
END_FUNCTION;
FUNCTION get_pctd
(ac : Assembly_component; ajb : SET[0:?] OF Assembly_joint) : SET[0:?] OF Part_connected_terminals_definition;
LOCAL cf : LIST[1:2] OF Component_feature := [ajb[1].assembly_feature_1, ajb[1].assembly_feature_2]; pctd : SET OF Part_connected_terminals_definition := []; END_LOCAL; REPEAT i := 1 TO 2 BY 1; IF ac :=: cf[i].associated_definition THEN IF ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.PART_TERMINAL' IN TYPEOF(cf[i]\Component_feature.definition)) THEN pctd := cf[i]\Component_feature.definition\Part_terminal.connection_requirement; RETURN(pctd); ELSE RETURN(pctd); END_IF; ELSE RETURN(pctd); END_IF; END_REPEAT; RETURN(?);
END_FUNCTION;
FUNCTION get_pctr
(ac : Assembly_component; imjb : SET[0:?] OF Interface_mounted_join) : SET[0:?] OF Packaged_connector_terminal_relationship;
LOCAL cf : Component_feature; pctr : SET OF packaged_connector_terminal_relationship := []; END_LOCAL; cf := imjb[1]\Interface_mounted_join.connection_to_interconnect_module_component; IF ac :=: cf\Component_feature.associated_definition THEN IF ('PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION_ARM.PACKAGED_PART_INTERFACE_TERMINAL' IN TYPEOF(cf\Component_feature.definition)) THEN pctr := cf\Component_feature.definition\Packaged_part_interface_terminal.external_connector_function; RETURN(pctr); ELSE RETURN(pctr); END_IF; ELSE RETURN(pctr); END_IF;
END_FUNCTION;
END_SCHEMA; -- Physical_node_requirement_to_implementing_component_allocation_arm
© ISO 2018 — All rights reserved