Update on my OpenSCAD frontend: it designs mechanical parts now

Nov 04, 2026 Last reply: 15 hours ago 5 Replies
Jump to replies (5)

Remember when I posted my GUI for OpenSCAD and half the replies said it was pointless? Fair enough, honestly. It was a pretty wrapper with nothing real behind it. So I gave it something to do: functional parts. The kind you actually bolt onto a shaft instead of printing for the shelf. The new version has a proper gear wizard. You pick the module and tooth count, and it drops the meshing gear right next to it, already spaced and timed so you can see the teeth engage. Pulleys for the common belt sizes, keyways that pull their dimensions from the bore width instead of me guessing, and bearing seats where you choose the fit and it writes the tolerance limits for both the housing and the shaft. That last one took forever because the standards tables turned out to be messier than I expected. The bit I care about most: the output is still plain OpenSCAD, no library dependency, and you can hand-edit the code and it reads your changes back without breaking. Anything it can't parse just gets preserved as you wrote it. Still standing three months in, so the guy running the abandonment countdown can keep his clock ticking a while longer.


I spent months trying to get parametric design to work for my own small automation project. The biggest hurdle for me was always transitioning from the virtual drawing to the actual print file. If the dimensions were slightly off, the whole mechanism failed right out of the printer. I found a real benefit when I started treating the input script not as a drawing generator but as a configuration tool. I stopped trying to make it look like an engineer drew it and focused only on the function.

I was working on a custom valve actuator housing recently. It required a very tight tolerance for the piston fit. My old setup was just setting a guess and hoping it held. Now, since the output code is editable, I can manually tweak the bearing bore dimensions to accommodate the specific filament swelling I noticed when I was running the PLA print. I found that adjusting the housing wall thickness by just 0.2 millimeters made the difference between a loose wiggle and a solid mechanical hold.

It's interesting how powerful the plain code structure is because you aren't locked into a specific rendering engine. You can run the OpenSCAD script through a different converter or even script it yourself later to automate batches of similar parts without having to rebuild the geometry from scratch every time. That level of flexibility is why I stick with this workflow.

I found a lot of value in that approach to parametric design, expecially around modular things. But when I went and tried to print a few custom mounts last winter, the biggest issue wasn't the math in the script; it was the physical reality of the printer itself. If your calculation for the bearing seat clearance is perfect on paper, it still might seize up because of the printer's extrusion width or how the print head moves. I was designing a bracket to hold a specific pressure sensor, and even with the tolerances specified, I ended up having to sand down the holes by nearly half a millimeter to get a snug fit.

My workflow is ussually less about perfecting the meshing and more about managing those practical tolerances for FDM printing. I treat the CAD model like a template and then adjust the internal dimensions based on my printer's specific movement repeatability. For example, if my printer tends to squish layers at the base, I increase the offset of the mounting points slightly in the model, assuming the print will compress it more than the theoretical value suggests.

It seems like the big jump for some people is moving from the digital ideal to the material reality of plastic. A clean script that outputs perfect geometry is nice, but if the resulting part is slightly too tight to slide onto a shaft without a file, the whole thing is useless for installation.

I'm mostly lurking here still, but this caught my eye because I've been hand-coding gears in a spreadsheet and pasting numbers into my script, wich is exactly as tedious as it sounds. The timing part especially, I always mess up the phase angle and end up with teeth clashing in the preview. Question for you or anyone really: when the wizard spaces two gears, does it account for printing them as one piece vs seperate parts, or do you still add your own backlash? I printed a pair of little timing gears last month and they fused togehter at the roots because I forgot to leave room between them.

The round-trip editing thing is what I'd want to poke at. I've had tools before where you tweak one number by hand and it silently forgets your change the next time you open the GUI. Does it keep the edited value in the form view too, or does the GUI just show the last thing it generated?

Also curious how you handled the fit tables when the standard gives a range instead of one number. I usually just print a test slug with three bore sizes and see which one grabs, which feels crude but it's saved me from scrapping actual parts more than once.

The pulley part caught my eye because I fought that battle last summer. My GT2 belt kept riding off the flange on a dust collection shutter I built, and no amount of tweaking the tooth profile in the script fixed it. What actually made the difference was a cheap digital caliper. I measured the belt width and thickness directly instead of trusting the nominal spec, fed the real numbers back into the script, and the next print grabbed the belt properly. Turns out my old belt had stretched enough that the 'stock' dimensions were a fiction anyway. Curious if your pulley wizard lets you override the belt width, since odds are whatever belt people have lying around doesn't match the label anymore.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required