If you’re a 3D printing power user, you probably try to fit as many parts onto a single print job as possible. Most printing software has this built in to let you do that, but [Grégoire Passault] and his team thought they could do it better with their program Plater — it’s open source too.
They decided to make Plater after designing Spidey: an open-source 4-legged robot that makes use of 22 3D printed parts. The first few times they printed this took a long time because they had to manually arrange the parts — there had to be a better way!
Plater is a fairly simple program that lets you take in a bunch of STL files, set your print bed size and part spacing and then it creates an STL with as many parts in it as it can, organized on your print bed. Then you just have to load it up into your favorite slicing program and you’re good to go.
Seems like an excellent tool to add to your metaphorical 3D printing tool-belt!
More compressed would have put 2 of the flat rectangles inside each pair of long things.
Even better would be that in addition to the flat rectangles between each u shaped piece.
Seems like it would take up 2/3 the room to do it that way
It’s an NP-hard problem, so any approximate solution is better than none. What I see looks pretty good to me.
With the defined spacing between models that would not be possible.
Does anyone know of something similar for 2d dxf files? (For a laser cutter instead of a 3d printer.)
Also looking for this sort of thing for KiCAD to panelize the PCB’s.
The term for this kind of thing (at least in the in the world of 2d files) is nesting. There’s a number of commercial packages out there, but I wasn’t able to find much for free. As Matthias_H points out, it’s not trivial to solve.
I did try http://www.mynesting.com/ which has a pay-per-use model and will give you a preview of the layout it’s chosen. You then pay a few dollars for DXF output, which is a better model for the hobbyist than an up-front dollar charge, but obviously not as nice as free :)
The following does rectangular packing:
https://github.com/juj/RectangleBinPack
I can’t vouch for performance; I have only used it a few times.
http://nestlib.geometricglobal.com/
http://www.exactcam.com/SampleNesting.htm
http://bobcad.com/products/nesting/
http://www.hyperthermcam.com/en-us/software/
All commercial offerings.
Not a lot of good 100% free ones out there. Nesting software is *hard* to write if you want to account for all of the little things you want it to do, aside from basic rectangular nesting.
Most are coy about prices. Exactcam quote over $1500
I’ve no experience beyond googling and a little playing, but have put some discovered prices on
http://veg-buildlog.blogspot.com/2014/12/nesting-software-for-next-to-nothing.html
There’s one for under $100 that works from early styles of .ai files from vector graphics software, there are some more recent plugins for Coraldraw and Adobe Illustrator from the same firm, and there’s a $100 offering for desktop plotters
http://ain.e-Cut.ru is A1 Nesting, the cheapest offer
http://Silhouetteamerica.com/ is the second cheapest
I am actually interrested in getting feedbacks on benchmarks (time and nesting quality) over these commercial software if you give them a try!
Is it important to handle entities like circles and co in the dxf export? I’m not familiar with Cncs but I guess you need drill information?
My lasercutter software currently uses colors to differentiate between power/speed settings.
And QCAD/CAM, which I’d like to use in the future, seems to use layers for that.
So if possible, it would be best if both colors and layers could be preserved.
As for the entities, I think if I explode everything in QCAD I’m left with lines, arcs and circles.
But if it were at all possible, the best solution would be if everything could be preserved. (Maybe look at the entities to get the outline, and calculate a x-y move and/or rotation, which could then be applied to the whole original dxf? After which they could all be joined together?)
I obviously don’t know much about how dxf files work though, so I could be hitting way off base here…
Ok, it seems doable actually
Could you send us some real life dxf example, with as much features as possibles (circles, colors, arcs, lines etc)?
To g.passault@gmail.com
I’ve sent you an email with some of my dxf files. Just posting here as well, in case it ends up in your spam folder.
Thanks!
Bernard
“If you’re a 3D printing power user, you probably try to fit as many parts onto a single print job as possible.”
Nope, you’d think so, but nope. If the print is a few hours long that’s enough. The risk of loosing all parts to the spaghetti monster if one fails is too great, and drawing fiddly boxes round all that with the excluder is not my idea of a good time.
This. If a single piece breaks off the entire printbed will turn into spaghetti Bolognese. I always print one thing at a time unless they have a very good foundation and I’ve run the print before.
Yep, and if you’re fully loading the board each time, the risk from running out of build platform if you start off center for some reason goes up significantly.
I hope the program takes account of parts that grow outwards as they get taller (unlike me, with my last print – I’ll just call the stepped bottom a styling feature).
The models on the printbed are for a robot arm no? :)
They probably are for the 4 legged bot mentioned in the article
Durh you got me there… at least I was pretty close – I only look like half an imbecile now :)
http://www.robotcampus.fr/wp-content/uploads/2014/04/spidey_bot.jpg
http://software.materialise.com/sites/default/files/public/SAM/Products/Magics/products_magics_magics_3d_nester.jpg
Commercial version.
similar problem is faced by auto UV mapping programs which try to place an ‘exploded’ 3d model made of triangulated sections in as small and as tightly packed volume as possible (allow rotation of parts to fit). Some literature on this. Its reuseable and problem is identical. I.e. cannot stretch faces to fit etc. UV has additional problem of needing to leave room around outside of each object and dealing with overlapping UVs and offsets. so 3d packing is subset of their problem.
bin packers work but do not allow for convex shapes.
e.g. https://github.com/pjohalloran/texture-atlas-generator
http://www.codeproject.com/Articles/633133/ga-bin-packing
Hello,
Actually, Plater is working on rasterised 2D projection of the shapes, so it may work with DXF in a very similar way, the only work tha twould be needed is importing DXFs and rasterizing it.
Maybe we could do such a thing, because it seems there is indeed no free software that achieve good nesting…
That would be absolutely awesome!
Hello,
Actualy, the core of Plater is working on rasterised Bitmaps
Hence, if we write the DXF import & export part, which is not very hard, and an algorithm to rasterise a DXF file, we could use it, this would be interresting I guess
Manually nesting parts isn’t that hard, unless you have a terrible program. It could easily be a click & drag, and it is with Cura, Simplify 3D & PreForm.
@JRDM, indeed, and an expert human operator will likely be better & quicker than any software actually
However, we did the test and there is a lot of complicated examples where it is really hard to do it quicker
Moreover, when dealing with parametric designs where the size of parts or quantity can be dynamically changed by user, having automatic process can be nice
As stated above, this is NP-(very)-hard problem, so having a good heuristic is better than nothing
I only run on delta’s so this program, although excellent, is fairly useless to me because it assumes a square buildspace. Delta’s are all circular. A problem most packers/slicers etc miss. Would be great if that was a selectable option.
I only run on delta’s so this program, although excellent, is fairly useless to me because it assumes a square buildspace. Delta’s are all circular. A problem most packers/slicers etc miss. Would be great if that was a selectable option
Hello,
I’ve released a new version with support of circular plate
Plates will not appear circular in the GUI, but the algorithm will generate patterns that can be put on circular plate
Any feedback will be appreciated!
Thank you! Do you also have a binary for that version?
I’ve updated windows and linux binaires
Thanx! Looks great! I’ll test it on my printers tonight.