Application module: Elemental topology | ISO/TS 10303-1005:2021(E) © ISO |
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;
(*
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
EXPRESS specification:
*)
ENTITY Face_outer_bound
SUBTYPE OF (Face_bound);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY Loop
SUPERTYPE OF (ONEOF (Vertex_loop,
Edge_loop))
SUBTYPE OF (Detailed_topological_model_element);
END_ENTITY;
(*
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.
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.
EXPRESS specification:
*)
ENTITY Subedge
SUBTYPE OF (Edge);
parent_edge : Edge;
END_ENTITY;
(*
Attribute definitions:
parent_edge: the Edge, or Subedge, which contains the Subedge.
EXPRESS specification:
*)
ENTITY Subpath
SUBTYPE OF (Path);
parent_path : Path;
END_ENTITY;
(*
Attribute definitions:
parent_path: the Path, which contains the Subpath.
EXPRESS specification:
*)
ENTITY Vertex
SUBTYPE OF (Detailed_topological_model_element);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY Vertex_loop
SUBTYPE OF (Loop);
loop_vertex : Vertex;
END_ENTITY;
(*
Attribute definitions:
loop_vertex: the Vertex which defines the entire Loop.
This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.
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.
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