- Basic operations
This commit is contained in:
@@ -180,12 +180,31 @@ class OCGeometryKernel(GeometryKernel):
|
||||
from OCP.BRepAlgoAPI import BRepAlgoAPI_Fuse
|
||||
from OCP.TopoDS import TopoDS_Shape
|
||||
|
||||
face = self._get_shape(sketch)
|
||||
# Defensive: figure out the actual shape from whatever the caller
|
||||
# hands us, and surface a clear error if we can't get one.
|
||||
# - If it's an OCCGeometryObject wrapper, unwrap via _get_shape.
|
||||
# - If it's already a TopoDS_Shape (raw face/wire/etc.), use it.
|
||||
# - If it's a cadquery Workplane, unwrap that too.
|
||||
# - If it's a cadquery Shape (cq.Shape), unwrap to TopoDS_Shape.
|
||||
if isinstance(sketch, OCCGeometryObject):
|
||||
face = self._get_shape(sketch)
|
||||
elif isinstance(sketch, TopoDS_Shape):
|
||||
face = sketch
|
||||
else:
|
||||
face = self._get_shape(sketch)
|
||||
if face is None:
|
||||
raise ValueError(
|
||||
"Cannot extrude: sketch has no geometry. "
|
||||
"Draw a closed profile before extruding."
|
||||
)
|
||||
# If the wrapper class itself leaked through somehow, surface a
|
||||
# clear error instead of letting BRepPrimAPI_MakePrism raise an
|
||||
# opaque TypeError.
|
||||
if isinstance(face, OCCGeometryObject):
|
||||
raise ValueError(
|
||||
"Cannot extrude: sketch geometry is a wrapper, not a shape. "
|
||||
"This is a bug — please report it."
|
||||
)
|
||||
# ``face`` may be a TopoDS_Face (new path) or a compound/wire from
|
||||
# legacy cadquery objects. If it's not already a face, build one.
|
||||
face = self._ensure_face(face)
|
||||
|
||||
Reference in New Issue
Block a user