Application module: Scan data 3D shape | ISO/TS 10303-1831:2019(E) © ISO |
(*
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