| Application module: Tessellated geometry | ISO/TS 10303-1819:2021(E)  © ISO  | 
         
         (*
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