Application module: Functional assignment to part ISO/TS 10303-1674:2018-11(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definitions
   4.3 ARM entity definitions
   4.4 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definitions
     5.2.2 MIM entity definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

(*
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