The Measurement Creating Viewer adds visual measurement authoring to the selection-capable viewer. It creates distance, angle, radial, bounding-box, coordinate, and polyline-length measurements from selected model geometry and keeps a React list synchronized with the scene. Drawing visualization remains available, but measurement creation is unavailable in drawing mode.

Use this example to study measurement authoring:
The shared measurement feature owns measurement instances, placement, geometry, materials, highlighting, keyboard interaction, duplicate detection, and the measurement scene attached to the viewport. The React page owns controls, list rendering, delete confirmation, and user-facing feedback.
| Source | Description |
|---|---|
MeasurementCreatingViewerreact/src/pages/measurement-creating-viewer/MeasurementCreatingViewer.tsx | Main page component. It configures measurement type options, listens to measurement manager events, renders measurement controls and measurement cards, and synchronizes panel selection with the scene. |
VisualizationStatusSwitcherreact/src/features/visualization-status-switcher/VisualizationStatusSwitcher.tsx | Keeps model/drawing visualization switching available while measurements are managed. |
LabeledSelect, ButtonGroup, and shared controlsreact/src/common/ui/ | Render measurement type, notation, visibility, and action controls. |
useMeasurementVisualizationContextreact/src/features/visualization-context/useMeasurementVisualizationContext.ts | Connects viewer state and measurement updates to React. |
| Source | Description |
|---|---|
MeasurementCreatingViewershared/src/viewers/measurement-creating-viewer/MeasurementCreatingViewer.ts | Extends SelectionHandlingViewer with measurement state and model-target adaptation. |
MeasurementManagershared/src/features/measurements/MeasurementManager.ts | Owns measurement creation, duplicate handling, selection, highlighting, movement, visibility, deletion, events, and disposal. |
getModelMeasurementTarget() and ModelMeasurementObjectshared/src/features/model/measurements/ModelMeasurementTargetAdapter.ts | Convert highlighted model references into generic measurement targets. |
Measurement classesshared/src/features/measurements/ | Implement distance, angle, radial, radial-dimension, bounding-box, coordinate, and polyline-length measurement behavior. |
MeasurementTypeRegistryshared/src/features/measurements/MeasurementTypeRegistry.ts | Registers measurement type definitions used by the creation UI and manager. |