Application module: Kinematic topology ISO/TS 10303-1799:2014-02(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 definition
   4.3 ARM entity definitions
   4.4 ARM subtype constraint definition
   4.5 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing

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

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