New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using fillet() and cutThruAll() interact poorly #716
Comments
I usually try to leave filleting to the end if possible since the CAD kernel can do some weird things with filleted objects. You can also simplify the import cadquery as cq
part = (cq.Workplane().rect(142.875,213.360)
.workplane(offset=-30.1625).rect(142.875,213.260)
.loft()
.cut(cq.Workplane().rect(128.99127,195.66627)
.workplane(offset=-9.535).rect(127.0,193.675)
.loft()
.translate((0,0,0.01)).translate((0,0,0))
)
.faces('>Z').workplane()
.pushPoints([(-62.8625,-96.2), (-62.8625, 96.2), ( 62.8625,-96.2), ( 62.8625, 96.2)]).circle(0.875).cutThruAll()
)
part = part.edges('<Z').fillet(0.4)
show_object(part) |
Thanks for the suggestion on Moving the |
I think it is a combination of lofting/fillets that makes it more difficult for the kernel. Would this kind of modeling approach work? W = 300
D = 200
H = 50
o = 20
alpha = 2
res = (
cq.Workplane().rect(W,D).extrude(H,taper=alpha)
.faces('>Z').workplane().rect(W-o,D-o).cutBlind(-H/2, taper=alpha)
.faces('>Z[-2]').fillet(1)
.faces('<Z').rect(W-1.15*o,D-1.15*o,forConstruction=True)
.vertices().circle(1).cutThruAll()
) |
I went to using I looked at your solution, and I don't think it will work for me because it depends on knowing exactly how many vertical faces are in play
In this case, Tray handles building the exterior box (aka buck) automatically (though you can specify the buck manually) from the size of the well, renders all of the components, and then optionally drills all of the vent holes. Well only knows how to render a box with appropriate draft angle, corner radius and where to place vent holes. |
Here's another example without
This function fails to produce the correct result depending on all 3 parameters; altering any one of them will cause the function to succeed:
|
If I build a part using a
fillet()
on the bottom-inside edges of a section removed from a larger part, and then try to usecutThruAll()
to cut some vertical through holes, the holes turn into columns, or holes, or disappear entirely.Code that fails:
Code that succeeds:
Other ways of cutting the holes also fail if
fillet()
is called, though they fail in different fashions.The text was updated successfully, but these errors were encountered: