Application module: Elemental topology ISO/TS 10303-1005:2021(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 ARM
   4.2 ARM entity definitions
   4.3 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
F Change history
Bibliography
Index

4 Information requirements

This clause specifies the information requirements for the Elemental topology application module. The information requirements are specified as the Application Reference Model (ARM) of this application module.

NOTE 1  A graphical representation of the information requirements is given in Annex C.

NOTE 2  The mapping specification is specified in 5.1. It shows how the information requirements are met by using common resources and constructs defined or imported in the MIM schema of this application module.

This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following begins the Elemental_topology_arm schema and identifies the necessary external references.

EXPRESS specification:

*)
SCHEMA Elemental_topology_arm;
(*

4.1 Required AM ARM

The following EXPRESS interface statement specifies the elements imported from the ARM of another application module.

EXPRESS specification:

*)
USE FROM Foundation_representation_arm;    --  ISO/TS 10303-1006
(*

NOTE 1   The schemas referenced above are specified in the following part of ISO 10303:

Foundation_representation_arm ISO/TS 10303-1006

NOTE 2   See Annex C, Figures C.1and C.2 for a graphical representation of this schema.

4.2 ARM entity definitions

This subclause specifies the ARM entities for this module. Each ARM application entity is an atomic element that embodies a unique application concept and contains attributes specifying the data elements of the entity. The ARM entities and definitions are specified below.

4.2.1 Connected_edge_set   EXPRESS-GMapping table

A Connected_edge_set is a type of Detailed_topological_model_element that is a set of edges arcwise connected via their common vertices.

EXPRESS specification:

*)
ENTITY Connected_edge_set
  SUBTYPE OF (Detailed_topological_model_element);
  connected_edges : SET[1:?] OF Edge;
END_ENTITY;
(*

Attribute definitions:

connected_edges: a set of Edges arcwise connected at common Vertexs. The domains of the connected_edges shall not intersect.

4.2.2 Connected_edge_sub_set   EXPRESS-GMapping table

A Connected_edge_sub_set is a type of Connected_edge_set that represents a subset of a parent Connected_edge_set.

EXPRESS specification:

*)
ENTITY Connected_edge_sub_set
  SUBTYPE OF (Connected_edge_set);
  parent_edge_set : Connected_edge_set;
END_ENTITY;
(*

Attribute definitions:

parent_edge_set: specifies the parent Connected_edge_set.

4.2.3 Connected_face_set   EXPRESS-GMapping table

A Connected_face_set is a type of Detailed_topological_model_element that is a set of faces such that the domain of the faces together with their bounding edges and vertices is connected.

EXPRESS specification:

*)
ENTITY Connected_face_set
  SUBTYPE OF (Detailed_topological_model_element);
  connected_faces : SET[1:?] OF Face;
END_ENTITY;
(*

Attribute definitions:

connected_faces: a set of Faces arcwise connected along common Edges or Vertexs. The domains of the connected_faces shall not overlap.

4.2.4 Connected_face_sub_set   EXPRESS-GMapping table

A Connected_face_sub_set is a type of Connected_face_set.

EXPRESS specification:

*)
ENTITY Connected_face_sub_set
  SUBTYPE OF (Connected_face_set);
  parent_face_set : Connected_face_set;
END_ENTITY;
(*

Attribute definitions:

parent_face_set: specifies a role of the Connected_face_set for the Connected_face_sub_set.

4.2.5 Detailed_topological_model_element   EXPRESS-GMapping table

A Detailed_topological_model_element is a type of Representation_item that represents a single element of the topology, or connectivity, of the entities that make up the representation of an object. A Detailed_topological_model_element is either a Connected_edge_set or a Connected_face_set, or an Edge, or a Face, or a Face_bound, or a Vertex, or a Loop, or a Loop and a Path, or a Path.

EXPRESS specification:

*)
ENTITY Detailed_topological_model_element
  ABSTRACT SUPERTYPE OF (ONEOF (Connected_edge_set,
                                Connected_face_set,
                                Edge,
                                Face,
                                Face_bound,
                                Vertex, (
                                Loop
                        ANDOR Path)))
  SUBTYPE OF (Representation_item);
  permanent_id : OPTIONAL identifier;
  permanent_aggregate_id : OPTIONAL identifier;
END_ENTITY;
(*

Attribute definitions:

permanent_id: an identifier that is invariant over the life cycle of the product model. The permanent_id is optional and need not be provided.

NOTE    An application protocol may wish to enforce uniqueness constraints on the value of this attribute to ensure there is no sharing of the identifier among Detailed_topological_model_element in the context of a product model version.

permanent_aggregate_id: an identifier that is invariant over the life cycle of the product model. This attribute is designed to support the use case where more than one member of Detailed_topological_model_element may share the same identifier within the context of a specific product model version. The permanent_aggregate_id is optional and need not be provided.

4.2.6 Edge   EXPRESS-GMapping table

An Edge is a type of Detailed_topological_model_element that is an oriented bounded one dimensional manifold connecting two vertices. The topological sense of the edge is from the edge_start to the edge_end.

EXPRESS specification:

*)
ENTITY Edge
  SUBTYPE OF (Detailed_topological_model_element);
  edge_start : Vertex;
  edge_end : Vertex;
END_ENTITY;
(*

Attribute definitions:

edge_start: the Vertex defining the start point of the edge.

edge_end: the Vertex defining the end point of the edge; this may coincide with the start point if the edge forms a closed loop.

4.2.7 Edge_loop   EXPRESS-GMapping table

An Edge_loop is a type of Loop with a non-zero extent. It is also a type of Path with the property that the start and end vertices coincide.

EXPRESS specification:

*)
ENTITY Edge_loop
  SUBTYPE OF (Loop, Path);
DERIVE
  ne : INTEGER := SIZEOF(SELF\Path.edge_list);
WHERE
  WR1: (SELF\Path.edge_list[1].edge_start) :=: (SELF\Path.edge_list[ne].edge_end);
END_ENTITY;
(*

Attribute definitions:

ne: the number of Edges defining the path of the loop.

Formal propositions:

WR1: The edge_start of the first edge shall be the same as the edge_end of the last edge. This ensures that the path is closed to form a loop.

4.2.8 Face   EXPRESS-GMapping table

A Face is a type of Detailed_topological_model_element that is a topological entity of dimensionality 2 corresponding to the intuitive notion of a piece of surface bounded by loops. Its domain, if present, is an oriented, connected, finite 2-manifold. A face domain shall not have handles, but it may have holes, each hole bounded by a loop.

NOTE    The full semantics of this entity is defined in the corresponding MIM object from ISO 10303-42; this has additional constraints in the form of informal propositions.

EXPRESS specification:

*)
ENTITY Face
  SUBTYPE OF (Detailed_topological_model_element);
  bounds : SET[1:?] OF Face_bound;
WHERE
  WR1: SIZEOF(QUERY(temp <* bounds | 'ELEMENTAL_TOPOLOGY_ARM.FACE_OUTER_BOUND' IN TYPEOF(temp))) <= 1;
END_ENTITY;
(*

Attribute definitions:

bounds: the set of Face_bounds which define all the boundaries of the face.

Formal propositions:

WR1: At most, one of the bounds shall be of type Face_outer_bound.

4.2.9 Face_bound   EXPRESS-GMapping table

A Face_bound is a type of Detailed_topological_model_element that is the usage of a loop for bounding a Face.

EXPRESS specification:

*)
ENTITY Face_bound
  SUBTYPE OF (Detailed_topological_model_element);
  bound : Loop;
  orientation : BOOLEAN;
END_ENTITY;
(*

Attribute definitions:

bound: the Loop which will be used as a face boundary.

orientation: an indicator of whether (TRUE), or not (FALSE) the Loop has the same sense when used to bound the face as when first defined. If orientation is FALSE, the senses of all its component oriented edges are implicitly reversed when used in the Face.

4.2.10 Face_outer_bound   EXPRESS-GMapping table

A Face_outer_bound is a type of Face_bound which carries the additional semantics of defining an outer boundary on the face. A Face_outer_bound shall separate the interior of the face from the exterior and shall enclose the interior domain of the face. No more than one boundary of a face shall be of this type.

EXPRESS specification:

*)
ENTITY Face_outer_bound
  SUBTYPE OF (Face_bound);
END_ENTITY;
(*

4.2.11 Loop   EXPRESS-GMapping table

A Loop is a type of Detailed_topological_model_element constructed from a single Vertex, or by stringing together connected edges beginning and ending at the same Vertex. A Loop has dimensionality 0 or 1. A Loop may be either a Vertex_loop or an Edge_loop.

EXPRESS specification:

*)
ENTITY Loop
  SUPERTYPE OF (ONEOF (Vertex_loop,
                       Edge_loop))
  SUBTYPE OF (Detailed_topological_model_element);
END_ENTITY;
(*

4.2.12 Oriented_edge   EXPRESS-GMapping table

An Oriented_edge is a type of Edge constructed from another edge which contains a BOOLEAN orientation flag to indicate whether or not the orientation of the constructed edge agrees with the orientation of the original edge. Except for possible re-orientation, the Oriented_edge is equivalent to the original edge.

EXPRESS specification:

*)
ENTITY Oriented_edge
  SUBTYPE OF (Edge);
  edge_definition : Edge;
  orientation : BOOLEAN;
DERIVE
  SELF\Edge.edge_start : Vertex := boolean_choice (SELF.orientation, SELF.edge_definition.edge_start, SELF.edge_definition.edge_end);
  SELF\Edge.edge_end : Vertex := boolean_choice (SELF.orientation, SELF.edge_definition.edge_end, SELF.edge_definition.edge_start);
WHERE
  WR1: NOT ('ELEMENTAL_TOPOLOGY_ARM.ORIENTED_EDGE' IN TYPEOF (SELF.edge_definition));
END_ENTITY;
(*

Attribute definitions:

edge_definition: the Edge defining the domain of the Oriented_edge

orientation: a BOOLEAN flag. If TRUE, the topological orientation as used coincides with the orientation, from start vertex to end vertex, of the edge_definition, if FALSE the vertices are reversed in order.

edge_start: the start vertex of the Oriented_edge. This is derived from the vertices of the edge_definition after taking account of the orientation.

edge_end: the end vertex of the Oriented_edge. This is derived from the vertices of the edge_definition after taking account of the orientation.

Formal propositions:

WR1: The edge_definition shall not be of type Oriented_edge.

4.2.13 Path   EXPRESS-GMapping table

A Path is a type of Detailed_topological_model_element consisting of an ordered collection of Oriented_edges, such that the start vertex of each edge coincides with the end vertex of its predecessor. The path is ordered from the edge_start of its first Oriented_edge to the edge_end of its last edge. The BOOLEAN value orientation in the Oriented_edge indicates whether the Edge direction agrees with the direction of the Path (TRUE) or is in the opposite direction (FALSE).

An individual edge can only be referenced once by an individual path. An edge can be referenced by multiple paths. An edge can exist independently of a path.

EXPRESS specification:

*)
ENTITY Path
  SUBTYPE OF (Detailed_topological_model_element);
  edge_list : LIST[1:?] OF UNIQUE Oriented_edge;
WHERE
  WR1: path_aligned(SELF);
END_ENTITY;
(*

Attribute definitions:

edge_list: the list of unique Oriented_edge entities which are concatenated together to form this Path.

Formal propositions:

WR1: The end vertex of each Oriented_edge shall be the same as the start vertex of its successor. This is checked by the function path_aligned.

4.2.14 Subedge   EXPRESS-GMapping table

A Subedge is a type of Edge, whose domain is a connected portion of the domain of an existing Edge. The topological constraints on a Subedge are the same as those on an Edge.

EXPRESS specification:

*)
ENTITY Subedge
  SUBTYPE OF (Edge);
  parent_edge : Edge;
END_ENTITY;
(*

Attribute definitions:

parent_edge: the Edge, or Subedge, which contains the Subedge.

4.2.15 Subpath   EXPRESS-GMapping table

A Subpath is a type of Path, whose domain is a connected portion of the domain of an existing Path. An instance of Subpath may contain a combination of Edges and Subedges such that the resulting domain of Edges and Subedges, together with their bounding vertices, is an arcwise connected, non-intersecting (except at common vertices), and 1-dimensional subdomain of the domain defined by the parent_path.

EXPRESS specification:

*)
ENTITY Subpath
  SUBTYPE OF (Path);
  parent_path : Path;
END_ENTITY;
(*

Attribute definitions:

parent_path: the Path, which contains the Subpath.

4.2.16 Vertex   EXPRESS-GMapping table

A Vertex is a type of Detailed_topological_model_element is a point of interest in topological space, it has dimensionality 0.

EXPRESS specification:

*)
ENTITY Vertex
  SUBTYPE OF (Detailed_topological_model_element);
END_ENTITY;
(*

4.2.17 Vertex_loop   EXPRESS-GMapping table

A Vertex_loop is a type of Loop of zero extent consisting of a single vertex.

EXPRESS specification:

*)
ENTITY Vertex_loop
  SUBTYPE OF (Loop);
  loop_vertex : Vertex;
END_ENTITY;
(*

Attribute definitions:

loop_vertex: the Vertex which defines the entire Loop.

4.3 ARM function definitions

This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.

4.3.1 boolean_choice

The boolean_choice function returns one of 2 possible values from the input as determined by the value of a BOOLEAN input argument.

EXPRESS specification:

*)
FUNCTION boolean_choice (b : BOOLEAN; choice1 : GENERIC : item; choice2 : GENERIC : item) : GENERIC : item;
IF b THEN
       RETURN (choice1);
     ELSE
       RETURN (choice2);
     END_IF;
END_FUNCTION;
(*

Argument definitions:

b: (input) the BOOLEAN value used to select the element choice1 (TRUE) or choice2 (FALSE).

choice1: the first item which may be selected and returned.

choice2: the second item which may be selected and returned.

4.3.2 path_aligned

The path_aligned function returns TRUE if, for the edges of the input Path, the end vertex of each edge is the same as the start vertex of its successor.

EXPRESS specification:

*)
FUNCTION path_aligned (a_path : Path) : LOGICAL;
LOCAL
     n : INTEGER;
     p : LOGICAL := TRUE;
   END_LOCAL;
     
     n := SIZEOF (a_path.edge_list);
     REPEAT i := 2 TO n;
       p := p AND (a_path.edge_list[i-1].edge_end :=:
                   a_path.edge_list[i].edge_start);
     END_REPEAT;
     
     RETURN (p);
END_FUNCTION;
(*

Argument definitions:

a_path: (input) the Path for which it is required to verify that its component edges are arranged consecutively head-to-tail.



*)
END_SCHEMA;  -- Elemental_topology_arm
(*


© ISO 2021 — All rights reserved