forked from 1b-agent/opencadstudio-upstream
Complete Surface: plane surfaces, extrusions, isolines and moves
Adds SurfaceFromProfile and Extrude kernel operations (doc.solids.surface and doc.solids.extrude), accepts surfaces in Transform, and maps Surface with editable isolines. Fixes a real bug found by the test: the surface kind field overwrote the entity-type kind key in Python dicts, so it is exposed as surface_kind, with a catalog test guarding against name collisions. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
1 parent
918351f264
commit
9cd6653a58
14 files changed
+441
-34
No files matched your search
@@ -146,6 +146,18 @@ class _Solids:
|
||||
handle = profile.handle if isinstance(profile, _Entity) else int(profile)
|
||||
return self._document.entities[ocs.solid_region(handle, layer, bool(delete_source))]
|
||||
|
||||
def surface(self, profile, layer=None, delete_source=False):
|
||||
"""Make a plane surface from one closed planar profile."""
|
||||
handle = profile.handle if isinstance(profile, _Entity) else int(profile)
|
||||
return self._document.entities[ocs.solid_surface(handle, layer, bool(delete_source))]
|
||||
|
||||
def extrude(self, profile, direction, layer=None, delete_source=False):
|
||||
"""Extrude a planar profile along `direction`: a Solid3D when the
|
||||
profile is closed, a Surface when it is open."""
|
||||
handle = profile.handle if isinstance(profile, _Entity) else int(profile)
|
||||
vector = [float(v) for v in direction]
|
||||
return self._document.entities[ocs.solid_extrude(handle, vector, layer, bool(delete_source))]
|
||||
|
||||
def transform(self, entity, matrix):
|
||||
"""Apply a column-major 4x4 rigid transform (16 numbers) in place."""
|
||||
handle = entity.handle if isinstance(entity, _Entity) else int(entity)
|
||||
|
||||
Reference in new issue
Block a user