ocs_doc_api: Phase 2b-c (linear Dimension) — Phase 2 complete

- CreateDimensionLinear(DimensionSpec) op + GetDimensionMeasurement query (append-only).
- backend add_dimension_linear (Dimension::Linear via DimensionLinear::new) +
  dimension_measurement (linear/radius/diameter distance).
- Dimension bounds from measured + definition points; Dimension handle + measurement().
- spec Dimension family; api_reference + binding_schema regenerated; mocks + baseline.
- Test phase2c_dimension_linear_create_measurement_bounds -> 607 host lib + 8 crate
  + 3 consistency green. Phase 2 (full 2D + annotations) is now complete.
This commit is contained in:
Sebastian committed 2026-09-06 09:43:37 +02:00
1 parent ba8e5ed0cd
commit 2dba0158ca
16 files changed
+209 -3

No files matched your search

@@ -125,6 +125,18 @@ Filled region over a closed polyline boundary. boundary() returns the loops; bou
- **boundary**(``) -> `Vec<Vec<[f64; 2]>>` — query `GetHatchBoundary`
## `Dimension` (acadrust `Dimension`, collection `curves`)
Linear dimension between two measured points. measurement() reads the distance; bounds from the measured + definition points.
### Constructors (`doc.curves()`)
- **create_dimension_linear**(`first_point: [f64; 3], second_point: [f64; 3], definition_point: [f64; 3]`) -> `Dimension`
### Methods
- **measurement**(``) -> `f64` — query `GetDimensionMeasurement`
## `Entity` (acadrust `Insert`, collection `entities`)
Block reference. Place an existing BlockRecord by name; transform moves its insert point.
+21 -1
View File
@@ -277,6 +277,25 @@
],
"name": "Hatch"
},
{
"acadrust_variant": "Dimension",
"collection": "curves",
"handle": "Dimension",
"methods": [
{
"args": [],
"bulk": false,
"fixed": null,
"kind": "query",
"name": "measurement",
"op": null,
"query": "GetDimensionMeasurement",
"read_only": true,
"returns": "f64"
}
],
"name": "Dimension"
},
{
"acadrust_variant": "Insert",
"collection": "entities",
@@ -361,7 +380,8 @@
"Ray",
"XLine",
"Text",
"MText"
"MText",
"Dimension"
],
"root": "DocApi"
},
+3 -1
View File
@@ -7,7 +7,7 @@
use serde::{Deserialize, Serialize};
use crate::id::ObjectId;
use crate::ops::{BoolOp, Curve2Spec, EntitySpec, HatchSpec, InsertSpec, MTextSpec, PlacementSpec, SolidPrimitive, TextSpec, ViewportSpec};
use crate::ops::{BoolOp, Curve2Spec, DimensionSpec, EntitySpec, HatchSpec, InsertSpec, MTextSpec, PlacementSpec, SolidPrimitive, TextSpec, ViewportSpec};
/// A typed write operation (plan §5). Each variant is ONE atomic host call = one
/// undo step. Append new variants at the END only.
@@ -38,4 +38,6 @@ pub enum Operation {
SetTextContent { id: ObjectId, value: String },
// hatch
CreateHatch(HatchSpec),
// dimensions
CreateDimensionLinear(DimensionSpec),
}
+2
View File
@@ -23,4 +23,6 @@ pub enum Query {
GetTextContent { id: ObjectId },
/// The boundary loops of a Hatch (outer + islands) as polylines.
GetHatchBoundary { id: ObjectId },
/// The measured value of a Dimension (distance or angle).
GetDimensionMeasurement { id: ObjectId },
}