Application module: Functional assignment to part | ISO/TS 10303-1674:2018-11(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N9855 - ISO/TS 10303-1674 Functional assignment to part - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N9491
*)
SCHEMA Functional_assignment_to_part_arm;
USE FROM
Functional_usage_view_arm;
-- ISO/TS 10303-1705
USE FROM
Physical_connectivity_layout_topology_requirement_arm;
-- ISO/TS 10303-1826
USE FROM
Physical_unit_usage_view_arm;
-- ISO/TS 10303-1732
TYPE fatp_groupable_item =
SELECT
BASED_ON
groupable_item
WITH
(Part_connected_terminals_definition);
END_TYPE;
TYPE fatp_part_connected_terminals_definition_domain_enumeration =
EXTENSIBLE
ENUMERATION
OF
(electrical,
thermal,
optical,
magnetic);
END_TYPE;
TYPE fatp_requirement_assignment_item =
SELECT
BASED_ON
requirement_assignment_item
WITH
(Part_connected_terminals_element,
Part_connected_terminals_definition);
END_TYPE;
TYPE fatp_termination_or_junction =
SELECT
(Part_terminal,
Part_connected_terminals_topological_junction);
END_TYPE;
TYPE interface_or_join_terminal_enumeration =
ENUMERATION
OF
(join_terminal,
interface_terminal);
END_TYPE;
ENTITY Functional_usage_view_to_part_terminal_assignment;
physical_usage_view_terminal : Part_terminal;
functional_usage_view_terminal : Scalar_terminal_definition;
UNIQUE
UR1: functional_usage_view_terminal, physical_usage_view_terminal;
END_ENTITY;
ENTITY Part_connected_terminals_definition;
name : STRING;
associated_definition : Part_view_definition;
connected_terminals : SET[2:?] OF Part_terminal;
INVERSE
domain : SET[0:1] OF Part_connected_terminals_definition_domain FOR associated_definition;
UNIQUE
UR1: name, associated_definition;
WHERE
WR1: SIZEOF(QUERY(ct <* connected_terminals | NOT (associated_definition = ct\Shape_element.associated_definition))) = 0;
END_ENTITY;
ENTITY Part_connected_terminals_definition_domain;
domain_type : fatp_part_connected_terminals_definition_domain_enumeration;
associated_definition : Part_connected_terminals_definition;
END_ENTITY;
ENTITY Part_connected_terminals_element;
name : STRING;
start_terminus : fatp_termination_or_junction;
end_terminus : fatp_termination_or_junction;
connectivity_context : Part_connected_terminals_structure_definition;
UNIQUE
UR1: name, connectivity_context;
WHERE
WR1: start_terminus <> end_terminus;
END_ENTITY;
ENTITY Part_connected_terminals_layout_topology_requirement_assignment
SUBTYPE OF (Requirement_assignment);
SELF\Requirement_assignment.assigned_requirement : Physical_connectivity_layout_topology_requirement;
SELF\Requirement_assignment.assigned_to : Part_connected_terminals_definition;
END_ENTITY;
ENTITY Part_connected_terminals_structure_definition
SUBTYPE OF (Part_connected_terminals_definition);
DERIVE
structural_terminal_nodes : SET[0:?] OF Part_terminal := fatp_get_pt(structural_element);
structural_junction_nodes : SET[0:?] OF Part_connected_terminals_topological_junction := fatp_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 Part_connected_terminals_element FOR connectivity_context;
WHERE
WR1: SIZEOF(QUERY(stn <* structural_terminal_nodes |
NOT(stn IN SELF\Part_connected_terminals_definition.connected_terminals)
)) = 0;
WR2: SIZEOF(structural_terminal_nodes) = SIZEOF(SELF\Part_connected_terminals_definition.connected_terminals);
END_ENTITY;
ENTITY Part_connected_terminals_topological_junction;
name : STRING;
scope : Part_connected_terminals_structure_definition;
UNIQUE
UR1: name, scope;
END_ENTITY;
ENTITY Part_terminal
SUBTYPE OF (Part_feature);
interface_or_join_terminal : interface_or_join_terminal_enumeration;
INVERSE
connection_requirement : SET[0:1] OF Part_connected_terminals_definition FOR connected_terminals;
functional_usage_view_terminal : SET[0:1] OF Functional_usage_view_to_part_terminal_assignment FOR physical_usage_view_terminal;
END_ENTITY;
FUNCTION fatp_get_pt
(input : SET[0:?] OF Part_connected_terminals_element) : SET[0:?] OF Part_terminal;
LOCAL pct : SET OF Part_terminal := []; i : INTEGER := 0; END_LOCAL; REPEAT i := 1 TO SIZEOF(input) BY 1; IF ('FUNCTIONAL_ASSIGNMENT_TO_PART_ARM.PART_TERMINAL' IN TYPEOF(input[i].start_terminus)) THEN pct := pct + input[i].start_terminus; END_IF; IF ('FUNCTIONAL_ASSIGNMENT_TO_PART_ARM.PART_TERMINAL' IN TYPEOF(input[i].end_terminus)) THEN pct := pct + input[i].end_terminus; END_IF; END_REPEAT; RETURN(pct);
END_FUNCTION;
FUNCTION fatp_get_tj
(input : SET[0:?] OF Part_connected_terminals_element) : SET[0:?] OF Part_connected_terminals_topological_junction;
LOCAL tj : SET OF Part_connected_terminals_topological_junction := []; i : INTEGER := 0; END_LOCAL; REPEAT i := 1 TO SIZEOF(input) BY 1; IF ('FUNCTIONAL_ASSIGNMENT_TO_PART_ARM.PART_CONNECTED_TERMINALS_TOPOLOGICAL_JUNCTION' IN TYPEOF(input[i].start_terminus)) THEN tj := tj + input[i].start_terminus; END_IF; IF ('FUNCTIONAL_ASSIGNMENT_TO_PART_ARM.PART_CONNECTED_TERMINALS_TOPOLOGICAL_JUNCTION' IN TYPEOF(input[i].end_terminus)) THEN tj := tj + input[i].end_terminus; END_IF; END_REPEAT; RETURN(tj);
END_FUNCTION;
END_SCHEMA; -- Functional_assignment_to_part_arm
© ISO 2018 — All rights reserved