Skip to content(if available)orjump to list(if available)

Show HN: 3D printing giant things with a Python jigsaw generator

jgoewert

This came up at pretty much the perfect time for me to try out.

I started learning OpenSCAD over the weekend to try out an idea to 3d print a 70" dome to make my own Star Wars Battlepod after seeing that video on making the replica Space War cabinet.

One guy got an acrylic forming shop to make him one about 10 years ago for $700, but I was calculating in how much it would cost to 3d print and stich a dome screen together. My test sample that I started used a sort of ribbed dome that I was trying to figure out how to split the file and bolt it together - https://www.reddit.com/r/openscad/comments/1i922ed/trying_to...

I started playing around with thickness because at 1/2 inch, it was looking like about $200 in filament. But if I can reduce the thickness because of having the jigsaw edging to make it easier to align, it might get cheaper.

Currently tried running this in Windows and it isn't happy. I'll make a Linux VM and give it a go again.

>>WARNING: Too many unnamed arguments supplied in file in.scad, line 6 Geometries in cache: 20 Geometry cache size in bytes: 3802608 CGAL Polyhedrons in cache: 182 CGAL cache size in bytes: 0 Total rendering time: 0:00:01.063 Top level object is a 3D object (manifold): Status: NoError Genus: 1 Vertices: 39078 Facets: 78156 Num. beds: 0

lucasoshiro

I'm really happy to see OpenSCAD stuff here in HN. Of course it has some downsides (not being able to measure an object is the main one...), but it is an underrated tool.

I'm using it as my main 3D modeling tool for three years, and I even gave I course about it last year. No regrets, and I never felt that I needed to learn Fusion or similar

WillAdams

OpenSCAD recently got a Measure tool:

https://www.youtube.com/watch?v=Q_AEHI2o-6Q

OpenSCAD's strength --- that it makes it easy to create 3D designs which are easily represented mathematically using cubes, spheres, cylinders, cones, and assemblies and distortions thereof is also its weakness --- what one can do in OpenSCAD is strongly bounded by one's fluency in mathematics/geometry/trigonometry (says the guy who is stuck on conic sections in a particular project and needs a solution which is faster to calculate).

Still waiting for the Python-enabled version to make it big:

https://pythonscad.org/

GuB-42

For me, the big problem with OpenSCAD and the reason I let go of it quickly is the lack of constraint-based modeling. For example, if I want to design a cup and I want my handle to have a 30mm round hole that is tangent to the walls of the cup, I want to be able to adjust the thickness of the handle and the size and shape of the cup while keeping these properties. And I don't what do do the maths myself if I can avoid it.

OpenSCAD does very little to help me with these maths as it doesn't have a solver. Not to my knowledge at least.

WillAdams

Basically one has to write the solver oneself --- see comment elsethread about how this is OpenSCAD's weakness --- what one can make in it is bounded by one's mathematical fluency.

Joel_Mckay

Depends on the use-case, but openscad can be useful for simple parametric designs prone to deformation during manufacturing (we use it for printing off-axis parabolas.)

FreeCAD supports the openscad language plugin, and can generate proper solids. Many classic CAD/CAM users often see the parametric design workflow as baffling... not an entirely undeserved reputation.

Freecad tutorials:

https://www.youtube.com/@4axisprinting/videos

Blender geometry nodes tutorials:

https://www.youtube.com/@Entagma/videos

Best of luck, =3

ajolly

This is great I'm going to have to try this out. I've got my own openscad dovetail joint scripts, but this seems more refined.

almog

> "The strength comes from the tightening/wedging effect when pulling the join apart. If the dovetail is tapered, the join can also tighten when it aligns too – this is highly desirable for gluing, as it means the glue will not be scraped away."

While true, dovetail and other traditional woodworking joints borrow their strength from using the wood grain to support the joint.

I don't know a lot about 3D printing but I'm guessing a lot of the assumptions about woodworking joints strength aren't applicable.

observationist

https://github.com/TengerTechnologies/Bricklayers

This came at a perfect time, then - you can cause each adjacent layer to be offset by half the layer height, to maximize the strength.

Annealing parts by baking them at the right temperature for a sufficient length of time is relatively easy to do. Printing at higher temperatures and slower speeds to ensure layers are melted together also results in higher strength parts.

wongarsu

Grain direction in woodworking has many similarities to layer lines in 3d printing. That makes techniques from woodworking often more directly transferable than techniques from CNC machined, cast, or injection molded parts.

almog

How so? What kind of filament preserves a multiple fibers like structure that resembles wood grain? Sincerely asking since I couldn't find any source for that

wongarsu

Each continuous strand of filament is kind of like a wood fiber, in the sense that the strand is much stronger than the connection to the other strands.

Of course 3d printers lay these strands in a 2d plane (and stack layers of these 2d planes), whereas trees grow in more-or-less one dimension. So wood has one strong direction and two weak ones, while 3d prints have two strong directions and one weak direction. And obviously 3d printed strands are layed out by boring and often naive algorithms that lack any of the beauty of naturally grown wood. Then again, for structural applications you also want the most bland and boring wood patterns possible.

WillAdams

layer lines.

That said, if the part is small, and one can afford to print w/ 100% infill just put it in a tray of salt and bake to re-melt/re-flow to make a (more) solid part.

https://x3d.com.au/blogs/tips-and-tricks/pla-baking-the-secr...

bb88

Interesting. I didn't know that.

But I do know about 3d printering. :)

Strength in printing is usually a function of the mass used to print with. So more plastic used at the boundary layers will mean stronger joints.

Eg. A PET plastic soda bottle (pepsi, coke) will flex in the body where it's thin, but not on the threads on the top of the bottle. In fact, those are pretty strong, because they need to hold on a cap which keeps the carbonation in.

A good question to ask is if the dovetail joint in plastic as strong as wood? The answer may likely be no, but it may not also need to be. It just needs to be "good enough". And this looks like it might be.

MisterTea

While this is nice for things like the speaker enclosure I cant help but recoil in horror from the 3d printed arcade cabinet - so much plastic. I get how this enables shapes and other niceties but between aesthetic and the environment I'll take boring and recyclable any day.

nejsjsjsbsb

I been thinking an openscad->cura pipeline would be cool. This post is very similar and inspiring.

Imagine running a custom action or pipeline and getting a physical object pop out in the shed. Pretty awesome.

I also like the idea as git as the way to share and remix 3d printing instead of (as well as) the various STL sites.

ajolly

You can link openscad to a slicer, at least in the dev snapshots, press F8 and your model opens in your slicer of choice.

Makerworlds customizer is simply a web version of OpenScad. Upload your OpenSCAD script and good to go

bb88

I kinda want this in the slicer, like prusaslicer.

lucasoshiro

I once tried to do something like that, but I stopped when trying to deal with the CuraEngine CLI...

I don't know if other slicers have a better CLI, or even if they have a CLI...

wongarsu

Orca Slicer might be a good candidate. The cli is a bit rudimentary. I assume it was built by Bambu Labs for slicing ready-made print profiles for printing from the mobile app. Or maybe it's inherited from PrusaSlicer (Orca Slicer is the open-source fork of Bambu Studio, which was forked from PrusaSlicer, which was forked from Slic3r). But as long as you only want to apply print settings, filament settings, load an stl, run auto-layout and get gcode out, it should do the trick with minimal effort.

Joel_Mckay

Keep in mind some OpenSCAD designs use complex library dependencies, and baked source geometry.

The simple language IDE preview pane sometimes chokes on the surfaces that are compiled, and on rare occasion must be done via command line. Thus, some complex designs may take hours to generate a model.

The slicers are meant to be more CAM tool than CAD utility, but people are mixing features as use-cases increase in complexity.

Best of luck, =3

dkkergoog

[dead]

ramboldio

A big advantage of this technique is that the assembled model is 'isotropic'. If it was printed in one piece, it would be easy to split along the layer lines.

But when printing the plates separately, every face is equally strong.

Great project!

batch12

I wonder if leaving some of the base intact would help with the artifact issue. Instead of cutting the teeth all the way through the whole section, leave a few mm solid on each side and reduce the height of the teeth to compensate the opposing base layer. It might add a bonus of hiding the teeth, too.

nine_k

This is cool. This is also massive. I wonder how much e.g. the arcade machine housing costs just in the filament used, and how many hours did it take to print.

regularfry

There's a relatively well-travelled path of filling hollow prints with something to get strength back, which does mitigate that. What that something is will vary per application, but I've previously used premixed post-hole concrete where I've just wanted to add weight.

tda

In similar vain, but the with cadquery and Jupyter notebook is the screwdriver stand I once made:

https://github.com/tdamsma/Screwdriver-rack

CharlesW

A linked-to inspiration for this — printing an arcade cabinet for Atari's Space Race (1973) — is a great watch too: https://www.youtube.com/watch?v=SONO6LTHuR8

camel_gopher

I 3d printed puzzle pieces using Go to generate the join sections. Figuring out the right tolerance takes some trial and error.