Irev-Dev / Round-Anything

A set of OpenSCAD utilities for adding radii and fillets, that embodies a robust approach to developing OpenSCAD parts.
https://kurthutten.com/blog/round-anything-a-pragmatic-approach-to-openscad-design
MIT License
504 stars 47 forks source link

polyRoundExtrude with internal holes #24

Closed echo-bravo-yahoo closed 3 years ago

echo-bravo-yahoo commented 3 years ago

Is there a way to use polyRoundExtrude on a polygon set with internal holes (e.g., a doughnut)?

If not, is there a way to achieve a similar effect of top+bottom chamfers (rounding X/Y/Z) and rounded edges (X/Y)? polyRound smooths in (X/Y), but then extruding it doesn't have a convient way to chamfer, and polyRoundExtrude can't take in the output of polyRound...

I may source-dive and cobble something together later, if I have the time...

Irev-Dev commented 3 years ago

Hey @Trial-In-Error, Yeah it is supported in an indirect way, but I should probably document the intention better though.

polyRoundExtrude supports negative fillets, you have to then put on your normal OpenSCAD thinking hat and use difference with another polyRound like so. image

radiiPoints=[[10,0,10],[26,20,1.1],[8,20,10],[0,7,0.3],[5,3,0.1],[-4,0,1]];
radiiPointsNegative=[[11,10,0],[15,15,1.1],[11,15,1.1]];
negativeFilletsForHole=-1.5;
extrudeHeight=2;
difference(){
    polyRoundExtrude(radiiPoints,extrudeHeight,0.5,0.5,fn=8);
    translate([0,0,-0.005])polyRoundExtrude(radiiPointsNegative,extrudeHeight+0.01,negativeFilletsForHole,negativeFilletsForHole,fn=8);
}

A big assumption under the hood with polyround is that you'll be making a ring/closed-loop. It might be possible to take that assumption out of the code, but it's pretty old code. if I were to do a re-write I would change a great many things

Does that help?