Tooling

Programmatic / Code CAD

Code-driven CAD — describe geometry in Python, JS, or a domain-specific language and check it into git.

The "CAD-as-code" world. Trades a sketcher GUI for diff-able, version-controlled, parametric source files. Pairs naturally with Hardware CI/CD. For traditional GUI modelers see Mechanical CAD.

Python-based (built on OCCT / OCP)

  • CadQuery 2 — Python over Open CASCADE; fluent API for parametric solids, assemblies, and exports. Mature, BSD-licensed. The default Python CAD in 2026.
  • Build123d — modern successor to CadQuery (same author lineage, OCP backend). Cleaner API, improved selectors, location-context syntax. Often the new-project pick.
  • OCP — Python bindings for Open CASCADE that both CadQuery and Build123d sit on; usable directly when you need full kernel access.
  • PythonOCC — older OCCT bindings; still around but largely superseded by OCP.
  • AnchorSCAD — Python lib that emits OpenSCAD; useful if you want to script in Python but render with OpenSCAD's pipeline.
  • SolidPython2 — Python wrapper that emits OpenSCAD code.

DSL / scripting languages

  • OpenSCAD — the long-standing constructive-solid-geometry scripting language. Free, GPL. Slow on big models but rock-solid and ubiquitous; massive ecosystem of libraries on MCAD and BOSL2.
  • KCL (Kittycad Language) — Zoo's text language for CAD; round-trips with their Modeling App GUI. Newer but moving fast.
  • ImplicitCAD — Haskell-based; signed-distance-function (SDF) approach, strong for organic / lattice geometry. Less actively maintained but unique.
  • OpenJSCAD / JSCAD — JS/TS-based; runs in the browser. Good for interactive web embeds of parametric designs.
  • Replicad — modern TS library wrapping OCCT (via WASM); designed to run in the browser. CadQuery-like API.
  • CascadeStudio — browser IDE for OCCT-in-WASM scripting; lighter-weight than Replicad.
  • manifold — fast mesh boolean library (used as a backend by JSCAD, OpenSCAD's experimental backend, and others).

Hardware-specific code DSLs

  • Atopile (.ato) — newer (2023+) language for describing electrical hardware as code; compiles to KiCad. Aimed at making PCB designs reproducible, parameterizable, and reusable. Active community in 2025–2026.
  • SKiDL — Python library for generating circuits programmatically; outputs KiCad netlists.
  • PCBFlow / tscircuit — TS/JSX-based PCB schematic + layout description; React-style components for circuits. Fast-moving in 2025–2026.
  • edea — modular hardware blocks for KiCad; reuse "modules" the way you'd reuse npm packages.

Lattice / generative / SDF-driven

  • libfive — F-Rep / SDF modeler with a Scheme/Python frontend; gorgeous for math-y shapes.
  • MeshLib / ShapeWorks — Python libs for mesh ops; not strict CAD but adjacent.
  • Gyroid / TPMS generators — many implemented in CadQuery / Build123d; check community gists.

CAD with notebooks / interactive

  • Jupyter-CadQuery — render CadQuery models in JupyterLab.
  • CQ-editor — Qt IDE for CadQuery (legacy but works).
  • Build123d ocp-vscode — VS Code viewer for Build123d / CadQuery.

Pick this if…

  • Default Python CAD, new project: Build123d.
  • Existing CadQuery 2 codebase: stay on CadQuery (still maintained) — migrate to Build123d when you need the new selector model.
  • Smallest, simplest parametric DSL: OpenSCAD.
  • Browser-native scripting / share via URL: JSCAD or Replicad.
  • PCB-as-code: Atopile or tscircuit.
  • Lattices, organic shapes, math art: libfive or ImplicitCAD.
  • Want a GUI roundtrip too: Zoo's KCL (see Mechanical CAD).

On this page