forked from 1b-agent/opencadstudio-upstream
feat(automation): query op — list entities with detail and filters
Add a query op to the headless server: list entities with handle, type, layer and basic geometry (Line start/end, Circle/Arc centre+radius, Point location), filtered by type and/or layer and capped by limit. Closes the observe half of an agent's act/observe loop. ocs.py gains ocs.query(). Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
f1a59b1094
commit
6d29b8458c
3 files changed
+89
No files matched your search
@@ -19,6 +19,7 @@ can act → observe → act.
|
||||
| `{"op":"open","path":"plan.dwg"}` | entity summary |
|
||||
| `{"op":"run","cmd":"LAYER Walls"}` | `{"ok":true,"cmd":...,"entities":N,"added":D}` |
|
||||
| `{"op":"entities"}` | `{"ok":true,"total":N,"by_type":{"Line":42,...}}` |
|
||||
| `{"op":"query","type":"Line","layer":"Walls"}` | per-entity `{handle,type,layer,…geometry}` (filters + `limit` optional) |
|
||||
| `{"op":"save","path":"out.dwg"}` | `{"ok":true,"saved":"out.dwg"}` (path optional once opened/saved) |
|
||||
|
||||
Every response has `"ok"`; failures carry `"error"`. `run` drives Open CAD
|
||||
|
||||
@@ -70,6 +70,15 @@ class Ocs:
|
||||
"""Total entity count and a breakdown by type."""
|
||||
return self._send(op="entities")
|
||||
|
||||
def query(
|
||||
self,
|
||||
type: Optional[str] = None,
|
||||
layer: Optional[str] = None,
|
||||
limit: Optional[int] = None,
|
||||
) -> dict[str, Any]:
|
||||
"""List entities (handle, type, layer, geometry), optionally filtered."""
|
||||
return self._send(op="query", type=type, layer=layer, limit=limit)
|
||||
|
||||
def save(self, path: Optional[str] = None) -> dict[str, Any]:
|
||||
"""Write the document (defaults to the opened/last-saved path)."""
|
||||
return self._send(op="save", path=path)
|
||||
|
||||
Reference in new issue
Block a user