Application module: Scan data 3D shape ISO/TS 10303-1831:2019(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 definition
   4.3 ARM entity definitions
   4.4 ARM function definition
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 N10115 - ISO/TS 10303-1831 Scan data 3D shape - EXPRESS ARM
Supersedes ISO/TC 184/SC 4/WG 12 N9867
*)



SCHEMA Scan_data_3d_shape_arm;

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

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


TYPE point_cloud_set_or_superset = SELECT
   (Point_cloud_dataset,
    Point_cloud_superdataset);
END_TYPE;

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_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_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_superdataset
  SUBTYPE OF (Scanned_data_item);
  pts_per_sublist : INTEGER;
  sublists : LIST[2:?] OF Point_cloud_dataset;
WHERE
  WR1: consistent_sizes_point_clouds(SELF.pts_per_sublist, SELF.sublists);
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_ARM.SCAN_3D_MODEL' IN TYPEOF(tmp))) = 0;
END_ENTITY;

ENTITY Scan_data_shape_representation
  SUBTYPE OF (Geometric_model);
  SELF\Representation.items : SET[1:?] OF Scanned_data_item;
END_ENTITY;

ENTITY Scanned_data_item
  SUPERTYPE OF (ONEOF (Point_cloud_dataset,
                       Point_cloud_superdataset,
                       Triangulated_point_cloud_dataset,
                       Scan_3d_model))
  SUBTYPE OF (Detailed_geometric_model_element);
WHERE
  WR1: SIZEOF (QUERY (using_rep <* using_representations (SELF) | NOT ('SCAN_DATA_3D_SHAPE_ARM.SCAN_DATA_SHAPE_REPRESENTATION' IN TYPEOF(using_rep)))) = 0;
END_ENTITY;

ENTITY Scanner_basic_properties
  SUBTYPE OF (Scanner_property);
  scanner_identification : label;
  scanner_location : Axis_placement_3d;
  scanner_uncertainty : OPTIONAL length_measure;
WHERE
  WR1: (NOT (EXISTS(scanner_uncertainty))) OR (scanner_uncertainty > 0.0);
END_ENTITY;

ENTITY Scanner_property
  ABSTRACT SUPERTYPE
  SUBTYPE OF (Representation_item);
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;

FUNCTION consistent_sizes_point_clouds
 (max : INTEGER; point_lists : LIST[0:?] 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_arm


© ISO 2019 — All rights reserved