cadquery icon indicating copy to clipboard operation
cadquery copied to clipboard

Shell Broken for Loft Objects

Open dcowden opened this issue 6 years ago • 9 comments

Issue by jmwright Wednesday May 09, 2018 at 14:55 GMT Originally opened as https://github.com/dcowden/cadquery/issues/263


This issue began over on the Google Group here. I'm posting it here so we can keep track of it.

Shelling works fine with the cube example in the documentation.

result = cq.Workplane("XY").box(2, 2, 2) \
    .faces(">Z") \
    .shell(-0.2)

But no combination of face selections or shell thicknesses seems to be able to make this work.

import cadquery as cq
from Helpers import show

result = cq.Workplane("front").circle(1.5) \
.workplane(offset=3.0).rect(0.75, 0.5).loft(combine=True) \
.faces("-Z").shell(-0.1)

show(result)

I used the old show function in that example because it provides a stack trace, whereas CQGI's show_object function does not.

Here's the main error I get.

BRep_API: command not doneRunning the Python command 'CadQueryExecuteScript' failed:
Traceback (most recent call last):
  File "/home/jwright/.FreeCAD/Mod/cadquery_module/CQGui/Command.py", line 226, in Activated
    imp.load_source('temp_module', tempFile.name)
  File "/tmp/tmphTKlY4", line 6, in <module>
    .faces("-Z").shell(-0.1)
  File "/home/jwright/.FreeCAD/Mod/cadquery_module/Libs/cadquery/cadquery/cq.py", line 820, in shell
    s = solidRef.shell(self.objects, thickness)
  File "/home/jwright/.FreeCAD/Mod/cadquery_module/Libs/cadquery/cadquery/freecad_impl/shapes.py", line 1009, in shell
    return Shape.cast(self.wrapped.makeThickness(nativeFaces, thickness, tolerance))

BRep_API: command not done

dcowden avatar Dec 06 '18 19:12 dcowden

Comment by adam-urbanczyk Thursday May 10, 2018 at 09:46 GMT


Looks like a problem with the cad kernel. Did you try with a different loft based model?

dcowden avatar Dec 06 '18 19:12 dcowden

Comment by jmwright Thursday May 10, 2018 at 12:16 GMT


@adam-urbanczyk No, I only tried this one.

dcowden avatar Dec 06 '18 19:12 dcowden

Seems to work in CQ2.0: obraz

adam-urbanczyk avatar Jun 13 '19 17:06 adam-urbanczyk

Using CQ2.4.0 this problem seems still to be present. Should this ticket be reopened?

tero-vallius-jz avatar Feb 12 '24 16:02 tero-vallius-jz

Maybe it's a regression in OpenCASCADE. I can also reproduce in CQ commit 551a23157026faef423e7cb7caaf6f84da91a562 (Jan 30) with OCP 7.7.2.

jmwright avatar Feb 12 '24 16:02 jmwright

Doesn't work for me as well (cadquery==2.4.0)

wall_thickness = 2.0
## radius
circle_inner = 39.0 / 2.0
box_x_outer = 34.6
box_y_outer = 17.1
box_height = 30.0
funnel_height = 50.0

circle_outer = circle_inner + 2 * wall_thickness
box_x_inner = box_x_outer - 2 * wall_thickness
box_y_inner = box_y_outer - 2 * wall_thickness


result = (
    cq.Workplane("front")
    .rect(box_x_outer, box_y_outer)
    #.faces(">Z")
    #.circle(circle_outer)
    .workplane(offset=funnel_height)
    .circle(circle_outer)
    .loft(combine=True)
    .shell(-2)
)

display(result) 

Oddly enough it works if I use a shell between two circles the same size e.g. a cylinder, but made via the loft tool.

kaylon avatar Apr 22 '24 18:04 kaylon

Is there a way to revert to 2.3.1 from a current Linux install via the nightly release? I've just run into this issue getting started with CadQuery.

gnbl avatar May 19 '24 11:05 gnbl