Application module: Tessellated geometry ISO/TS 10303-1819: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 ARMs
   4.2 ARM type definitions
   4.3 ARM entity 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

(*
ISO/TC 184/SC 4/WG 12 N10890 - ISO/TS 10303-1819 Tessellated geometry - EXPRESS ARM
Supersedes ISO/TC 184/SC 4/WG 12 N9836
*)



SCHEMA Tessellated_geometry_arm;

USE FROM Advanced_boundary_representation_arm;    -- ISO/TS 10303-1514

USE FROM Basic_curve_arm;    -- ISO/TS 10303-1651

USE FROM Basic_geometry_arm;    -- ISO/TS 10303-1652

USE FROM Basic_geometric_topology_arm;    -- ISO/TS 10303-1323

USE FROM Draughting_element_arm;    -- ISO/TS 10303-1310

USE FROM Elemental_geometric_shape_arm;    -- ISO/TS 10303-1004

USE FROM Elemental_topology_arm;    -- ISO/TS 10303-1005

REFERENCE FROM Foundation_representation_arm   -- ISO/TS 10303-1006
  (using_representations);


TYPE angular_deviation = plane_angle_measure;
END_TYPE;

TYPE chordal_deviation = positive_length_measure;
END_TYPE;

TYPE edge_or_curve = SELECT
   (Edge_curve,
    Curve);
END_TYPE;

TYPE face_or_surface = SELECT
   (Face_surface,
    Surface);
END_TYPE;

TYPE length_to_height_ratio = ratio_measure;
END_TYPE;

TYPE maximum_edge_length = positive_length_measure;
END_TYPE;

TYPE path_or_composite_curve = SELECT
   (Path,
    Composite_curve);
END_TYPE;

TYPE tessellated_edge_or_vertex = SELECT
   (Tessellated_edge,
    Tessellated_vertex);
END_TYPE;

TYPE tessellated_facet_long_short_edge_ratio = ratio_measure;
END_TYPE;

TYPE tessellation_accuracy_parameter_item = EXTENSIBLE SELECT
   (angular_deviation,
    tessellated_facet_long_short_edge_ratio,
    chordal_deviation,
    length_to_height_ratio,
    maximum_edge_length);
END_TYPE;

TYPE tg_draughting_callout_content_select = SELECT BASED_ON draughting_callout_content_select WITH
   (Tessellated_annotation);
END_TYPE;

ENTITY Complex_triangulated_face
  SUBTYPE OF (Tessellated_face);
  pnindex : LIST[0:?] OF INTEGER;
  triangle_strips : LIST[0:?] OF LIST[3:?] OF INTEGER;
  triangle_fans : LIST[0:?] OF LIST[3:?] OF INTEGER;
WHERE
  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\Tessellated_face.pnmax));
  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\Tessellated_face.pnmax <> coordinates.npoints));
  WR3: NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0));
END_ENTITY;

ENTITY Complex_triangulated_surface_set
  SUBTYPE OF (Tessellated_surface_set);
  pnindex : LIST[0:?] OF INTEGER;
  triangle_strips : LIST[0:?] OF LIST[3:?] OF INTEGER;
  triangle_fans : LIST[0:?] OF LIST[3:?] OF INTEGER;
WHERE
  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\Tessellated_surface_set.pnmax));
  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\Tessellated_surface_set.pnmax <> coordinates.npoints));
  WR3: NOT ((SIZEOF(triangle_strips) = 0) AND (SIZEOF(triangle_fans) = 0));
END_ENTITY;

ENTITY Coordinates_list
  SUBTYPE OF (Tessellated_item);
  npoints : INTEGER;
  position_coords : LIST[1:?] OF LIST[3:3] OF REAL;
WHERE
  WR1: npoints = SIZEOF(position_coords);
  WR2: SIZEOF(['TESSELLATED_GEOMETRY_ARM.REPOSITIONED_TESSELLATED_ITEM'] * TYPEOF(SELF)) = 0;
END_ENTITY;

ENTITY Cubic_bezier_tessellated_edge
  SUBTYPE OF (Tessellated_edge);
  SELF\Tessellated_edge.line_strip : LIST[4:?] OF INTEGER;
END_ENTITY;

ENTITY Cubic_bezier_triangulated_face
  SUBTYPE OF (Tessellated_face);
  ctriangles : LIST[1:?] OF LIST[10:10] OF INTEGER;
WHERE
  WR1: SIZEOF(SELF\Tessellated_face.normals) = 0;
END_ENTITY;

ENTITY Cubic_tessellated_connecting_edge
  SUBTYPE OF (Cubic_bezier_tessellated_edge);
  smooth : LOGICAL;
  face1 : Cubic_bezier_triangulated_face;
  face2 : Cubic_bezier_triangulated_face;
END_ENTITY;

ENTITY Repositioned_tessellated_item
  SUBTYPE OF (Tessellated_item);
  location : Axis_placement_3d;
WHERE
  WR1: NOT (SIZEOF(['TESSELLATED_GEOMETRY_ARM.TESSELLATED_CURVE_SET', 'TESSELLATED_GEOMETRY_ARM.TESSELLATED_GEOMETRIC_SET', 'TESSELLATED_GEOMETRY_ARM.TESSELLATED_POINT_SET', 'TESSELLATED_GEOMETRY_ARM.TESSELLATED_SURFACE_SET', 'TESSELLATED_GEOMETRY_ARM.TESSELLATED_SHELL', 'TESSELLATED_GEOMETRY_ARM.TESSELLATED_SOLID', 'TESSELLATED_GEOMETRY_ARM.TESSELLATED_WIRE'] * TYPEOF(SELF)) = 0);
END_ENTITY;

ENTITY Tessellated_annotation
  SUBTYPE OF (Annotation_element);
  SELF\Styled_element.element : Tessellated_item;
END_ENTITY;

ENTITY Tessellated_connecting_edge
  SUBTYPE OF (Tessellated_edge);
  smooth : LOGICAL;
  face1 : Tessellated_face;
  face2 : Tessellated_face;
  line_strip_face1 : LIST[2:?] OF INTEGER;
  line_strip_face2 : LIST[2:?] OF INTEGER;
WHERE
  WR1: SIZEOF(line_strip_face1) = SIZEOF(line_strip_face2);
  WR2: SIZEOF(line_strip_face1) = SIZEOF(SELF\Tessellated_edge.line_strip);
END_ENTITY;

ENTITY Tessellated_curve_set
  SUBTYPE OF (Tessellated_item);
  coordinates : Coordinates_list;
  line_strips : LIST[1:?] OF LIST[2:?] OF INTEGER;
END_ENTITY;

ENTITY Tessellated_edge
  SUPERTYPE OF (ONEOF (Tessellated_connecting_edge,
                       Cubic_bezier_tessellated_edge))
  SUBTYPE OF (Tessellated_structured_item);
  coordinates : Coordinates_list;
  geometric_link : OPTIONAL edge_or_curve;
  line_strip : LIST[2:?] OF INTEGER;
END_ENTITY;

ENTITY Tessellated_face
  ABSTRACT SUPERTYPE OF (ONEOF (Triangulated_face,
                                Complex_triangulated_face,
                                Cubic_bezier_triangulated_face))
  SUBTYPE OF (Tessellated_structured_item);
  coordinates : Coordinates_list;
  pnmax : INTEGER;
  normals : LIST[0:?] OF LIST[3:3] OF REAL;
  geometric_link : OPTIONAL face_or_surface;
WHERE
  WR1: ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1) OR (SIZEOF(normals) = pnmax));
END_ENTITY;

ENTITY Tessellated_geometric_set
  SUBTYPE OF (Tessellated_item);
  children : SET[1:?] OF Tessellated_item;
END_ENTITY;

ENTITY Tessellated_item
  ABSTRACT SUPERTYPE OF (ONEOF (Coordinates_list,
                                Tessellated_solid,
                                Tessellated_shell,
                                Tessellated_wire,
                                Tessellated_geometric_set,
                                Tessellated_curve_set,
                                Tessellated_point_set,
                                Tessellated_surface_set,
                                Tessellated_structured_item))
  SUBTYPE OF (Detailed_geometric_model_element);
WHERE
  WR1: SIZEOF(QUERY(using_rep <* using_representations(SELF) | NOT ('TESSELLATED_GEOMETRY_ARM.TESSELLATED_SHAPE_REPRESENTATION' IN TYPEOF(using_rep)))) = 0;
END_ENTITY;

ENTITY Tessellated_point_set
  SUBTYPE OF (Tessellated_item);
  coordinates : Coordinates_list;
  point_list : LIST[1:?] OF INTEGER;
END_ENTITY;

ENTITY Tessellated_shape_representation
  SUBTYPE OF (Geometric_model);
WHERE
  WR1: 'ELEMENTAL_GEOMETRIC_SHAPE_ARM.GEOMETRIC_COORDINATE_SPACE' IN TYPEOF(SELF\Representation.context_of_items);
  WR2: NOT (SIZEOF(QUERY(it <* SELF.items | 'TESSELLATED_GEOMETRY_ARM.TESSELLATED_ITEM' IN TYPEOF(it))) = 0);
END_ENTITY;

ENTITY Tessellated_shape_representation_with_accuracy_parameters
  SUBTYPE OF (Tessellated_shape_representation);
  tessellation_accuracy_parameters : SET[1:?] OF tessellation_accuracy_parameter_item;
END_ENTITY;

ENTITY Tessellated_shell
  SUBTYPE OF (Tessellated_item);
  items : SET[1:?] OF Tessellated_structured_item;
  topological_link : OPTIONAL Connected_face_set;
END_ENTITY;

ENTITY Tessellated_solid
  SUBTYPE OF (Tessellated_item);
  items : SET[1:?] OF Tessellated_structured_item;
  geometric_link : OPTIONAL Manifold_solid_brep;
END_ENTITY;

ENTITY Tessellated_structured_item
  SUPERTYPE OF (ONEOF (Tessellated_face,
                       Tessellated_edge,
                       Tessellated_vertex))
  SUBTYPE OF (Tessellated_item);
END_ENTITY;

ENTITY Tessellated_surface_set
  ABSTRACT SUPERTYPE OF (ONEOF (Triangulated_surface_set,
                                Complex_triangulated_surface_set))
  SUBTYPE OF (Tessellated_item);
  coordinates : Coordinates_list;
  pnmax : INTEGER;
  normals : LIST[0:?] OF LIST[3:3] OF REAL;
WHERE
  WR1: ((SIZEOF(normals) = 0) OR (SIZEOF(normals) = 1) OR (SIZEOF(normals) = pnmax));
END_ENTITY;

ENTITY Tessellated_vertex
  SUBTYPE OF (Tessellated_structured_item);
  coordinates : Coordinates_list;
  topological_link : OPTIONAL Vertex_point;
  point_index : INTEGER;
END_ENTITY;

ENTITY Tessellated_wire
  SUBTYPE OF (Tessellated_item);
  items : SET[1:?] OF tessellated_edge_or_vertex;
  geometric_model_link : OPTIONAL path_or_composite_curve;
END_ENTITY;

ENTITY Triangulated_face
  SUBTYPE OF (Tessellated_face);
  pnindex : LIST[0:?] OF INTEGER;
  triangles : LIST[1:?] OF LIST[3:3] OF INTEGER;
WHERE
  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\Tessellated_face.pnmax));
  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\Tessellated_face.pnmax <> coordinates.npoints));
END_ENTITY;

ENTITY Triangulated_surface_set
  SUBTYPE OF (Tessellated_surface_set);
  pnindex : LIST[0:?] OF INTEGER;
  triangles : LIST[1:?] OF LIST[3:3] OF INTEGER;
WHERE
  WR1: ((SIZEOF(pnindex) = 0) OR (SIZEOF(pnindex) = SELF\Tessellated_surface_set.pnmax));
  WR2: NOT ((SIZEOF(pnindex) = 0) AND (SELF\Tessellated_surface_set.pnmax <> coordinates.npoints));
END_ENTITY;

END_SCHEMA;  -- Tessellated_geometry_arm


© ISO 2021 — All rights reserved