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


Introduction to Parametric Customization

by txoof Dec 16, 2015
Download All Files

Thing Apps Enabled

Please Login to Comment

Really cool idea to introduce variables! I wish I can use this ... may be create a lesson in german for that. ;-)

Comments deleted.

lesson one went fine.

I got to lesson two and the link provided ... https://www.thingiverse.com/download:1878740 ... is giving a 404 error. I am going to skip over lesson two for now and move on

Does not work! I lost time and stuff! The cover is too big and does not fit. They should check the projects before sharing!

Glad you enjoyed it enough to comment. Feel free to download the code and have a play. It's all editable.

You're welcome.

Ran into the same problem - the lid is too wide (won't fit in slide) and too long (doesn't subtract back wall thickness from length). Also, lid should have a slight corner radius to match the box, otherwise it won't close completely.

My newbie solution (just got my first printer a week ago) was to import the Customizer-generated STL to Tinkercad, separate the box and lid into two separate STLs, and then make the necessary adjustments.

My first use is as an enclosure/cable strain relief for an in-line 5v-to-12v converter that lets me run a computer fan off of a USB port. Again using newbie tools (Tinkercad), I just modified the short walls of the box to make cutouts for the wires. A knot in the thinner wire and a tie wrap on the thicker one create the strain reliefs. 100% happy and I learned a lot in the process!

Check out the attached pictures of the final product.

I will definitely revisit this project after I learn to speak OpenSCAD.

Perfect to beginn with OpenSCAD - Thanks :)

Perfect to beginn with OpenSCAD - Thanks :)

Comments deleted.

A lot of info around this rectangle. This project is worth of 10-15 minutes of designing actually. I mean nothing is wrong with designing a BOX, but it's so simple, not worth naming it a "project" in my opinion. It's a box for God's sake lol. How does thingiverse pick "featured" designs I wonder. I think they pick the easiest that they can print for money :)

You're right! It is simple! I wanted to make sure anyone could jump right in to the code and have a play.
What would you change to make it better? Feel free to modify and remix it! If you want to give it a try, I'd be happy to give you some pointers or answer any questions.
Happy making.

I think you completely missed the point of this project. Think about it.

I may have run into a bug. I used the Customizer to create: https://www.thingiverse.com/thing:2377120 and the dividers are not attached to the base (verified in Cura and Slic3r). I didn't notice until the print was in progress but enough plastic drooped into the gap that the box is still usable. There were 3 layers at 0.2mm (0.6mm gap) from the end of the base to the start of the internal dividers.

I'll put a warning on the model but leave it around for a week or two in case you want to have a look.

Very nice project and a funny reading! Thank you!!!

The print quality in those screenshots looks terrible :-/

You're right! I never did get my old Thing-o-Matic dialed in 100%. I'll post some better pictures if you provide them.

Thanks for your introduction

The lid would print so much nicer if it was flipped. I use F360 to separate the mesh between lid and box, export them out as separate files so I can flip the lid. Flipping the lid also makes a nicer looking top. Just a suggestion.

Agree, flip and separate the lid. I don't want to loose time with coding.

Time spent learning is never time lost! If you do decide to take a crack at the code, and get stuck, I'm happy to help!


Great idea! The point of this thing is to teach you about OpenSCAD. I'd encourage you to try to adjust the code and make this feature a reality! There's a module lid() that you can adjust.

Let me know if you need any help.

Hah i was the guy hew gave this the 1112th like

wow that is impressive

Thanks for sharing this code and with good comments. I was able to go in and add a few features to put the lid on the same plan as the box and also put the thumb slot on the other side of the lid.

I'm glad to hear you could work with the code.

Have you published your code on Thingiverse? I'm always excited when derivatives show up.

The lidSnugness parameter must not affect opening size but must affect lid size. I think so because change opening size leads to thinning of the wall. Furthermore the nozzle size affect overall dimensions reducing inner and increasing outer sizes.

Take a look in module lid() and feel free to make the changes.

I tried to document the code in such a way to make changes easy. Let me know if you have questions or need some advice. I'd love if you posted a derivative and improved work.

i'm a parametric drafter / programmer so I skimmed over this just to see what it contains and I have to say: a difficult job well done. Thanks for taking the time to share your knowledge!

It's my pleasure. What software do you work in? I'm curious to move out of OpenSCAD and into something more robust, but not sure where to go next.

Mostly Inventor ;)

A really great tutorial. Thank you.

By my side, I've just printed the box (in ABS) and not for using it as pills box. It's perfect, except that it's lid is a bit larger than the box. I will ajust it. Have a nice week end.

Great tutorial! Thanks for all your work.

PLEASE NOTE! Make sure you use a food-safe filament like PETG, as many filaments (PLA, ABS, etc.) are not food-safe.


Says here pla is used for food packaging and disposable tableware.

PLA, the material, is used for food-related things. PLA, the filament, often has non-food-safe chemicals added, and is very porous. This means it'll pick up bacteria after its first use and be very difficult to sanitize after that, meaning if it's safe at all (re: aforementioned checmical additives), it won't be for long. Generally speaking, don't consume things from 3D printed PLA.

any way you can make the lid and the box an option in customizer ? Just saying as i run out of printer bed space when trying to make a large box. If i could print the lid and box separately it would solve that problem. Thanks.

You sure can! Download the OpensSCAD code and take a look inside.

You'll find a few different modules. One is called "lid()"

You can run that module separately. There is another that builds the box. All the customization happens at the top. You'll probably notice that the Y dividers are broken. That's on purpose. It's up to you to fix them!
The attached lessons are pretty much all you should need to get going.

Let me know if you have questions. I'll do my best to help.

When wall thickness is less than 2, then the box and the lid are not on a plane and are hence not printable. Please fix this.

I'm in the process of fixing this. Thanks for pointing it out.

I hope you took a look at the code and learned something interesting.

Sorry to hear you're having trouble with this design. It looks like I made an error somewhere in my calculations.

Thanks for noticing! I think I know what the solution is, but you're welcome to take a look at the attached lessons and give it a shot too! That's the beauty of parametric design!

I suspect the problem is around lines 240 and 130. The rest of the math look good. See if you can figure out what the problem is. I suspect it will be very satisfying if you sort out the problem for yourself. After all, this Thing is all about learning something new!

The only thing that made my spidey senses tingle is that you might consider referring to variable scope in a way that introduces the student to instance variables. This is an important distinction should the student later study object oriented languages.

Indeed that is a good point! I never formally studied CS and so my technical knowledge and ability to describe such topics is a bit weak. I personally am a little unclear about what makes OpenSCAD different from a language like Python. I understand that OpenSCAD does all of it's calculations ahead of time, but other than that I don't really appreciate how they are different in a meaningful way.

If you have a suggested edit to make this more clear I'd really appreciate the help!

Aside from the fact that OpenSCAD assigns variable values at compile time rather than at run time, I don't think there's any difference. Local versus global variables behave the same way they do in an object oriented language. (99% sure on this; I usually name my local variables differently anyway, just to avoid confusion.)

I think what he's saying is that he'd like to see more clear explanation about variable scope in your (awesome) lesson content, not that there's an error in the way it's implemented.

Ahhh! That's what I thought. My understanding of variable scope is functional, but I'm going to need to do some of the hard thinking if I add this to the lesson.

Great stuff. What age can this be used for? Im teaching junior high

It was written for high school kids in a self paced class, but I imagine 6-7th graders could cope with enough help.
Let me know if you use it.

Nice box! I had to re-size the lid separately, but I'll get it at some point :)

First of all... great customized box. Love it. However, there is an issue with the lid. The angled edge is going the wrong way and if you print or use the customize app, it will also be wrong.

Please note that the lid pints upside down within the reference frame of the box. This is to provide a cleaner slot for the closing tab. The angled edge is under 45 degrees for most reasonable customizer settings; most printers should manage this without trouble.

Whoa! Talk about going the extra mile to write out multiple days worth of well thought out lesson plans. Bravo!

Wonderful work ! Very well done !

Thanks for the compliment. If you use my tutorial with a class, I'd love to hear about it!

This tutorial has been great! thanks for the info. Regarding the box now, I noticed the nail recess seems to be on the wrong side of the lid! or was it just my idea? The top of the lid as I see in your pictures should be the one in the short parallel face of the trapezoid but in the file is on the long one. What i did with this was to add the recess to create a protuberance and move it a bit so it helps me to keep the box closed and i added a new recess on the other side of the lid :)

I was looking at another issue and just realized what you meant! The slot is on the wrong face!
Thanks for pointing this out!

Actually, the nail slot was originally on the side farthest from the opening due to a small catch that I built into previous designs. You basically did the same thing in your design.
Check out this (version)[http://www.thingiverse.com/thing:201304] - you'll see a slot on the "bottom" of the lid that allows the catch to fit into it. I found it mostly unnecessary as long as the lid fit was snug enough. I removed it in this version to make the design simpler and easier to understand.

I'm glad you found the instructions useful and actually created something with them. Nice work on your version. I really like that you changed the height of the dividers. A nice next step might be to make that a customizer option.

Box with Sliding Top
by txoof

Yes, I found your other design after I did my change :P
I'm taking your advice and allowing the separation height to be customisable. Actually, if you see that part of the code, it is not hidden, but i think that it was not modificable because I'm using a calculated value to initialise it. I thought that those values which were not hidden were all customisable, but that is not the case.
My next step is to provide a finger opening so the items near the end of the case can be retrieved! My fat fingers don't fin in the 1mm space I left...

I'm glad it's working out for you. I look forward to seeing your updated version.

y compartments not working.

Very astute! This box is part of a greater set of lesson plans that teach about customization, parametric design and functions.

Please see the summary for more information:

Please Note: Some features have been left incomplete as an exercise for the reader. For a complete version please see the original box with sliding lid

Box with Sliding Top
by txoof

I would appreciate any feedback that you have on the lessons if you work through them.

remove or reduce parts of guide / tutorial not related to box. :)

I'm not quite sure what you mean. The guide is not only related to the box, but rather an introduction to parametric design and some practices that will make your models easier to modify.

If you are only interested in the box, try the following lessons: 2, 4, 5. Though the other lessons will probably help you have a better understanding of OpenSCAD and parametric design.

Comments deleted.