Add kernel solid operations and complete Solid3D (create and rigid move)

An additive HostApi::solid_operation builds cadkernel primitives and applies
rigid transforms, verifying each result lifts back losslessly and refusing a
payload it cannot lift. Exposed as doc.solids in Python; Solid3D, Body and
Region are mapped read-only with the opaque payload preserved. The lifecycle
test passes through the real runner with analytic volumes and exact extents as
oracles, DWG and DXF reopen with re-edit, and undo restores exactly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Felix RiestraandClaude Sonnet 5 committed 2026-09-20 17:29:06 +02:00
1 parent 07fe739571
commit 04cd9e462d
18 files changed
+717 -13

No files matched your search

+85 -1
View File
@@ -37,7 +37,10 @@
"Viewport",
"ViewBorder",
"Light",
"Ole2Frame"
"Ole2Frame",
"Solid3D",
"Body",
"Region"
],
"manual_kinds": [
"Dimension"
@@ -807,6 +810,87 @@
"read_only": true
}
}
},
"Solid3D": {
"update_only": true,
"update_only_message": "Solid3D is built and edited by the geometry kernel: use doc.solids to create solids and move them; a script never writes the ACIS payload",
"fields": {
"acis_data": {
"exclude": true,
"_comment": "Opaque ACIS payload; snapshot-readable and never rewritten by a script."
},
"wires": {
"exclude": true,
"_comment": "Derived edge wires; regenerated by the host."
},
"silhouettes": {
"exclude": true,
"_comment": "Derived; regenerated by the host."
},
"uid": {
"read_only": true
},
"point_of_reference": {
"read_only": true
},
"history_handle": {
"read_only": true
}
}
},
"Body": {
"update_only": true,
"update_only_message": "Body is built and edited by the geometry kernel: use doc.solids to create solids and move them; a script never writes the ACIS payload",
"fields": {
"acis_data": {
"exclude": true,
"_comment": "Opaque ACIS payload; snapshot-readable and never rewritten by a script."
},
"wires": {
"exclude": true,
"_comment": "Derived edge wires; regenerated by the host."
},
"silhouettes": {
"exclude": true,
"_comment": "Derived; regenerated by the host."
},
"uid": {
"read_only": true
},
"point_of_reference": {
"read_only": true
},
"history_handle": {
"read_only": true
}
}
},
"Region": {
"update_only": true,
"update_only_message": "Region is built and edited by the geometry kernel: use doc.solids to create solids and move them; a script never writes the ACIS payload",
"fields": {
"acis_data": {
"exclude": true,
"_comment": "Opaque ACIS payload; snapshot-readable and never rewritten by a script."
},
"wires": {
"exclude": true,
"_comment": "Derived edge wires; regenerated by the host."
},
"silhouettes": {
"exclude": true,
"_comment": "Derived; regenerated by the host."
},
"uid": {
"read_only": true
},
"point_of_reference": {
"read_only": true
},
"history_handle": {
"read_only": true
}
}
}
}
}