Create customizable models on Maker World using Parametric Model Maker

You’ve probably seen models on Maker World that have a “Customize” button. When the user clicks it, they see a UI where they can tweak parameters, live preview the changes, and then download their customized model to print.

I always wondered how people created customizable models, and I couldn’t find clear documentation in one place that walked through the process and all the available features. I just built my first customizable model, so I documented how it worked. It’s a really cool system that opens up all sorts of new options for models.

Here’s the model that I created that shows how the end result looks on Maker World: https://makerworld.com/en/models/1250464-cute-desk-nameplate-generator-for-teachers-kids

In simplest terms, customizable models are scripts written in OpenSCAD. OpenSCAD is a free programming tool for describing CAD models as code. Maker World runs your OpenSCAD code inside their Parametric Model Maker app and displays the result for the user to download. So if you can write an OpenSCAD script to generate your model and if you can make the model parameters into variables, Maker World will let users manipulate those variables in a nice UI and download a printable 3mf file.

It’s like scripting your model’s feature timeline. If you imagine the steps you take in Fusion or OnShape to model something, in OpenSCAD those steps become lines of code. So instead of clicking the Sphere tool and then dragging out the dimension to 20mm to create a sphere, you would add a line of code to your script that says sphere(d = 20); to get the same result.

How do I learn how to write OpenSCAD scripts?

  • There are some good OpenSCAD tutorials on YouTube. This is the easiest way to get a feel for how it works and what you can do.
  • OpenSCAD has documentation and a cheatsheet online.
  • Or you can just use ChatGPT! Describe the object you want to model and ask ChatGPT to create an OpenSCAD script for you. It usually takes some tweaking from there, but it’s a good way to get started.

How do I test my script as I develop it?

  • You can run your script in OpenSCAD on your own computer as you develop.
  • Or you can run it in MakerLab’s Parametric Model Maker in your browser - you don’t even need to install OpenSCAD.

What version of OpenSCAD is Maker World compatible with?

  • The OpenSCAD project is in a weird state. The last official version was released in early 2021, but they have daily development versions that have added a lot of new features since then. Maker World seems to be compatible with the 2021 release, so just stick with the official release for now.

How do I embed my OpenSCAD script in my MakerWorld listing and get the “Customize” button to appear?

  • Create a new listing on MakerWorld but upload the *.scad file instead of a *.3mf file. The system will automatically recognize the *.scad file and add a ‘Customize’ button to the MakerWorld listing.

Do I get MakerWorld points when people use the Customize button?

  • Yes, as far as I know.

I want to customize the menu choices available to the user in the customizer. How do I control the UI?

  • Variables that you put at the top of your script will show up as editable options in the UI automatically. To customize how those options appear (to make sliders, drop-down boxes, color pickers, embedded help, etc.), you have to add special comments to your code that tell Maker World which UI widgets to display.
  • The easiest way to see how to format your magic comments is to click the “Sample Code” icon in the very bottom left of the Parametric Model Maker UI. It will load sample code in your editor that shows all the different possibilities.
  • Mostly, they follow the same syntax that OpenSCAD itself uses for custom UIs: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Customizer

For example, here’s how to create a UI widget that lets the user choose between three different model sizes from a dropdown list with Large, Medium, and Small options:

// Select which size you want
Box_Size = 10; // [10:Large, 5:Medium, 1:Small]

I want users to be able to customize text on the model. Which fonts are available for my script?

  • You can only use the fonts that Maker World has installed. Luckily, they include most of the fonts on Google Fonts. You can find the exact list of font names by going to the parametric model maker and clicking the “Book” icon in the bottom left and then clicking the “Third-party fonts” menu option.

Can I use my own custom fonts? I want to make a sick Avatar logo generator, so I really need the Papyrus font.

  • No, sorry. You can only use the fonts pre-loaded by Maker World, but they have several thousand.

Can I let the user choose their own font from a list?

  • Yes! See above about customizing the UI. Adding // font after a variable turns it into a font selector in the UI.

Can I use third-party libraries in my OpenSCAD script?

  • You can only use the specific OpenSCAD libraries that Maker World has installed, but they have most of what you might want. Right now, they have:

Can users upload logos to my script so I can emboss them on my model?

Can I create models that use multiple colors/multiple filaments?

Can I create models that use more than one build plate? And can I customize the print settings in the downloadable 3mf file?

Hope that helps! I had a lot of fun playing with the Parametric Model Maker, so hopefully this helps someone else give it a try.

20 Likes

Okay, so they recently released customizable models from fusion 360, and I’m wanting to make sure that as the text changes, what’s colored changes as well. Meaning if I change letters or add new ones via the customizer, I’m not sure how to make sure that whatever text is generated is assigned the correct color.

I’m curious in however this is set up in OpenSCAD if it works similarly to Fusion in this regard and how to do it.

They’re currently working on it.

1 Like

It is so cool!!
What about Sharpr3D? Are there any plans to support it too?

Thanks for the info, it’s quite useful.
Words of warning: I am pretty new in 3D printing and CAD modelling.

I use fusion 360 but I feel it has limitations when it comes to parameters, like generating a part depending on the value of a parameter (or suppressing features depending on a value of a parameter… or maybe I’m jut too new in this)

Does Open SCAD provide this kind of functionality?

“Provide”? Based on that would be more appropriate.

1 Like

In the free version it is limiting, the paid version has configurators - I have the free version so never used the configurators.

Some features you can hack by making them so thin they disappear, but not ideal.
Other things I have tried is having a stacking of parts which I lower down based on a height parameter, not easy to manage though. Like screw holes on layer 2 and nail holes on layer 3 then I can lower down the screw holes or nail holes. I had to have the equivalent of sprues to keep all the parts connected, think metal casting. Then I have a feature at the end to cut away everything above layer 1.

Thank you SO MUCH for this breakdown! It’s so great to have and saved me some time trying to find all this myself. I am looking to write a short blog on this topic, would it be okay to mention your information and page there and direct users here?

onshape is MUCH friendlier to use in the free tier when it comes to dimensions calculated by variables. only downside to the free tier is all documents are public.