MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


The Ultimate box maker

by Heartman Jan 13, 2016
Download All Files

Thing Apps Enabled

Please Login to Comment

What is wrong with Customizer? Within seconds of opening customizer, it says, "We're sorry, but something went wrong." It is completely impossible for me to customize this thing. What can I do?

Comments deleted.

I saw this ages ago And struggled to find it again. I was sick of trying to find boxes to fit my projects neatly. This works a treat simple and also very flexible. Thanks for the file

Comments deleted.

Hi everyone!! Please read the red coloured text about the Customizer being out-of-order !!! It has not been working since early 2018.
You have to deal with this in SCAD.
Do the work and learn something in the process please and stop asking questions that have been answered in the details of the project.
Sure it is going to take you alittle more time. And that, my friends, is life as we should anticipate it.

My highest gratitude to Heartman for offering this incredible parametric box. I have used it to great effect three times so far and will now learn SCAD to make my fourth.

AND !!!! Don't forget to show some appreciation and tip the designer regardless!!!

Love and light to you Heartman.

I fixed a whole bunch of little issues with this box, added some cool new features, and released it over at https://www.thingiverse.com/thing:2938921 It's still customizable, perhaps even more so, with new options.

Customizable revised Ultimate Box Maker
by jbebel

I clicked the "Open this in Customizer" link and I get a "Something Went Wrong" error. Anybody else?

Same here. The customiser has been broken for a long time now.

Fantastic! Great work, Heartman. Now I just need a project that requires a case. Any suggestions/sample applications you can recommend to test drive the app? Thanks for your hard work and a great app.

Love this! My first attempt I wanted to open the STL in tinkercad to check it out and end up with (I think) some PCB remnants even though I have the PCB feet turned off. Is this a STL export issue or a tinkercad issue?

In the customizer I have this error: "We're sorry, but something went wrong."
I have not set any value and even if I change a value I get this error


my, with openscad, generated STLs are always looking like this. What i am doing wrong? Tryed the newest OpenScad and a 11/2016 version.

Also during slicing i get errors like "unable to close loop"

your desing its wonderfull, i love it.
I made a small upgrade on the scad file to put a fan grid on top cover and on back panel, all of them with parameters on fan size and drawing
Do you want the this update?

thanks a lot

The Customizer doesn't work with this thing. What do I wrong?


You didn't do anything wrong.
Check the red text in the "thing detail" tab.
you will find the explanation and solution.

Have a nice day...

I did not use it so far.
Just found it today and "played" a little bit around.

I will test it at home ... but I already love it.


Thanks for posting this great model.

The computation of the filet doesn't seem right. The inner filet should have a smaller radius to maintain the thickness. See screenshot here with Filet=10 https://i.imgur.com/AMqW1NH.png

Excuse me. Did not see earlier V105.
It is also possible to make fastenings inside the front panel for fixing one or two LCD displays. Or other details?

How to add an additional board 2, a board3, a board4? Or additional legs for boards? How to propagate a PCB?

How to add an additional board 2, a board3, a board4? Or additional legs for boards? How to propagate a PCB?

Sorry, I need help, I have this error on customizer. why?
"/usr/local/bin/openscad/openscad: error while loading shared libraries: libCGAL.so.10: cannot open shared object file: No such file or directory"

There is an error with the Customizer and i don't know how i can customize the object!


Please, read the previous messages and answers I wrote

Have a nice day,

just installed open scad

get the following when opening the file

Parser error in line 155: syntax error

ERROR: Compilation failed!

any ideals


I'm not using Linux,
the only advice I can give is trying with a newer or older OpenScad version,
depend of yours.


Comments deleted.

You're welcome,
but why this link?

I keep getting the error:
"/usr/local/bin/openscad/openscad: error while loading shared libraries: libCGAL.so.10: cannot open shared object file: No such file or directory"
What am I doing wrong here? Thanks

Hi guys,

Maybe something wrong with the customizer code server side, it's between the makerbot's staff hands.
As said in the comments, you just have to download OpenScad and open the file within the software, on your computer,
you will see it's more user-friendly, and you will be able to setup your box easily.

Have fun guys ;)

Same error for me

Same here... tried different browsers, pc, tablet, no luck.

Very nice job! Thanks for sharing it. The cases print very nicely. Your openscad code is very elegant and clean. I will be able to use this case maker for several home projects. This is probably the most useful file I've downloaded from Thingiverse.

Thanks for your kind comment, very pleasant.

don't hesitate to post your models made with.


Awesome. Really useful for various electronics projects and repairs.

Also, you probably just put The Container Store out of business in one fell swoop ;)

Thanks Korbon,
about the stores... yep, I admit, this is the goal... :)))

I downloaded the OpenSCAD and learned something new, apart from looking in on another piece of wonderful software. I also had to manually install my printer for Cura and Repetier Host. For a relative newcomer this is a great little exercise. So I am fine with the Customizer being down. Day 6 I wonder if still it is down. Poor guys, and just before Xmas

Comments deleted.


Download the file, and open it through OpenScad, you will have the same in a better way.
and to have just the piece you need, just turn off ( 0 ) the switches of elements you don't need, and keep On (1 ) what you need to export.


It was very kind of you to reply considering you are building a house. Exciting I know, I have done it myself. We'll call it a total rebuild on pre-existing foundation..:-)
. I deleted my comment because I appeared so lacking of insight, and curiosity, the prerequisite availing oneself of all resources.
Of course I did exactly as you suggested, Very nice introduction to OpenSCAD
I have a new box underway for a DIY power supply and Hakko soldering PCB with STC controller and firmware. Gosh knows I have been trying for some time now......Excellent
There will be a little something in your Christmas stocking

Great job.
Thanks a lot.
Will give it a try for a power supply soon and looks promissing.

Thank you very much for this.

Thank you very much for this. It is a really elegant solution. My project requires a box for 3 boards, so I modified your code to do 4. I was hoping you could add the modified file to your file list so others can have access to it.

Hi Richard,

Thanks for your contribution, it's very appreciated.
As said somewhere in the messages, actually I'm really busy on another big project.
I have to add some additions/corrections/requests made by the contributors including yours,
soon as possible.
By the way your code is not complete, it miss the modules (02/03/04)

Again thanks for sharing your addition.

Sorry about that. I uploaded an earlier version that was halfway between changes. It is now correct.

Incidentally, for anyone using V105, if you are comfortable changing the code, you can easily change the code to do as many boards as you like. So if you need 5 boards, just copy and paste the code that creates the individual boards.

Thank you so much for this. At the end of the day, project boxes are cheap. For myself, it's far easier to run down to my local electronics store and grab one off the shelf then to print one. One the once I get it home, so much time goes into making the case work for my PCB, getting holes where I want them, drilling and filing...

I'd never used SCAD prior to today and I've certainly never used code of any form before today. But I'm currently printing out my first enclosure to suit an amplifier I've built. It did not take very long at all to modify the SCAD code to what I wanted.

Again, thank you so much.

Nice project! It would be nice if the code generated separate pieces all at once, rather than having to export it piece by piece. The all-at-once current scenario exports an assembled box, which isn't printable, of course.


Guys, I'm sorry if I'm not answering technical questions actually I'm really busy, I'm building my house, no really time for the coding stuff.
thanks my friends for your interest, soon as possible even it will be too late for you, I will post some answer or adding modifications proposed by the followers.

Arcmatt, I just added the html < img > tag with a pic I hosted on my server, you can use it as you want .
the syntax is like this just leave the / in the open tag < img >

</img src="http://heartygfx.free.fr/Thingiverse/Stick_New.png">


I like the box.

Question: In your Summary, how did you add the little red flag that says, "New"?


I'm a total and complete noob. Is there any way to add another set of PCB feet so I can put both a 3D printer board and my Raspberry Pi board in the same box? I'm sure there is some really super simple way of doing this. I know I could probably put one board on top and one on the bottom, but I would like both on the bottom.

You have to learn a bit and stop being a noob, but when you start, you'll find it's easier than you think. Just expect to spend a while until everything starts to make sense.

Download the .scad file, download OpenScad and install it, then open the .scad file.

Near the top, there are several sections in which you can change the values and play with : / [Box dimensions] / down to / [STL element to export] /

BTW, I'm planning on doing the same thing - my current project is made up of 3 boards. If you really don't want to spend the time, I may post my mod on the site, maybe as a remix.

Now this part won't make sense to you at the moment, ignore it for now because until you have learned more, it will just confuse and frustrate you, and might make you give up. Come back to it when you understand Openscad a little better.
The PCB feet are done in a section called "module Feet()". Right at the very end is a section that starts with if (PCBFeet==1)
These two sections can be duplicated to make two PCB feet. You don't have to stop and 2 boards, you can have as many as you like.

If you do this successfully, please upload it for others to use, and when you do, please ensure you give Heartman credit for his hard work. Of course, don't hesitate to credit yourself for YOUR hard work as well.

Good luck.

Thanks for your response. I've played around with it a little bit and figured a few things out but just haven't had the time to devote to it.

My needs were similar to yours - have a look at the file I've uploaded. It should do what you need. In the comments above you'll find a V105 file that does 4 boards.

After messing around with extreme values for FootHeight, I found out, that in the file U_Box_V104_Test_Cleaned.scad in line 251 this: "square(10);" should probably be replaced with "square(FootHeight);"! At least for my scenario, that fixed a bug that occurred with the feet.

THANK YOU SO MUCH for this hint! I was always missing 2 of the 4 feet in the STL file.
Actually I thing "square(FootHeight-Filet);" does make even more sense here...

I just made a customized version of the box. I used feet for a PCB. The feet WERE present in the files for the parts when the bottom of the box was deselected. The PCB feet hat to be deselected when creating files for everything except the bottom of the box.

If I use the parameter Vent = 1;, then there are problems in Slic3r.

Dec_Thick       = Vent ? Thick*2 : Thick; 
// - Depth decoration
Dec_size        = Vent ? Thick : 0.8;

seems to work for me

You could add an additionally module:

////////////////////// <- New module Panel -> //////////////////////
module BPanL(){

//                     <- Cutting shapes from here ->  
        SquareHole  (1,120,10,28,32,1); //(On/Off, Xpos,Ypos,Length,Width,Filet)
//                            <- To here -> 

        translate ([Thick+.5,0,0])
//                      <- Adding text from here ->          
        LText(1,-160,50,"Arial Black",4,"Power");//(On/Off, Xpos, Ypos, "Font", Size, "Text")
//                            <- To here ->


//Panneau arrière - Back panel

Very nice but it looks like the experimental 104 cleaned version from your site is missing a bunch of braces in the main section. I downloaded via my browser and from the Linux command line with 'wget' and get the same result both times.


You're right, the server seems to be unreacheable for the moment. I added the file here on the Thingiverse project, check it now.


thank very very usefull nice job AAAA++++++

Hello I made some modification in your code in order to avoid to have support under the fixation box legs.
My modification are below if you are interested:
{// Fixation box legs
translate([3*Thick +5,Thick,Height/2]){


                } //Fin fixation box legs

Bonjour, mon français est terrible, mais merci pour un travail aussi merveilleux.

I have a question as to how to add a hole in the top or bottom plate. I played with the code and I see that I can add a cylinder at position 50, 50 with the code below, but what I really want is a hole at position 50,50 of radius 10/2. I'd like to add this so I can mount the box and just drilling a hole seems far too easy

difference(){// hole
' #translate([50, 50, -2]) cylinder(r=10/2,h=6);

Thanks again for your time and effort with this project. It's wonderful.

Update for others:

In openscad, where the code is placed is import too. I resolved my issue by simply moving my translate code down to the end of the script

Comments deleted.
Comments deleted.

Nice project!

There is an issue however they way you do chamfers, because at resolution 1 the cylinder degenerates into a prism, but keeps the same orientation during the minkowski().

This has 2 consequences:

  • the boxes are smaller than the requested dimensions as the base / height of the prism are smaller than the diameter of the cylinder
  • the panels are only chamfered at the bottom (and are too short as well)

(It becomes very apparent when you use bigger chamfers)

```It is less elegant, but making "real" chamfer in RoundBox gives better results:
module RoundBox($a=Length, $b=Width, $c=Height){// Cube bords arrondis
if (Resolution == 1) {
f = sqrt(2FiletFilet);
cube ([$a,$b,$c], center = false);
for (y = [0,$b])
for (z=[0,$c]){
} else {
minkowski (){
cube ([$a-(Length/2),$b-(2Filet),$c-(2Filet)], center = false);
cylinder(r=Filet,h=Length/2, center = false);
}// End of RoundBox Module

BTW great job on this! Super handy. Question regarding labeling on the front panel. I noticed in your example the raised lettering is a different color from the panel color. How did you achieve that?

After further discovery, I see that I will need to export the panel without letters as one stl file and then export the letters only as another stl file. Then in my slicer select the color for each object, then merge. Is it possible to add an option in SCAD box maker to export letters only?

You can make a color change in the gcode to achieve the two colors. Prusa has a color change webpage that makes it really easy.


Comments deleted.

Hello - Nice project and very useful! I am not able to print this at Shapeways though. First, it didn't like the word that was printed. Then it gave an error saying that "Escape Holes Not Big Enough". Do you know why?

Not sure about the word issue, but the other error leads me to believe you chose a service that uses resin printing. With resin printing, you need to have escape holes for the unused resin to drip out of back into the container. Hope that helps


I never used Shapeways services, I don't know at all what it means.
if you can show me some screen captures, maybe I will be abble to give you an answer.


Please read the other comments, or the watch the animations published on the "Thing details" tab.
you will easily understand.


Nice project! Congratulations!

Thanks for your comment, really appreciated.


I don't get it. How does it make boxes. What does it even do?


I don't really understand your question,
can you be more specific, I will try to answer as well.


I don't get how it makes boxes

Did you watch the animations below to see how that work with the customizer?

I don't know how to run it !!

How can i get interface !!!

I upload code Inside openscad. but what to do after !


in openscad all what you have to do is, changing the values of the named variables
on the top of the code, (all variables are commented)

you have 4 sections where you have to change what you need:

/ [Box dimensions] / <-- as indicated you put the box dimension there

/ [Box options] / <-- there you setup some options

/ [PCB_Feet] / <-- if in option you set the PCBFeet value to "1"

/ [STL element to export] / <-- there you choose which part of the box you want to export (do it part by part)

in OpenScad, press "F5" to preview what you changed
then press "F6" to view what you will export,
then press the "STL export" button to save your STL file that you will print.

Feel free to check the animations I published to see how it works.

Have fun ;)

Comments deleted.

Hi, nice work with the Panel Maker, but I have a question. How do I make a square or a hole in the back panel, is it even possible?

Regards roamer


Don't forget the front and back panel are the same, there is not really a back or front one.
Design a panel that you will choose to be the front
and design another which will be the back one... that's it.


How do I launch Panel maker, is it within the Customizer and I'm not seeing it?


My friend, the release including the Panel Maker is not on the customizer,
scroll down on the "experiement" area and you'll find the link to download it.

you can only use it through OpenScad, check the animation you will see it's really simple.

Have a fun


This is a great project! Thanks! It will be very useful for me.


Thanks, and thanks for your comment, it's really appreciated to read some kind words.


Hmm, tried to use the online customizer and it just "Timeout::Error: execution expired" on me. Odd.


it's certainly a short online error, refresh and that will be ok.


Yeah refresh didn't work, I had to wait half an hour or so for the problem to go away.,

Maybe you have some tool blocker on your browser.
anyway, this problem is between your browser and the Thingiverse website, not the script.

Otherwise try with another browser, Chrome, or IE, or FF.


So, I've played with this, and while I love it, I cna't make the PCB feet work the way they should with your code. By default, they're a seemingly random 13,12 off from the origin. Not a big deal for large boxes, but really a pain if you're trying to make a box for something small, like a single relay.

Also, you have a nice filet on the feet, but they're set well below the inside surface of the box. I re-wrote the feet sections to correct this.

With this altered code, the PCB feet will be raised up so they sit exactly on the surface of the inside of the box, regardless of how thick the box is. No more making manual adjustments. Likewise, they'll be moved in the X and Y directions 'just' far enough to account for the thickness of the box, the size of the PCB post (including the filet), and even the tolerance for the end plate. Adjust it all however you want, the PCB feet will start out as far to the o,o corner as they can. (this does not account for the filet of the outside of the box, so if you have very round corners and very thin walls, you might have to move them +y to compensate, but you'll still be starting from a sane location)

One last note before I post the code, this came from the 'Ultimate Panel and Box maker' linked in the description, rather than the one for download under 'Thing Files.' So, if you want to use this code, you should probably add it to the one in the link, rather than the one here.

/////////////////////// - Foot with base filet - /////////////////////////////
module foot(FootDia,FootHole,FootHeight){

        //translate ([0,0,0]){
            cylinder(d=FootDia+Filet,FootHeight, $fn=100);
                                        circle(Filet, $fn=100);
        cylinder(d=FootHole,FootHeight+1, $fn=100);

}// Fin module foot

module Feet(){
//////////////////// - PCB only visible in the preview mode - /////////////////////

%square ([PCBLength+10,PCBWidth+10]);
    %text("PCB", halign="center", valign="center", font="Arial black");
} // Fin PCB 

////////////////////////////// - 4 Feet - //////////////////////////////////////////

} // Fin du module Feet

Hi, Veedubb.

Thanks a lot for your interest, I'm super glad to see someone helping to improve the script.

Acually I'm not at house and a little bit busy,
I will check your addition later, (I don't know when to be honest but I will, for sure)

Thanks again, I'll keep you informed when I will do something.

Cya ;)

Hello! Actually you app seems great and really convenient, but I'm having a problem to open the boxes made with this software, is there any advice you can give to avoid the bottom and upper side to stick together?


As said VeeDubb,
you just have to select "no" for the elements that you want to hide, and keep the "yes" on the pieces you want to export.

Thanks a lot for your comment.



Thank you! I'm actually doing that and the boxes look really good!

You can select which pieces render. Just render the pieces one at a time, and export each piece to .stl as you go. You'll end up with 4 separate .stl file.


Thank you for your reply, it is very straight forward way to solve the problem!

Great project! However, I'm very confused by the PCB foot location. Using the dimensioning sketch provided in the description setting the PCBposX and PCBposY both to zero should put the first pcb mounting on the axes correct? However, if I do this either in the customizer or in OpenSCAD the mounting hole is significantly offset from this position. If use my calculated origin the drawn PCB sticks way out of the back of the box. Can anyone offer guidance?


This script is not perfect so far,

I had to make some choice, in order to have something generical as possible.
I prefered to leave a distance between the box wall and the legs, first because it's calculated from the hole leg center
not from the PCB border.
second, because of the foot filet.

I wish to improve the ultimate box maker, but honestly it take a time, that actually I don't really have.
sorry for the moment to not really help you.

Thanks a lot for your appreciation, it's very pleasant to read.

Have a nice day.


Nice, very nice. love how this works. It's my 2nd day with my printer, I've downloaded openSCAD, tried to play with it, but too excited about printing stuff then to learn the software. But you nailed it!!!! customized boxes is a bit plus..I must admit, either i'm meticulous with install docs, or I got lucky, the printer was assembled in 5 hours, and printing properly took about that 5 hrs. but been printing and experimenting since. good way to spend a snowing weekend.


thanks for your kind comment my friend.
I'm glad to show that project can help our community.


Hello Heartman, I'm experimenting, studying and having fun with your GREAT script!
Please could you explain a couple of constructions I can't quite understand:
1) In "fixation box legs" what's the need for the last "cube" (a bar de facto) joining the two legs that is then subtracted from the hexagons?
the hexagons are joined in the lower part (or upper part) by the side of the shell: why that subtracted bar?!? Morever the bar doesn't intersecate with hexagons: what sense has such subtraction?
2) There's a reason for the large dimension of the cube used to cut 45° the legs?


Sorry for the late answer, I'm far from my house actually.

I had this kind of question several time, I planned to explain that with a CG image which will show what is where.
As I said I'm not at house for a couple of time, I will do that soon as possible.

Sorry to don't really answer to your question.

Thanks a lot for your comment.



Merci pour le partage et surtout en français, ça fait vraiment plaisir de trouver un partage d'une telle qualité.
Je ne connais rien à OpenScad

Je dois réaliser une boite de 420x420 intérieur et 65 mm d'épaisseur (intérieur), relativement étanche.
Je veux utiliser une plaque (toute faite) pour les 2 faces de 4 mm d'épaisseur.
rajouter un joint souple à l'intérieur de la gorge, avoir un raccord complet sur toute la largeur et vu mes dimensions, diviser le pourtour en 4 modules et non 2.

Par rapport au fichier OpenScad, je ne trouve pas comment faire des rails plus long pour rajouter le joint.
est-ce que l'espacement entre les rails dépend de Thick+m ou seulement m?
Je voudrais également avoir une languette de fixation sur toute la largeur (de rail à rail) et non pas 2 petites languettes, comment dois-je modifier le fichier?
Et enfin, comment diviser par 2 le nombre de module, globalement pour avoir 4 L et non 2 U?

Pouvez-vous m'aider?

Merci d'avance. Je vais essayer de comprendre un peu mieux OpenScad.




Je ne suis pas dans mes lieux actuellement, et ce, pour quelques mois.
Je ne puis aider, navré.
Ce que je puis dire, c'est que les paramètres permettant de donner une marge aux rails est la valeur de tolérance "m",
faites donc un essais avec.

Et merci pour le commentaire.

A bientôt,


Comments deleted.

Hi Heartman, let me congratulate for your GREAT project! It' very useful and very easy to use!!!
I'm experimenting with it (I'm newbie to 3D design and printing) and I have a question about it: why the supports for screws are on different shells? I guess there must be a reason because this makes the screws heads aesthetically asymmetrical but I can't understand the mechanical advantage to this placing.

Hi BigBridge,

I don't understand what do you mean by "different shells"
give me more information, I will try to do my best to explain.

..and, thanks a lot for your kind comment ;)

Sorry for not explaining clearly!
I mean the "wings" for the screws are so positioned: 2 in a side of the top shell and 2 on the other side of the bottom shell. This leads to a couple of holes for the screws not aligned with the couple on the other side: only aesthetics.
But if you made it I guess there must be a reason for not putting all four "wings" on the bottom shell: I'm curious to know why, that's it!


Ok, I understand your question now,
The reason is simple,
when I started this project, I wanted to make something simple as possible,
except if you add the PCB feet, the top and bottom shell are the same
(just assembled in mirror position), also the front and back panel,
in order to export one of each element, and print them twice.

Another advantage is,
when you print the shells, you can print them in different colors, and mix/switch them as you want.
In one word, "modularity".



Great work - prints and fits together well. Thank you for your hard work

You're welcome my friend.
Hope to see some pictures of your enclosure.

Have a nice day,


Following your gif video I got error when adding "SquareHole (1,20,20,15,10,1);" to your file U_Box_V103.scad using OpenSCAD.

Error reads: "WARNING: Ignoring unknown module 'SquareHole'"

What did I miss?


You are not using the good file.
The V103 is the code for the customizer, it didn't include the Panel Maker part.
You will find the link for the V104 release in the bottom page.
scroll down to the "Experiment" chapter and download the version described on the animation.


Ahh, thx :-)

Now it worked ;-)

You're welcome.

Have fun, and don't hesitate to show us your boxes.


I made a really nice project box with this. And it got me interested in OpenSCAD :)

Now to find some short self tapping screws.


I saw your box, nice job.
I gave a link below in the comments,
for the screws.

And about OpenScad, yep, you can really have fun with it.


I'm on my 6th and 7th enclosure now and love love every single one of them. Everything from PCB enclosures to power packs for power wheels I've built with these enclosures. Thank you so much for all the work put into this box maker. :)


it's so pleasant to read such message, thanks a lot.
I am very happy that this application is useful.


Thank YOU my friend!

I am reading the comments and see a lot of interest with the panel designer.. sort of reminds me just how useful my laser cutter is, as sometimes it's easy to take things for granted when you use it for such a long time.

I made some pretty interesting panels by just laser cutting the holes for wires, components, switches, etc..

I've already uploaded a few makes, but there's more photos I need to upload regarding the laser cut panels. In fact, on one enclosure I replaced the printed panels with laser cut & engraved acrylic panels. Photos will be up soon!

First of all, thanks for sharing!
I had to design an enclosure for an open frame power supply.
Taking your design as a basis, I added some other interesting features:
Cool PCB Enclosure
I hope they will be useful!

Cool PCB Enclosure
by valba


Nice work my friend,
I encourage all such initiatives.
Keep going this box maker grow more and more.


I added together this with this thing https://www.thingiverse.com/thing:9347, epic, thank you : )

Round corners for Openscad - Tutorial


You're welcome ;)

we are actually building an open source brain computer interface www.brain-duino.com, so I wanted to ask about your license, as u stated not for commercial use. so it wouldn't be ok with you if we use it to show our device ?

we use the license CC-BY-SA


Nice! I'm glad to see this project can be integrated with yours.
As I read the licensing, I can keep it in no commercial using,
and with my agreement you can can integrate it with your own license.

If I'm not wrong, then you have my agreement.

Keep me informed.


Hi Heartman,
Thanks for your work, It's excellent.
I found a minor bug in ventilation part. when we set Vent=1, the exported STL has some problems, specially the Slic3r cannot open the file.
One solution is to change "1" to "Thick/2+0.1" in translate sentence of ventilation code, and the result will like below:
translate([(Length-10) - i,-Dec_Thick+Dec_size,Thick/2+0.1]){
translate([(Length-10) - i,Width-Dec_size,Thick/2+0.1]){

I appreciate your work.


I'm glad you like it.

Thanks for the feedback Amin,
I will add this correction soon as possible.


Hi Heartman , what type of screws do you recommend? , BTW is it me or there a problem with the customizer?? I had to install openscad to use box maker as the app keep getting me errors.


I use this kind of screw : http://www.ebay.fr/itm/400716099903?_trksid=p2060353.m1438.l2649&ssPageName=STRK%3AMEBIDX%3AIT
it's better to clean the hole, by re-drilling it.

I didn't see anything wrong with the customizer, can you tell me more about, or show a capture?
At least, if you don't mind with Openscad, it's better to use it.


I simply get a message "error on page" , tried with explorer and chrome on 2 different computer.

Another problem too is that i cannot slice with Slic3r (my prefered) , it causes it to hang, but it is ok with Cura.
(for that problem , i used microsoft repair , and now it is ok)


I'm not using slic3r since a long time, I use Simplify3D.
I tried with Slic3r and as you I had some trouble with, but I didn't push the configuration too much, so maybe there is a way to fix that.

BTW sorry about that. My first comment should have been THANKS for such a great tool !!! ;)

Panel maker is very helpfull too!!

It's ok, and thanks a lot, I always appreciate any feedback.
About the Panel maker, to be honest, yeah, I like it too.
But it's too bad for the Customizer users I didn't find a nice way to use it online.

I really wish to see some creation made with.

Have fun ;)

Beautiful addition to the Thingiverse!!!

Best box maker by far!!

I did note one bug: the feet are always exported along with every other part. I then have to edit the file to remove the feet that are floating in the air. That's still OK, but it seems a bit unnecessary :)

Thanks again!

Wow! thanks :)

About the feet,
you can show/hide them as you want in the "Box options" tab,
yes/no switch.

Have fun CraigF,


Would it be possible to modify to create boxes with slanted front panels?

For the moment no, but I'm already thinking on a new design, on another project,
which certainly will have a option like this.


Just wanted to follow-up. We may want to have a library of "panel openings". I had modified your original scad to punch openings for chinese rocker switches (with LEDs). They take a few lines of code to add several notches for clips and alignment. I am now seeing lots of folks adding other openings. One way might be to have a list of "includable" openings and you could check for a parameter and include if true. I don't know how the customizer works but it seems that using https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Include_Statement might be just the ticket. Maybe the thingiverse people can help with the capability so people could contribute to a "hole library". It would awesome to have holes mapped to specific parts! For example, rotary potentiometers have the little alignment hole that is tough to get right! I would be happy to help if additional hands would be useful.

Your project was the one who got me off the mark to learn openscad (I'm a software engineer by trade, so very easy). Thanks for the contribution.


I agree with you Bill, it could be very nice to add hole shapes by every contributors,
to make this tool easier for all users.
To be honest actually, I have no idea how to do that, but maybe the new Thingiverse project:
we will have a way for that.
If you feel able to developpe something for, feel free to use the Ultimate box maker as you want.
I can only be happy to see this project growing with the all avalable hands.
For the community, by the community...

To finish, thanks a lot for your kind words, really pleasant to read.

Have a nice day my friend.


Hi guys,

Sorry for the late answer.

@Djojo13, Sorry I don't understand the point?

@chrismolloy, I will try to make soon as possible.

@LuizAbbadia, thanks for your comment, that's exactely the purpose of this project,
Having a total control on our projects.

Have fun my friends


I wanted to propose to split the box to make it printable on little 3D printers. I wanted to print à 38x20x5 cm piece.
So I have to split in 4 pieces ... With time, I-ve success cutting my piece with this lib. Just have to center the Ultimate Box and go !

This, for sure, is an example of very much useful Thing done by somebody that wanted to help others. Thank you very much...this is a dream for those who always needed to adjust projects to boxes...now this is the very oposite...thanks

I'm back with another enhancement suggestion...

How about making it so the panel lettering and panel can be exported separately for two color printing?

What about splitting design ?
an exemple here https://www.thingiverse.com/thing:35834
Will be great !

PuzzleCut OpenSCAD Library

it is 1 piece for me ? how do you seperate it ?

got it! :)
great box!

I love the ubox designer, and especially the front panel designer! I have a few suggestions for enhancements:
1) Allow panel design for the rear panel as well.
2) Show the PCB as a cube, rather than a square, to show height for clearance checking.
3) make the PCB like panel holes, and allow multiples, such as a power supply and a function board, etc.
4) PCB could be a little smarter and allow a board size, and hole locations relative to the board. IE my board is 5X7 with holes at [0.2,0.2] .[ 4.8,0.2],[0.2,6.8],[] holes are relatiive to board size.

Again, great design. Very well done!

Hi my friends,

Many thanks for the comments and suggestions.
I'm glad you took your time to give me some feedbacks.

In fact in many suggestions presented, I thought about,
and I think it's resolved already in another way.
Don't forget the "philosophy" of this application,
to be generic, fully customizable, but... in the simpliest way possible.

About the back panel holes, or the top shell feet,
dont forget each element is the same as the opposite.
Back to Front, and Bottom to top.
You just have to add the option that you need
and say, this is the back, or the is the front panel
also, this is the top with feet, or the bottom with/without.

That's why I added the switches "On/Off" in the Panel Maker
for holes and texts.
you just have to switch ON the Front holes/texts when you need to export
the front panel, and OFF for the Back panel,
then reverse when you need to export the Back panel.

For the feet on the top shell, again the top and bottom shell are the same in fact,
there is no top or bottom, it's your choice...

About the smart board, as I said, I tried to think about the easiest way.
The way I have chosen,
you just have to take 2 dimensions values on your PCB
the distance between the holes for the width, and the same for the length.
Then you feed the Ubox maker (love that name ;) ) with 4 values
starting point X,Y and end values, Width, Heigth.
Your suggestion needs much more...

You're right about the feet, I can use the same method as the Panel maker
to allow multiple PCB feet, and I certainly will.

I hope you understand my choice in order to allow
everyone finding this tool pleasant and easy to use without limiting the design idea.

I'm waiting your creations guys!


Nice ideas !
+1 for Allow panel design for the rear panel as well. Nice to design holes for power supply

Is it possible to have mount feets from the top case ?

Anyway, thank you so much !

Fantastic Heartman! Thanks again for the updated code. Seems to work really well.


Thanks for your feedback.
it's really appreciated.


Many thanks Heartman. Great project that works beautifully. Be nice to have cutouts for LCD's in the front and maybe a mounting option for Arduino Uno.

If you want to give me the dimensions you need, I can model one based on my enclosure. It's quite easy in OnShape. I have an Uno too, so I can add mounting supports for that too.

Many thanks for the offer Nil. I've been working with Sketchup and succeed in creating the cutouts and mounting. Heartman has also added the cutout and standoff function to his code.


You're welcome my friend.

About the Panels options, I'm still thinking about,
I'm trying different solutions.
It's not easy to make some generic options to make holes
in different sizes and positions, all of that with an easy access on the customizer.

Anyway, thanks for your interest.


I really like the box customizer. Thanks for the work. I do need to report a small bug. If you make the depth 30mm then the tab prevents the top and bottom from coming together due to the width of the tab not taking the front/rear plate ridges into consideration. Making the box slightly deeper resolves the issue but prevents me from making the depth I need without manual notching. Suggestion for future refinements: 1) Checkbox for through vents (using code below)
2) Checkbox for no vents

This is definitely my most favorite customizer!


Sorry for the late answer,

I updated the code with the ventilation holes option proposed by Ettie.
About the dimension, obviously the actual design put some size limitations,
it's not really made for the too much small boxes.


After download of the latest version of Open SCAD, it works fine.

Good job Heartman!
Easy to use, very usefull...

Thanks for sharing


That's what I expected, easy and usefull,
thanks for your words.


Super. Très bien, merci!

Took me a moment when I opened it in Customizer to realize it had French parameters!


ravi que cela vous plaise.
I'm glad you like it.


Anyone else having issues with getting the Customizer working? I am using FireFox 44.0.2 Windows shows an empty space and on Linux comes up with an error saying about a Safari fix.


Maybe you installed an anti-something or block-anything,
Try to start Firefox in safe mode by starting it with the Shift key pressed.


Just tried safe mode same thing, comes up with a fix about Safari :(

Why not trying with Firefox under Linux?

about windows, check your system with an Anti-Torjan/virus/malware.
At least try another browser, opera, chromium..

Don't give up,


Excellent Work.Keep it up with Openscad

Hey M-Al Majed!

Thank you so much, I hope to see your printed version soon.

Have fun my friend.


Good work!! I haven't even printed anything yet and I'm excited by your work here!! ...where to start!!! thank you!


Thanks my friend for your pleasant comment.



Thanks ThePest, I'm glad you like it.


1st, very good work!! Thanks.
One quick way to get ventilation to the boxes are to make the decorations go through the shell.
Easy process and can be added to the parameters as well.
some code:
(Excuse the bad variable names and where it shows Thick 2 it should be Thick multiply by 2)

// Decorations to ventilation holes
vent = 1;
// ventilation width
vent_width = 2; // width of decorations or holes
dec_size = vent ? Thick 2 : 0.6; // Thick X 2 - deciding how much to move the decorations in the y axis
dec_Thick = vent ? Thick
2 : Thick; // Thick X 2 - making decorations thicker if it is a vent to make sure they go through shell

then in code where decorations are done:

           translate([(Length-10) - i,-dec_Thick+dec_size,0]){
            translate([(Length-10) - i,Width-dec_size,0]){

Maybe you can incorporate this in your design. (after changing the variable names to make more sense)


Thanks for your suggestion.
Really appreciated.
I'm planning this way, and some other improvements.

The difficult for me actually is to add all what I want and
trying in same time to simplify the access in the front page.

I don't want to finish with a million of parameters.

Anyway, again, many thanks my friend for your help, and your kind comment.


Any way to make this so we put in the inside dimensions of the usable area, and itll scale it for us to account for the walls and baffles?


Actually no.
some electronic circuits have connectors, wires, heatsink inside the box
and outside the PCB, so I didn't want to calculate from the inside.


Hi, do you generate a separate STL for each part ? or you generate 1 STL with all and print it ?


Check the animation in the main page, scroll down to find it,
you will see how to do to save each element to stl files.

Have fun,

Was a stupid question, i found in between :) Good Job !

Fantastic !!!!! Ive been Waiting for this, LET THE PROJECTS BEGIN !!!


I hope we will see your project soon!
I'm glad you like it.


All I can say is FaaaanTastic Job! Especially for your first Openscad ! Awesome. I haven't made a box yet, but will be using yours soon!
As you've thought about and mentioned already, the only "improvements" would be to add miscellaneous hole capabilities, like for screws, fans, access ports for USB, ethernet, power, etc. and possibly standoffs strategically positioned to mount 3d printer controller boards like the Azteeg X3, Rambo, Raspberry Pi. With this being your first Openscad Design I can't wait to see what you cook up next! Thank you for sharing your design!


Many thanks for your comment LgBell ;)

Yep, I'm still experimenting some stuff,
for the moment it's not easy to make something without having too much parameters.

Paradoxically, it is not easy to make something easy to use.

But, I'm on it.


Congratulations, good job.
Thanks for sharing.


thanks a lot Kilimon ;)

Have fun with it.


I really like this idea. do you think there is a way to put a model into cusimizer (such as a model whatever) and it to program a box that is the same shape as the model so it can fit snuggly?


If I understood as well your question, I don't think it's possible to do that.
At least to be sure with my answer, I don't know how, or if we can do that.

Thanks for your interest EOnBrony.


After uploading a newer version of Open SCAD, it works fine.
Thanks for the hint.

Nice, I'm glad to hear that.

Happy boxing... ;)

Parser error in line 108: syntax error
ERROR: Compilation failed!

difference(){// Fixation box legs

$fn=6; <<<<< is marked red.

I have 2014.3 and saw this as well. Guessing they extended the SCAD language in later versions? Is rotate limited to only having one action?

You can add $fn to commands as well as an argument, same result:

cylinder(d=16,Thick/2, $fn = 6);

See https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#.24fa.2C_.24fs_and_.24fn

The version of OpenSCAD installed by MacPorts is 2014.3.


It works for me,
just in case, I downloaded the online version to check again,
and it works.

Please try to upgrade your OpenScad version, I'm pretty sure
this is the reason of the error.

Keep me informed.


I got the same message

Awesome Job!
Small suggestion, for air ventilation some slots could be added, length, amount, position might be configurable too.

Thanks for your design


Yep, you're right, the box need some improvements.
As I said in the description, it was my first try on Openscad,
I just wanted to see how it works.

I'm still thinking about some derivations and learn in same time.

Thanks for your comment.


The measurements, is that the inside or outside?

Measures are outside,


It would be really nice to have a the possibility to choose between outside and inside measures.

Hello , i like your design , is it possible to at fan holes on side or top ? 40x40mm
it would be verry nice to use than for the 3d printerboards , also maybe som adjustable holes (usb, card slot , cables )
i am a noob on designing things.


Thanks for your comment.

About the holes, the idea was already in my mind,
I'm still thinking about, not sure for the moment how and if I will do that.

Anyway thanks for your suggestions.


Most elegant items can come in small 'boxes'. Great JOB! Top of my WOW! list.

really nice comment,
thanks a lot.

Awesome work man! Hopefully one day I can design something this spectacular! Newbie question so please bear with me. What is the best way to convert this .scad into an .stl file? Or isn't possible? Thank you!


Thanks my friend, your comment is really appreciated.

Openscad is not so hard to learn, it's relatively easy to build what you want
when you know each pieces allowed to you, like a LEGO.

About exporting to STL file, in fact, it's mostly made for that,
check the note, I added an animated demonstration of using the customizer
to export your customized box, piece by piece.
I hope that will help you.

Have fun.


Thank you very much for taking the time to address my question. When reviewing Openscad it's "The Programmers Solid CAD Modeller". It might as well be in a foreign language. I have no clue how to navigate through that software. Lets put it this way. I suck in Tinkercad. I'm that bad. Not a mechanical mind. Science oriented brain cells. ;-) Also, I'm not quite sure where the "note" you wrote. Although, Thanks for doing that.

You're welcome,

you can find a lot of tutorials about it on youtube, or elsewhere.

Anyway, the note part is under the main description page.
scroll down you will see the animated demonstration.



I found the video and it's Super cool! You made it look simple. Thanks for enlightening me. You rock man!

Thats really ultimate. Really great work !
Which renderer did you use ?
It looks very great ^^


Thanks for your kind comment.
I'm glad you like it.

About the renderer, it's Vray under 3DSMax.


Hi! pretty work.....


Thanks Ok1Xpa, your comment is really appreciated.


Hi! What is the M parameter for.
And is there any way to dump 4 separate stl files for 4 piece.


to have 4 individual pieces just set off ("NO") all other object,
just keep at "YES" the needed piece.

Ex: The bottom shell then the Back panel, then the front panel.
Otherwise if no front text, just one shell and one panel are needed.

"m" parameter is the size precision of the panels and rails,
to adjust the panels fiting well (usually around 0.5 is good)


Thanks for your comment CheetahKid, really appreciated.