r/OpenPythonSCAD

162 archived posts · Oct 2024 – Sep 2026

Random post

Hi everyone,

We are thrilled to announce PythonSCAD v1.0.0 — our biggest release so far. This version marks a milestone: PythonSCAD has grown from a promising OpenSCAD fork with Python support into a mature, first-class tool for script-based 3D modeling. We have landed 83 pull requests since v0.20.0, covering everything from fundamental API architecture to a real IPython shell, native vector math, a completely refreshed Windows experience, full rebranding, and dozens of bug fixes.

API

We have again worked hard on improving what you can do in your design code.

Polyline improvements

Polylines now participate correctly in difference() and intersection() operations ([

192

u/gadget3D•

If you want to see what it looks like when someone actually teaches parametric CAD from first principles, take a look at yokamak on Zenn (a Japanese dev-blogging platform, similar to dev.to): zenn.dev/yokamak — he also mirrors most posts on Qiita.

Everything is in Japanese, but don't let that stop you — Chrome's built-in page translator does a genuinely good job turning it into English (or whatever your native language is) on the fly, code comments included. Read that way, the series basically works as a free, ready-made PythonSCAD tutorial, not just an interesting blog to skim.

Yokamak teaches at a technical college in Hitoyoshi (Kyushu) and at a Toky

140

Without much fanfare we recently published PythonSCAD to PyPI. It was buried somewhere in a release announcement.

However, I wanted to showcase how amazing this is and how easy this makes it to use PythonSCAD in your own projects.

I've ported the awesome Gridfinity Rebuilt in OpenSCAD project by GitHub User kennetek (which is an implementation of the great original Gridfinity specification published by Zack Friedmann) over to PythonSCAD.

It is available on [GitHub](https://github.com/nomike/pythonscad-gridfinity/

100

You can find this announcement also on our website.

Hi everyone,

We are happy to announce PythonSCAD v1.1.2 "Prominentio" (*).

With so much going on since the last release, it's hard to decide what to write about first.

This release adds a number of nice features to the Python API like the new organic() mesh feature, which connects a cloud of points into a smooth, watertight organic surface. There are improvements to the MultiToolExporter (which we introduced in the previous release), which now allows exporting multiple objects into a single .3mf file. This is great for multi-tool printing! .mesh() now has an option t

80

Hi everyone,

We're happy to announce PythonSCAD v0.18.0. Unfortunately, v0.17.0 had a serious bug: the app wouldn't start on many Windows and macOS systems. We've fixed that in this release. Because we were already working on the next update, v0.18.0 also includes several other improvements — so it's both the fix and a solid update.

## Windows and macOS: App Starts Correctly Again

If you tried v0.17.0 on Windows or macOS and the app failed to launch (or showed an error like 0xc0000142), the problem was with how the installers were built: they only worked on a narrow set of CPUs. We've fixed the build process so the Windows and macOS packages now run on a much wider range of compute

81

u/gadget3D•

Hey everyone,

`loft` just got merged into PythonSCAD, and with it comes a new primitive I'm pretty excited about: **`patch()`**.

![patch() result — tube wall with tap holes cut directly into the surface]

https://preview.redd.it/qf3ynqcvuish1.png?width=1106&format=png&auto=webp&s=d4e8ee3ecdc32d2a50dc8a96f7584ec832fc9ec0

## The problem it solves

In classic OpenSCAD/CSG modeling, if you want a curved wall with holes in it — say, a tube with a couple of mounting taps drilled through — you build the tube, build the holes as separate solids, and subtract them. That works, but it gets slow, fragile, and numerically messy as soon as the geometry gets organic: curved shells, fre

70

Hi everyone,

We’re happy to announce PythonSCAD v0.20.0. The headline change is session management: the app can remember how you left off and bring that workspace back on the next launch. This is similar to what applications like NotedPad++ and Visual Studio Code are doing. We’ve also improved reliability in a few places, rounded out Python API documentation, and made small quality-of-life updates. Full technical notes are in the changelog on the release PR.

Session management (new)

v0.20.0 introduces session persistence. When you quit and reopen PythonSCAD, you can get back your open tabs and editors, **multi-window

71

Hi everyone,

There have been many releases in the past few months with smaller or bigger updates and fixes. We're now experimenting with posting release announcements from now on with every new release. This should help you follow along with the progress of the project.

Please let us know what you think!

So without further ado we're happy to announce the release of PythonSCAD v0.17.0! Here's what's new:

OpenSCAD Render Variables Now Available in Python

All OpenSCAD render variables are now accessible in PythonSCAD as well. This includes $t (animation time), $preview, $vpt (viewport translation), $vpr (viewport rotation), $vpd (viewport distance), and $vpf (viewport FOV). T

63


u/gadget3D•

Its called 'sheet' and it can be used to create a surface which established by sweeping 2 indepent variables.

Simples case might be this one:

Simple sheet with constant hight

But this can be arbritary extended

Car Tire

This could be a solid car tire. its closed by i and j variable.

This is basically a rotate_extruded lisajous shape.

Look forward to testing more fancy shapes

63

u/Alacritous13•

https://preview.redd.it/8626ov4g8bif1.png?width=1918&format=png&auto=webp&s=9ff32752e10faaba4dbc6d5687ac6851a437391e

https://preview.redd.it/xnh9djel8bif1.png?width=1918&format=png&auto=webp&s=de1e113c8211c7866ae155b840efcd2bba8a5577

I've spent several weekends rebuilding one of my prior OpenSCAD projects in PythonSCAD. After a very late night I've gotten it fully rigged with inverse kinematics, something that was straight up impossible in SCAD and was what forced the switch. I need to clean it up into a usable toolbox, but its promising to be significantly simpler to continue expanding on than the SCAD equivalent had.

64

u/Alacritous13•

My OpenSCAD code tends to have a lot of vector math in it. While I was setting up my first PythonSCAD project I came to the realization that Python can't do vector math the same way as OpenSCAD, at least not intuitively. Looking around, it looks like numpy is my best bet for doing vector math, but every vector needs to have tolist() on the end of it or it can't be interpreted.

Here's a simplified example of what my OpenSCAD code might look like:

vec_n=vec/norm(vec);

scalar=12;

translate(scalar*vec_n)
cube(5,center=true);

And here's how I got it to work in PythonScad:

from openscad import *
import numpy as np

vec=np.array([5,4,3]);
vec_n=ve
619