| Integrated generic resource: Geometric and topological representation | ISO 10303-42:2021(E)  © ISO  | 
         
         (*
ISO/TC 184/SC 4/WG 12 N10694 - ISO 10303-42 Geometric and topological representation - EXPRESS
Supersedes 
         ISO/TC 184/SC 4/WG 12 N9204
*)
         
            SCHEMA scan_data_3d_shape_model_schema;
         REFERENCE FROM 
         measure_schema   -- ISO 10303-41
  (global_unit_assigned_context,
           
         positive_length_measure);
         
         REFERENCE FROM 
         representation_schema   -- ISO 10303-43
  (representation,
           
         representation_item,
           
         using_representations);
         
         REFERENCE FROM 
         product_property_representation_schema   -- ISO 10303-41
  (shape_representation);
         
         REFERENCE FROM 
         support_resource_schema   -- ISO 10303-41
  (label);
         
         REFERENCE FROM 
         geometry_schema   -- ISO 10303-42
  (axis2_placement_3d,
           
         geometric_representation_item,
           
         geometric_representation_context);
         
TYPE point_cloud_set_or_superset =
         
         
         SELECT
            (point_cloud_dataset, 
    point_cloud_superdataset);
         END_TYPE; 
         
ENTITY scan_data_shape_representation
           SUBTYPE OF (shape_representation);
           SELF\representation.items : SET[1:?] OF scanned_data_item;
WHERE
           WR1: 'REPRESENTATION_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(SELF\representation.context_of_items);
         
         END_ENTITY;
ENTITY scanned_data_item
           SUPERTYPE OF 
         (ONEOF (point_cloud_dataset,
                       point_cloud_superdataset,
                       triangulated_point_cloud_dataset,
                       scan_3d_model))
           SUBTYPE OF (geometric_representation_item);
WHERE
           WR1: SIZEOF(QUERY(using_rep                <* using_representations(SELF)                | NOT ('SCAN_DATA_3D_SHAPE_MODEL_SCHEMA.SCAN_DATA_SHAPE_REPRESENTATION'
            IN TYPEOF(using_rep)))) =   0;
         
         END_ENTITY;
ENTITY point_cloud_dataset
           SUBTYPE OF (scanned_data_item);
           point_coordinates : LIST[1:?] OF LIST[3:3] OF REAL;
         
         END_ENTITY;
ENTITY point_cloud_dataset_with_normals
           SUBTYPE OF (point_cloud_dataset);
           normals : LIST[1:?] OF LIST[3:3] OF REAL;
WHERE
           WR1: SIZEOF(normals) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
         
         END_ENTITY;
ENTITY point_cloud_dataset_with_colours
           SUBTYPE OF (point_cloud_dataset);
           colour_indices : LIST[1:?] OF LIST[3:3] OF INTEGER;
WHERE
           WR1: SIZEOF(colour_indices) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
         
         END_ENTITY;
ENTITY point_cloud_dataset_with_intensities
           SUBTYPE OF (point_cloud_dataset);
           intensities : LIST[1:?] OF REAL;
WHERE
           WR1: SIZEOF(intensities) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
         
         END_ENTITY;
ENTITY point_cloud_superdataset
           SUBTYPE OF (scanned_data_item);
           pts_per_sublist : INTEGER;
           sublists : LIST[2:?] OF point_cloud_dataset;
WHERE
           WR1: consistent_sizes(SELF.pts_per_sublist, SELF.sublists);
         
         END_ENTITY;
ENTITY triangulated_point_cloud_dataset
           SUBTYPE OF (scanned_data_item);
           points : point_cloud_set_or_superset;
           triangles : LIST[1:?] OF LIST[3:3] OF INTEGER;
         
         END_ENTITY;
ENTITY scan_3d_model
           SUBTYPE OF (scanned_data_item);
           scanner_info : SET[1:?] OF scanner_property;
           scanned_points : SET[1:?] OF scanned_data_item;
WHERE
           WR1: SIZEOF(QUERY(tmp <* scanned_points | 'SCAN_DATA_3D_SHAPE_MODEL_SCHEMA.SCAN_3D_MODEL' IN TYPEOF(tmp))) = 0;
         
         END_ENTITY;
ENTITY scanner_property
           ABSTRACT SUPERTYPE
         
           SUBTYPE OF (representation_item);
         
         END_ENTITY;
ENTITY scanner_basic_properties
           SUBTYPE OF (scanner_property);
           scanner_identification : label;
           scanner_location : axis2_placement_3d;
           scanner_uncertainty : 
         OPTIONAL 
         positive_length_measure;
         
         END_ENTITY;
FUNCTION consistent_sizes
 (max : INTEGER; point_lists : LIST OF point_cloud_dataset) : BOOLEAN;
           LOCAL
  ndatasets : INTEGER := SIZEOF(point_lists);
  result : BOOLEAN := TRUE;
    END_LOCAL;
      REPEAT i := 1 TO (ndatasets - 1);
    IF (SIZEOF(point_lists[i].point_coordinates) <> max)
    THEN
      result := FALSE;
      RETURN(result);
    END_IF;
  END_REPEAT;
      IF (SIZEOF(point_lists[ndatasets].point_coordinates) > max)
  THEN
    result := FALSE;
    RETURN(result);
  END_IF;
      RETURN(result);
         END_FUNCTION;
         
         END_SCHEMA;  -- scan_data_3d_shape_model_schema
© ISO 2021 — All rights reserved