3/30/2026 at 3:38:21 PM
These types of CAD scripting tools are great but always try to position themselves as an “alternative” to GUI-driven CAD, whereas in reality they are complementary. OnShape got it right with FeatureScript (https://cad.onshape.com/FsDoc/ ), which provides a very similar experience to Build123d at the scripting level. However, the insight that OnShape got right is that these scripts automatically become available as possible nodes within the history-based modeller. The OnShape UI is infinitely extendable beyond the fixed set of tools that comes with the base modeller.Build an FOSS CAD front end using something like Build123d as the extension engine, and then add hooks so the user can select edges, surfaces, objects, etc., and feed them to inputs on the scripts. The output of the script is then the new state of the history-based modeller. That would be killer
by injidup
3/30/2026 at 3:54:57 PM
I didn't know OnShape had such a feature. Will check it out!What you describe is one of the main reasons why I use Rhino3D. It can be scripted via the Grasshopper plugin, which integrates really nicely with Rhino and its primitives. Sadly, Rhino isn't open source and is quite pricy
by CountVonGuetzli
3/30/2026 at 4:18:41 PM
The fun thing is that onshape itself has a very thin kernel. Most of what you see as built in features are actually featurescript based. Onshape provides the source code for their built in feature set as a reference. https://cad.onshape.com/documents/12312312345abcabcabcdeff/w... You do need an account login ( free ) to view it.by injidup
3/30/2026 at 5:48:44 PM
Kernel here is ambiguous.. I get what you mean, but parasolid is usually the thing described as the cad kernel.by aaronblohowiak
3/30/2026 at 6:18:35 PM
You are right but I also kind of did mean it that way. I believe that Parasolid is at heart of Onshape, the true kernel. Then on top of that is a compatibility layer describing the set of low level operations available to featurescript. I'm sure that not everything in Parasolid is available to featurescript and perhaps there are some things added that are not in Parasolid. Featurescript also contains the selector/query logic for programatically picking geometry. Whether that comes from Parasolid I am not sure. I haven't worked with featurescript for a number of years now but when I did I was amazed. I managed to make an operation for taking any solid from the UI and generating customized interlocking ribbing. The idea was hollow surfboard design. It worked and I left it at that. Never built the surfboard!However the downside with featurescript and I think a big mistake on their part was to use a custom language rather than python or javascript. Featurescript is almost javascript but with some syntax changes and magic DSL's. You are also forced to use the inbuilt editor which is horrible and if you have burned VIM keybinding into your nerve endings, going back to non modal editing is horrible.
Also the discovery of featurescript modules in the community has terrible UX. It's super weird that they have such a great system but finding useful extensions is horrible.
by injidup
3/30/2026 at 4:29:57 PM
I’d love to see this. It was a frustrating learning curve for me to realize that I couldn’t STEP export work from OpenSCAD to something like Fusion.Build123d is much better (supports STEP export and import) but a tightly integrated CAD frontend would be ideal!
by rao-v
3/30/2026 at 7:38:48 PM
PythonSCAD now has STEP export:by WillAdams
3/31/2026 at 1:26:36 AM
Wait to usefully import and export STEP you need to be BREP based right? I thought SCAD’s engine was fundamentally incompatible (only really one open source BREP engine out there - OpenCascade)by rao-v
3/31/2026 at 10:47:06 AM
Pretty much, that's why for DXF export I rolled my own:https://github.com/WillAdams/gcodepreview/blob/main/dxfexpor...
(shows a DXF w/ arcs)
https://github.com/WillAdams/gcodepreview/blob/main/gcpdxf.p...
(shows a .py file for making DXFs)
See the PDF at the top level for more information.
by WillAdams
3/31/2026 at 2:01:38 AM
Yes, AFAIK you are correct that SCAD is incapable of outputting clean STEP files.by Cargo4286
3/30/2026 at 5:25:42 PM
I think most GUI CADs have some kind of API like this. In FreeCAD it's Python. In Solidworks, it's VBA or C#. I don't think any are particularly well documented or supported by tutorials.by alnwlsn
3/30/2026 at 7:17:35 PM
Solidworks has VBA macros, which (on top of being poorly documented and unstable) subvert to the whole benefit of parametric CAD. Once you're creating features with a macro, you naturally want to edit them, but you also naturally want to rerun the macro itself to create them differently. It's like editing generated code and it's not a viable long-term setup.FeatureScript is a different beast. It actually runs as part of regeneration in Onshape. Standard features (extrude, loft...) are also defined in FeatureScript, so your custom features are the same first-class citizens with a interactive GUIs and stable updates to upstream changes. You can freely mix interactive CAD and custom code by adding standard features and custom features.
by unholiness
3/30/2026 at 9:29:44 PM
> runs as part of regenerationYou can do that in FreeCAD. Performance is horribly slow in my experience, but maybe I'm doing something wrong.
https://wiki.freecad.org/Scripted_objects
https://wiki.freecad.org/Create_a_FeaturePython_object_part_...
by fainpul
3/31/2026 at 2:25:43 AM
[dead]by luckypeter
3/30/2026 at 6:38:51 PM
https://cad.onshape.com/FsDoc/by injidup