3D print nesting

I’m trying to pack as many strange shaped nodes into a resin 3d printer like this.

The print time is dictated only by the Z height, so my idea is to use gravity and collisions to shake simple parts into a box, then orient more detailed components with the same transformation. This works quite well, but it is a bit unreliable. As you can see parts intersect and exit the volume, and i’m not sure if it ever converges

nesting animation 3_small

I’m using @DanielPiker example here as a starting point

I find it works ok with a small number of mesh nodes (created using multipipe - thanks Daniel!), however it very quickly slows down with more nodes. I’ve tried tweaking goal strengths, but it easily becomes unstable, with parts settling, then suddenly jumping around again

I’d love suggestions on how i could optimize this!

My key requirements are:

  1. Faster than current attempt
  2. meshes cannot overlap (must have min. gap between)
  3. meshes cannot protrude from the print volume box (yes it can be offset inward for a margin)
  4. maximum number of parts in given z height

I’ve tried by using spheres located along the part centerlines, and this yields a similar result. I could not get the collider component to work

Only related thread i’ve found is this, but there was no attempt to solve the problem in GH

My script uses elefront to reference ordered parts from rhino, and weaverbird. I’ve tried to keep the file size small, and internalising this geometry made GH too slow

rigid_mesh_collision.gh (37.2 KB)
node_nesting.3dm (7.0 MB)

I set the Threshold to 0.01 and Tolerance to 0.001.

I would start the solver with low strength (5) on both collisions.

Using a Grab component, you can drag a part if it causes too much problem.

Once the parts have settled, increase the strength values to 1000.

rigid_mesh_collision.gh (201.7 KB)


Thanks martin, adjusting the strength after the parts have settled really does help avoid the collisions. thanks for that tip! and using grab is useful - sometimes they get stuck in strange arrangements with large gaps.

1 Like

i’ve revisited the collider method using the part centrelines. this is much faster and works for more parts than the rigidbody method. with the zombie solver i’m getting a valid solution for 100 parts in under 30 seconds. It’s not always meeting all the goals. i’ll keep tweaking

here are 70 nodes almost fitting in the Anycubic photon mono x

I’ve found that adjusting vertical load strength in relation to the other goals has a large impact on stability. lower gravity is usually better. the actual magnitude of the strengths is irrelevant.

This requires the same rhino file above and

  • EleFront, Version=

These are used for non-essential previews

rigid_mesh_collision-collider.ghx (1.2 MB)


Marking my own post as solution but it’s really the proper use of collider that solved the performance problem for me as shown in the GitHub kangaroo examples

And a cycles rendering for good measure
Support exported from lychees slicer.

I’d definitely bump up the mesh subdivisions, before exporting, unless you want to see the tessellation on the printed parts.

I’ve printed similar knots with FDM printing in the past and it worked better than expected. You have to mind the orientation of the individual objects on the print bed though and you can’t stack them like this, but you also need way less supports.

I know that some very though engineering resins exists nowadays, but are you worried about brittleness at all? Your knots look like they are meant to mate with maybe some kind of tube or something.

How long does it take you to print such a volume and which printer are you using?

Looks rad! Could be an art piece just like that. :wink:

Thanks for sharing the final definition!
I’d love to see more of this project (–> gallery?). :slight_smile:

Thanks @diff-arch , yes I do increase the subdivisions before printing. I lowered it for this example to reduce file size. I’ve printed them with fdm, but it was a bit disappointing. Support material was hard to remove, especially from holes, and I don’t think it’s possible to stack them easily.

Heres a comparison of ultimaker 3 print, and resin print. Resin prints come up pretty well after cleaning up. We remove the support after washing before curing. This makes it easier, but messy. You need to be very careful of the uncured resin. This one has been lightly sanded with a foam pad, and coated with a clear acrylic spray.

I great idea I’ll make a gallery to show off more.

I’m not worried about the strength of the nodes, since the members are themselves quite delicate. I’m using 10mm paper drinking straws, with 0.4mm wall thickness.

A full bed (z height only) takes about 9 hours on a anycubic photon mono x

The constraint I’ve not taken into account here’s is the wash and cure station. They are both smaller than the printer, so in reality I need to print three columns 60x120x235mm, rather than a single big tangle.


I have approx 60 breps. Can you please help me how to use your script?
What is nodes wireframes for?
Also I see that RefBake widgets has 3 inputs. What are they for?
What is the input requirement for origin?
Thanks in advance!

I can’t recall the specifics of the version I posted, but I think Node wireframes are lists of centerlines for each node. This process was designed for a specific kind of geometry and will need modifications to work on arbitrary inputs. The geometry probably has attributes attached so will require structured inputs from the associated rhino file (which was attached to an earlier post). If you’ve ever used elefront this will make sense. Otherwise it’s worth familiarising yourself with that way of working. The proxy meshes are low resolution meshes of the same objects for faster calculations and preview.

Did you make the final assembly? Got any photos?

Not yet! One day

Here are some photos of a project composed of 3D-printed nodes and round wooden sticks from more than 5 years ago now and printed on a friend’s homebrew Prusa Mendel (I believe that was what the printer was called).

It’s completely glueless. Everything fit really nice together and it’s super strong and way over-engineering for a contraption that was meant to sit on top of an aquarium and monitor all sorts of stats and take photos. It was for a research project.

Of course it was designed with Grasshopper, but I couldn’t find the definition, otherwise I would have posted it.


Did you do it this way… because you could, rather than because it was the best way to do it? :slight_smile:

Looks cool! I might keep an eye out for excuses to print some nodes… I just got a Bambu Labs P1P which so far has been amazing.

We wanted to explore 3D-printing back then, and the goal was to make something that looked okay, was light-weight, didn’t obstruct too much natural light from above, and from which different instruments could be suspended. There was no “best way” in many respects, just an idea and an aquarium.

Did they yet fix their thermal runaway issues? An extruder potentially running at 400°C for 3 full minutes, before cooling kicks in is a potential fire hazard.

1 Like

I hope so!