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

+14
View File
@@ -25,6 +25,8 @@ pub struct MockBackend {
text_values: HashMap<ObjectId, String>,
/// Stored hatch boundary loops.
hatch_boundaries: HashMap<ObjectId, Vec<Vec<[f64; 2]>>>,
/// Stored dimension measurements.
dimension_measurements: HashMap<ObjectId, f64>,
}
impl MockBackend {
@@ -166,6 +168,18 @@ impl DocApiBackend for MockBackend {
fn hatch_boundary(&self, id: ObjectId) -> ApiResult<Vec<Vec<[f64; 2]>>> {
self.hatch_boundaries.get(&id).cloned().ok_or(ApiError::UnknownId(id))
}
fn add_dimension_linear(&mut self, spec: &ocs_doc_api::ops::DimensionSpec) -> ApiResult<ObjectId> {
let id = self.alloc("Dimension");
let d = ((spec.first_point[0] - spec.second_point[0]).powi(2)
+ (spec.first_point[1] - spec.second_point[1]).powi(2)
+ (spec.first_point[2] - spec.second_point[2]).powi(2))
.sqrt();
self.dimension_measurements.insert(id, d);
Ok(id)
}
fn dimension_measurement(&self, id: ObjectId) -> ApiResult<f64> {
self.dimension_measurements.get(&id).copied().ok_or(ApiError::UnknownId(id))
}
fn add_vertex(&mut self, id: ObjectId, _at: usize, _point: [f64; 3]) -> ApiResult<()> {
if self.entity_exists(id) {
Ok(())