ocs_doc_api: Phase 2b-b (Hatch)

- CreateHatch(HatchSpec) op + GetHatchBoundary query (append-only).
- HatchSpec{boundary: Vec<[f64;2]>, solid}; executor validates >= 3 boundary points.
- backend add_hatch (Line-edge BoundaryPath, solid/pattern) + hatch_boundary
  (reconstruct loops from Line edges; non-line edges -> Unsupported).
- Hatch bounds from boundary edges; facade create_hatch + Entity handle.
- spec Hatch family; api_reference + binding_schema regenerated; mocks + baseline.
- Test phase2b_hatch_create_boundary_bounds_delete -> 606 host lib + 8 crate + 3 consistency green.
This commit is contained in:
Sebastian committed 2026-09-06 09:24:11 +02:00
1 parent fc0e2c2c9d
commit ba8e5ed0cd
16 files changed
+223 -3

No files matched your search

@@ -113,6 +113,18 @@ Multi-line text annotation. content()/set_content() read+replace the value; tran
- **content**(``) -> `String` — query `GetTextContent`
- **set_content**(`value: &str`) -> `()` — op `SetTextContent`
## `Entity` (acadrust `Hatch`, collection `curves`)
Filled region over a closed polyline boundary. boundary() returns the loops; bounds from boundary; generic delete.
### Constructors (`doc.curves()`)
- **create_hatch**(`boundary: &[[f64; 2]], solid: bool`) -> `Entity`
### Methods
- **boundary**(``) -> `Vec<Vec<[f64; 2]>>` — query `GetHatchBoundary`
## `Entity` (acadrust `Insert`, collection `entities`)
Block reference. Place an existing BlockRecord by name; transform moves its insert point.
@@ -258,6 +258,25 @@
],
"name": "MText"
},
{
"acadrust_variant": "Hatch",
"collection": "curves",
"handle": "Entity",
"methods": [
{
"args": [],
"bulk": false,
"fixed": null,
"kind": "query",
"name": "boundary",
"op": null,
"query": "GetHatchBoundary",
"read_only": true,
"returns": "Vec<Vec<[f64; 2]>>"
}
],
"name": "Hatch"
},
{
"acadrust_variant": "Insert",
"collection": "entities",
+3 -1
View File
@@ -7,7 +7,7 @@
use serde::{Deserialize, Serialize};
use crate::id::ObjectId;
use crate::ops::{BoolOp, Curve2Spec, EntitySpec, InsertSpec, MTextSpec, PlacementSpec, SolidPrimitive, TextSpec, ViewportSpec};
use crate::ops::{BoolOp, Curve2Spec, 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.
@@ -36,4 +36,6 @@ pub enum Operation {
CreateText(TextSpec),
CreateMText(MTextSpec),
SetTextContent { id: ObjectId, value: String },
// hatch
CreateHatch(HatchSpec),
}
+2
View File
@@ -21,4 +21,6 @@ pub enum Query {
GetGeometryRevision,
/// The text content of a Text/MText annotation.
GetTextContent { id: ObjectId },
/// The boundary loops of a Hatch (outer + islands) as polylines.
GetHatchBoundary { id: ObjectId },
}