3D printing support generation program in grasshopper

I’m trying to write a script that can auto genrate supports for 3d printing,
I’m using formware and when i try to auto genrate the printing supports for DLP printer(uniway exjet A5)
then formware fails to do that properly.(30-40% accuracy only)

{In DLP technology as you know experts we have to check every layer (25 or 50 microns layers)
and put supports accordingly…
and auto generation has some more problems those supports is getting interested with the model.

but I’m thinking to work on it and make a script,

so may you please guide how to do or what i need to study or which library will work etc
or if anything is already developed for this task.(except bell support (that’s good but not perfect for this task))

so pls guide me if there is any possibility.


Probably 3 to 5 years ago, before I kind-of-retired, I scratched together something for printing jewelry. It ended up being a mix of manual and auto-generation. After seeing your question, I decided to try to recreate it and maybe put a little more thought into (since I’m not drowning in projects that are all a month behind).

It won’t be the most brilliant GH solution you’ve ever seen, but it might get you going in the right direction. I’m not ready to share anything just yet, but I wanted you to know that at least someone saw your question and had time to work on it.

I also have a youtube channel, and I’m thinking it might make a cool video for it.

By the way, which version of Rhino are you using? I was going to try to do it in Rhino6, but it kept crashing on me everytime I connected a certain node so I switched to Rhino 7. I’ve got Rhino 8, too, but it’s just the evaluation copy; so, I decided to make it in 7 and it’ll probably work in 8.

1 Like

I’m happy to see your reply on this question. :blush:

I’m using rhino 7, and your supports are very close to those software (formware, chitubox, i mean your work looks realistic)

and is there any check algorithm in your script,
to check supports and models intersection (intersection in the sense, is support’s pole getting intersecting with model or not)

and please share your youtube channel link.


Here’s what I came up with. It’s probably not exactly what you need, but maybe there is something from it you can use.

I really mean mostly for the user to somehow supply points (user-created points). This can be by going into top view in wireframe and projecting points onto the floor plane (the GH script will pull those onto the object), or you could extract an iso-curve and divide it, and those points would be on the object already. I usually used the iso-curve method. But any way that you can think of to conveniently get points on or near the surface or projected onto the floor directly under areas you want supported will work. You can even draw curves projected onto the floor (sometimes iso curves won’t follow along the areas you want supported, so this can be an alternative to that).

For large expanses, the user could turn on “auto-generated points”, but these are just randomly spaced points generated in the rectangle that contains the shape of the object and then projected onto the object. There is no set distance between them (but the user can control somewhat the density of these points).

You could limit the auto-generated supports to certain areas by duplicating the object and removing everything except the part you want to generate supports for and using that section in the GH script.

I usually put large bases on my supports and rarely needed a “plate”, but the option to include one is there.

By the way, we had an Asiga printer and it came with Composer (I think that is their proprietary slicer software). Auto-generation of supports was AWFUL in that program, but manual placement of supports was actually pretty decent. I hated it at first and that’s why I kept trying to make a GH replacement for it, but eventually I got pretty handy with manual support creation in composer and usually did that. But occasionally I would have projects that my GH supports were better for.

I did add a filter to separate out “bad” supports (supports that intersect the model). That was complex. They should show up as bright red. You can bake these separately to a different layer and see what areas maybe need a custom-made support (which I often made by modeling a straight support and using flow along curve to get it shaped like I wanted).

And my youtube channel is called webduncetv. But this GH file became so complicated, I’m not sure if or when I’ll be able to make a video about it (my first attempts were much simpler).

support test z2.gh (46.4 KB)

If you are using this need as a way to get you to develop useful skills and the great satisfaction of building something yourself, I think it’s fantastic and so much could be done with GH in this regard

If you are only doing this because you need to solve a problem that formware/Chitubox cannot handle well, you should look at Lychee Slicer (Pro version). The level of control you can have combining automation, manual, projections and now even grid-based bracings (update added this month) is unmatched by the entire industry IMO. And it’s taking a handful or programmers full time for a long time to get to this level. The most important part is how responsive it is. Once you have enough complex/large objects, your bottleneck is not building supports, but having a system that can keep up with them realtime and be responsive.




I’ve updated the script. I added a two more support directions (down and adjustable, in addition to “normal”). I intend “adjustable” supports to be done one at a time to replace supports that had some issue (like intersecting the model).

I’ve also organized the logic into several groups so that people (including myself) can more easily work out my logic.

printer_supports.gh (52.5 KB)


I just saw an ad for Lychee. It looked cool. Even chitubox looks like it might have improved somewhat since I last used it several years ago.

1 Like

thanks a lot sir for your precious time,
i used this script and some supports got generated.
I’ll work on it and will send to review is that’s good way or not.
(but at the input node (that point container saying user created points {i can’t understand what does it asking for}))

pls explain whenever you are available.

Hi @Anil_verma,

That node is asking for points that you have manually placed on the surface. It is actually the main way that I intend for support points to be created.

There are several ways to get points on the surface:

  • You can snap points on the surface
  • You can go into top view in wireframe and place points where you think they will be needed and then project them onto the object (points on top of the model will be ignored if you feed them to the script)
  • You can extract an iso curve on the surface and divide it (this is my favorite way)
  • You can create a curve (top view, wireframe) and project it onto the surface and then divide it (my 2nd favorite way)

If I can, I will make a demonstration video for it, maybe in a few days…no guarantees.

1 Like

I’ll paas those points manually, I’m thinking on another way by slicing geometry and island detection, and if single island pet slice so I’ll putt some points as per overhang.

but this script will help me to do something.

(and as you mentioned for video demonstration but not sure(yes it can be happen if you will be busy in something else or other necessary works are there))