Application module: Kinematic topology | ISO/TS 10303-1799:2014-02(E) © ISO |
(*
ISO TC184/SC4/WG12 N7912 - ISO/TS 10303-1799 Kinematic topology - EXPRESS ARM
Supersedes
ISO TC184/SC4/WG12 N7349
*)
SCHEMA Kinematic_topology_arm;
USE FROM
Elemental_topology_arm;
-- ISO/TS 10303-1005
USE FROM
Foundation_representation_arm;
-- ISO/TS 10303-1006
USE FROM
Part_view_definition_arm;
-- ISO/TS 10303-1023
USE FROM
Property_assignment_arm;
-- ISO/TS 10303-1030
REFERENCE FROM
Foundation_representation_arm -- ISO/TS 10303-1006
(using_representations);
TYPE kinematic_topology_representation_select =
SELECT
(Kinematic_topology_structure,
Kinematic_topology_directed_structure,
Kinematic_topology_network_structure);
END_TYPE;
ENTITY Kinematic_joint
SUBTYPE OF (Edge);
SELF\Edge.edge_start : Kinematic_link;
SELF\Edge.edge_end : Kinematic_link;
UNIQUE
UR1: edge_start, edge_end;
WHERE
WR1: edge_start :<>: edge_end;
END_ENTITY;
ENTITY Kinematic_link
SUBTYPE OF (Vertex);
END_ENTITY;
ENTITY Kinematic_loop
SUBTYPE OF (Edge_loop);
SELF\Path.edge_list : LIST[1:?] OF
UNIQUE
Oriented_joint;
END_ENTITY;
ENTITY Kinematic_property_definition_representation
SUBTYPE OF (Property_definition_representation);
SELF\Property_definition_representation.definition : Product_definition_kinematics;
END_ENTITY;
ENTITY Kinematic_property_topology_representation
SUBTYPE OF (Kinematic_property_definition_representation);
SELF\Property_definition_representation.used_representation : kinematic_topology_representation_select;
base : Kinematic_link;
WHERE
WR1: SELF\property_definition_representation.used_representation IN using_representations(base);
END_ENTITY;
ENTITY Kinematic_topology_directed_structure
SUBTYPE OF (Representation);
SELF\Representation.items : SET[1:?] OF Oriented_joint;
parent : Kinematic_topology_structure;
WHERE
WR1: context_of_items :=: parent.context_of_items;
WR2: get_kinematic_joints_from_oriented_joints(items) <= parent.items;
END_ENTITY;
ENTITY Kinematic_topology_network_structure
SUBTYPE OF (Representation);
SELF\Representation.items : SET[1:?] OF Kinematic_loop;
parent : Kinematic_topology_structure;
WHERE
WR1: context_of_items :=: parent.context_of_items;
WR2: get_kinematic_joints_from_kinematic_loops(items) <= parent.items;
END_ENTITY;
ENTITY Kinematic_topology_structure
SUBTYPE OF (Representation);
SELF\Representation.items : SET[1:?] OF Kinematic_joint;
WHERE
WR1: SIZEOF (QUERY (item <* items | 'FOUNDATION_REPRESENTATION_ARM.ORIENTED_EDGE' in TYPEOF(item))) = 0;
END_ENTITY;
ENTITY Kinematic_topology_substructure
SUBTYPE OF (Kinematic_topology_structure);
parent : Kinematic_topology_structure;
WHERE
WR1: SELF\Representation.context_of_items :=: parent\Representation.context_of_items;
WR2: SELF\Representation.items <= parent\Representation.items;
END_ENTITY;
ENTITY Kinematic_topology_tree_structure
SUBTYPE OF (Kinematic_topology_directed_structure);
END_ENTITY;
ENTITY Oriented_joint
SUBTYPE OF (Oriented_edge);
SELF\Oriented_edge.edge_definition : Kinematic_joint;
END_ENTITY;
ENTITY Product_definition_kinematics
SUBTYPE OF (Assigned_property);
SELF\Assigned_property.described_element : Part_view_definition;
INVERSE
representation_relation : Kinematic_property_definition_representation FOR definition;
UNIQUE
UR1: described_element;
END_ENTITY;
SUBTYPE_CONSTRAINT kts_representation_subtypes FOR Representation;
ONEOF (Kinematic_topology_structure,
Kinematic_topology_directed_structure,
Kinematic_topology_network_structure);
END_SUBTYPE_CONSTRAINT;
FUNCTION get_kinematic_joints_from_kinematic_loops
(kls : SET[0:?] OF Kinematic_loop) : SET[0:?] OF Kinematic_joint;
LOCAL result : SET OF Oriented_joint := []; END_LOCAL; IF SIZEOF(kls) > 0 THEN REPEAT i := 1 TO HIINDEX(kls); result := result + kls[i].edge_list; END_REPEAT; END_IF; RETURN (get_kinematic_joints_from_oriented_joints(result));
END_FUNCTION;
FUNCTION get_kinematic_joints_from_oriented_joints
(ors : SET[0:?] OF Oriented_joint) : SET[0:?] OF Kinematic_joint;
LOCAL result : SET OF Kinematic_joint := []; END_LOCAL; IF SIZEOF(ors) > 0 THEN REPEAT i := 1 TO HIINDEX(ors); result := result + ors[i].edge_definition; END_REPEAT; END_IF; RETURN (result);
END_FUNCTION;
END_SCHEMA; -- Kinematic_topology_arm
© ISO 2014 — All rights reserved