forked from 1b-agent/opencadstudio-upstream
feat(python): text and dimension styles (doc.text_styles, doc.dim_styles)
Extends TableOperation with text style create/modify, dimension style create/modify (DimStyle fields as a validated JSON object), rename, delete and set-current. Reuses OCS's style in-use scan and reference-following rename (four style_ops methods widened to pub(super)); a renamed text style also updates dimension styles that name it. Real-IPC audit with DWG/DXF persistence and undo, IPC and Python unit tests, docs. Four cadcodec findings are pinned by canaries. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
1 parent
b7b6e2cef5
commit
aaea15e4ef
11 files changed
+894
-8
No files matched your search
@@ -36,6 +36,9 @@ class DocumentModelTests(unittest.TestCase):
|
||||
poll_input=lambda token: {"status": "point", "point": [1, 2, 3]},
|
||||
layer_records=lambda: [{"name": "0", "current": True}, {"name": "Walls", "current": False}],
|
||||
layer_operation=lambda op, name, options: self.calls.append((op, name, options)) or 9,
|
||||
text_style_records=lambda: [{"name": n, "current": n == "Standard"} for n in ("Standard", "Title", "Notes")],
|
||||
dim_style_records=lambda: [{"name": n, "current": n == "Standard"} for n in ("Standard", "Metric")],
|
||||
style_operation=lambda kind, op, name, options: self.calls.append((kind, op, name, options)) or 9,
|
||||
)
|
||||
namespace = {"ocs": self.ocs}
|
||||
exec(MODEL.read_text(), namespace)
|
||||
@@ -72,6 +75,25 @@ class DocumentModelTests(unittest.TestCase):
|
||||
layers.create("New", colour=1)
|
||||
self.assertEqual(len(self.calls), 2)
|
||||
|
||||
def test_text_and_dim_styles(self):
|
||||
text, dim = self.doc.text_styles, self.doc.dim_styles
|
||||
self.assertEqual(text.current["name"], "Standard")
|
||||
self.assertEqual(text["TITLE"]["name"], "Title")
|
||||
text.create("Notes", height=2.5, font=None, oblique=10)
|
||||
self.assertEqual(self.calls[-1], ("text", "create", "Notes", {"height": 2.5, "oblique": 10}))
|
||||
with self.assertRaises(TypeError):
|
||||
text.create("Bad", true_type_font="Arial")
|
||||
with self.assertRaises(TypeError):
|
||||
text.modify("Title", fnt="x")
|
||||
dim.create("Metric", copy_from="Standard", dimscale=2)
|
||||
self.assertEqual(self.calls[-1], ("dim", "create", "Metric", {"dimscale": 2, "copy_from": "Standard"}))
|
||||
dim.modify("Standard", dimtxt=3)
|
||||
self.assertEqual(self.calls[-1], ("dim", "modify", "Standard", {"dimtxt": 3}))
|
||||
dim.delete("Metric")
|
||||
self.assertEqual(self.calls[-1], ("dim", "delete", "Metric", None))
|
||||
dim.set_current("Standard")
|
||||
self.assertEqual(self.calls[-1], ("dim", "set_current", "Standard", None))
|
||||
|
||||
def test_create_and_delete_use_document_model(self):
|
||||
line = self.doc.create_entity("Line", start={"x": 0, "y": 0, "z": 0},
|
||||
end={"x": 10, "y": 0, "z": 0})
|
||||
|
||||
Reference in new issue
Block a user