Build123d External Tools
Prerequisite: Load cad-build123d-general first — all tools below
operate on build123d objects and assume familiarity with the API.
Purpose
Before recommending a workflow change, custom script, or manual export step,
check whether one of the community tools already solves the problem. This
skill is a catalog of every tool listed on the official build123d
External Tools and Libraries
page (Editors & Viewers + Tools sections), with installation commands,
quick-start usage, and guidance on when to reach for each tool.
When to Use This Skill
- The user asks how to view / preview / inspect a build123d model.
- The user wants to generate CNC toolpaths from a build123d part.
- The user asks about Blender integration for rendering or animation.
- The user wants to share, publish, or package a build123d model.
- The user mentions topology optimization or generative design.
- The user wants to run build123d in a browser (WebAssembly).
- The user asks "is there a tool for …?" in the build123d ecosystem.
Editors & Viewers
1 OCP CAD Viewer for VS Code (ocp-vscode)
The primary viewer for build123d development. A VS Code extension that
renders CadQuery / build123d objects in a 3D panel with measurement tools,
face/edge/vertex selection, PBR materials, and visual debugging.
Install
# Option A — VS Code Quickstart button (installs build123d + ocp_vscode + deps)
# Open sidebar → OCP CAD Viewer → "Quickstart build123d"
# Option B — CLI (pip)
pip install ocp-vscode
# Option C — CLI (uv)
uv add ocp-vscode
Quick start
from build123d import *
from ocp_vscode import *
b = Box(10, 20, 30)
show(b)
Key features
- Jupyter integration — run cells, see results in the viewer panel.
- Visual debugging — step through code; all CAD
locals() auto-display.
- Measurement mode — select faces/edges/vertices and measure distances.
- PBR Studio — physically based rendering with MaterialX materials,
environment maps, shadows, and ambient occlusion.
- Standalone mode —
python -m ocp_vscode starts a Flask server at
http://127.0.0.1:3939 — no VS Code required.
- Camera control —
reset_camera=Camera.CENTER (keeps rotation, re-centers),
Camera.KEEP (keeps pan too), Camera.RESET (full reset).
set_defaults() — set per-file defaults for helper_scale,
reset_camera, transparent, etc.
Best practices
- Use
# %% cell markers with the Jupyter extension for interactive work.
- Name your
BuildPart / BuildSketch / Location contexts so the visual
debugger labels them.
- Don't use the OCP logo to verify settings — it overrides your config.
- If models are invisible, clear the VS Code browser cache (stale WebGL
shader compilation).
2 cq-editor (jdegenstein fork)
A GUI editor based on PyQT, forked with build123d-friendly changes.
Useful if you prefer a standalone IDE-like experience outside VS Code.
When to use: Only if the user explicitly doesn't want VS Code.
Otherwise, recommend ocp-vscode — it's better maintained and more
feature-rich.
3 Yet Another CAD Viewer (YACV)
A web-based CAD viewer for OCP models that runs in any modern browser.
Supports static site deployment, interactive inspection, measurement,
per-model clipping planes, transparency, and hot reloading via yacv-server.
Install
pip install yacv-server
Key features
- Browser playground — edit and run build123d code entirely in the browser
(powered by OCP.wasm).
- Static deployment — upload the viewer + GLTF models to any web server.
- Hot reload —
yacv-server watches for file changes and pushes updates.
- GLTF 2.0 — full support for textures, PBR materials, animations.
- Measurement — bounding box size and distance measurement on selection.
When to use: sharing models with others who don't have VS Code, embedding
previews on a website, or running build123d in a browser without any local
install.
4 PartCAD VS Code Extension
A wrapper around ocp-vscode that requires build123d scripts to be packaged
with PartCAD. Adds UI controls for exporting models and passing parameters,
plus AI-based generative design tools.
When to use: only if the user is already using PartCAD for package
management. Otherwise, ocp-vscode alone is simpler.
Tools
5 blendquery — Blender Integration
CadQuery and build123d integration for Blender. Import CAD objects directly
into Blender for rendering, animation, or further modeling.
When to use
- The user wants to render a photorealistic image of a build123d model
using Blender's Cycles/EEVEE renderer.
- The user wants to animate an assembly.
- The user needs to combine CAD geometry with artistic 3D work.
Note: For quick renders, ocp-vscode's PBR Studio mode may be sufficient
without bringing in Blender.
6 nething — Generative AI for CAD
A 3D generative AI platform for CAD modeling. Describe what you want in
natural language and get a 3D model.
When to use: the user wants to quickly bootstrap a shape from a text
description before refining it parametrically in build123d. Treat the
output as a starting point, not a final model — it won't be parametric.
7 ocp-freecad-cam — CNC Toolpath Generation
Generates CNC toolpaths from build123d / CadQuery / OCP shapes by leveraging
FreeCAD's Path workbench through a fluent Python API. Spiritual successor
of cq-cam.
Prerequisites
- FreeCAD ≥ 1.0.1 must be importable by your Python environment.
- On Linux: extract the AppImage, create a venv from its interpreter, add
FreeCAD's
lib to a .pth file.
- On Windows: use the 7z portable build; create a
.pth pointing at src.
Install
pip install ocp-freecad-cam
When to use
- The user wants to machine a build123d part on a CNC router or mill.
- The user asks about G-code generation from a parametric model.
Limitations
- Experimental — always double-check generated G-code.
Pocket3D doesn't work; use Surface3D instead.
VCarve can produce unstable toolpaths (openvoronoi bug).
8 PartCAD — Package Manager for CAD Models
A package manager and repository for CAD models. Build123d is the most
supported framework; CadQuery and OpenSCAD are also supported.
When to use
- Find / reuse a community-published CAD part beyond the basic
hardware that
bd_warehouse covers.
- Publish your own build123d / CadQuery / OpenSCAD models.
- Use AI-generated CAD scripts (Google / OpenAI) as a starting point.
Deep dive lives in the cad-partcad-repository skill. That
skill covers install, the full CLI (pc list / info / inspect / render / export), the build123d / CadQuery / generic Python APIs
(pc.get_part_build123d, pc.get_assembly_build123d),
partcad.yaml package authoring, AI-generated parts, .assy
assembly files, and publishing to the public index. Load that
skill when the user actually wants to use PartCAD; this tools
entry is just the catalog pointer.
9 MakerRepo — Manufacturing-as-Code
A lightweight Python library (mr) that provides decorators to annotate
build123d model functions for discovery by makerrepo-cli or MakerRepo.com CI.
Install
pip install makerrepo makerrepo-cli
Decorators
| Decorator |
Purpose |
@artifact |
Mark a function that produces a CAD model to be built/published. Optional: sample, cover, desc, export_step, export_3mf. |
@customizable |
Parametric model — users tweak parameters via a Pydantic model. |
@cached |
Cache expensive sub-builds by arguments for reuse. |
Quick start
import makerrepo as mr
from build123d import *
@mr.artifact(desc="A simple box", export_step=True)
def my_box():
return Box(10, 20, 30)
mr list # discover artifacts
mr build # build all artifacts
mr snapshot # snapshot outputs
When to use
- The user wants a CI/CD pipeline for their build123d models.
- The user wants to publish parametric models on MakerRepo.com.
- The user wants build caching for complex multi-part projects.
Non-intrusive: decorators have zero effect on normal build123d scripts
until discovered by MakerRepo tooling.
10 dl4to4ocp — Topology Optimization
Perform topology optimization on OCP-based CAD models using the dl4to
deep-learning library.
When to use
- The user wants to minimize material while maintaining structural strength.
- The user mentions topology optimization, generative design (structural),
or lightweighting.
Experimental — requires dl4to and its deep-learning dependencies
(PyTorch). Best for users already comfortable with ML tooling.
11 OCP.wasm — Build123d in the Browser
Ports OCP (OpenCASCADE for Python) and supporting libraries to WebAssembly,
enabling full in-browser CAD model generation. Powers the build123d
playground in Yet Another CAD Viewer.
When to use
- The user wants to run build123d without a local Python install.
- The user wants to embed a live build123d editor on a website.
- The user is building a web-based CAD application.
For a ready-made frontend, use Yet Another CAD Viewer (§3 above) rather
than integrating OCP.wasm directly.
Quick Decision Table
| Need |
Tool |
| View model interactively in VS Code |
ocp-vscode (§1) |
| View model in a web browser |
Yet Another CAD Viewer (§3) |
| Run build123d with no local install |
OCP.wasm via YACV playground (§3, §11) |
| Photorealistic render / animation |
blendquery (§5) or ocp-vscode PBR Studio |
| Generate shape from text description |
nething (§6) |
| CNC toolpath / G-code from model |
ocp-freecad-cam (§7) |
| Find / reuse community parts |
PartCAD (§8, deep dive in cad-partcad-repository skill); for nuts/bolts/bearings see cad-build123d-bd-warehouse |
| Publish models with CI/CD |
MakerRepo (§9) |
| Topology optimization |
dl4to4ocp (§10) |
| Standalone GUI editor (no VS Code) |
cq-editor fork (§2) |
See Also
- Official page: https://build123d.readthedocs.io/en/latest/external.html
- Related skill:
cad-build123d-bd-warehouse (deep dive on Gumyr's
comprehensive part library — fasteners, bearings, gears, threads, etc.)
- Related skill:
cad-partcad-repository (deep dive on PartCAD: install,
CLI, build123d / CadQuery / generic Python APIs, package authoring,
AI-generated parts, publishing)
- Related skill:
cad-build123d-general (foundational build123d API reference)
1---2name: cad-build123d-tools3description: Catalog of external tools for the build123d ecosystem: editors, viewers, CAM toolpath generation, Blender integration, topology optimization, browser-based CAD, package management, and CI/publishing. USE FOR: OCP CAD Viewer, ocp-vscode, view model, preview CAD, CNC toolpath, CAM, Blender, blendquery, nething, generative AI CAD, topology optimization, dl4to4ocp, OCP.wasm, browser CAD, PartCAD package manager, MakerRepo, makerrepo-cli, publish model, share model, Yet Another CAD Viewer.4license: MIT-05---67# Build123d External Tools89> **Prerequisite:** Load `cad-build123d-general` first — all tools below10> operate on build123d objects and assume familiarity with the API.1112## Purpose1314Before recommending a workflow change, custom script, or manual export step,15check whether one of the community tools already solves the problem. This16skill is a catalog of every tool listed on the official build123d17[External Tools and Libraries](https://build123d.readthedocs.io/en/latest/external.html)18page (Editors & Viewers + Tools sections), with installation commands,19quick-start usage, and guidance on when to reach for each tool.2021## When to Use This Skill2223- The user asks how to **view / preview / inspect** a build123d model.24- The user wants to **generate CNC toolpaths** from a build123d part.25- The user asks about **Blender integration** for rendering or animation.26- The user wants to **share, publish, or package** a build123d model.27- The user mentions **topology optimization** or **generative design**.28- The user wants to **run build123d in a browser** (WebAssembly).29- The user asks "is there a tool for …?" in the build123d ecosystem.3031---3233## Editors & Viewers3435### 1 OCP CAD Viewer for VS Code (ocp-vscode)3637The **primary viewer** for build123d development. A VS Code extension that38renders CadQuery / build123d objects in a 3D panel with measurement tools,39face/edge/vertex selection, PBR materials, and visual debugging.4041| Field | Value |42|-------|-------|43| **Repo** | <https://github.com/bernhard-42/vscode-ocp-cad-viewer> |44| **PyPI** | `ocp-vscode` |45| **VS Code** | Search "OCP CAD Viewer" in Extensions |46| **License** | Apache-2.0 |47| **Latest** | 3.3.4 (as of writing) |4849#### Install5051```bash52# Option A — VS Code Quickstart button (installs build123d + ocp_vscode + deps)53# Open sidebar → OCP CAD Viewer → "Quickstart build123d"5455# Option B — CLI (pip)56pip install ocp-vscode5758# Option C — CLI (uv)59uv add ocp-vscode60```6162#### Quick start6364```python65from build123d import *66from ocp_vscode import *6768b = Box(10, 20, 30)69show(b)70```7172#### Key features7374- **Jupyter integration** — run cells, see results in the viewer panel.75- **Visual debugging** — step through code; all CAD `locals()` auto-display.76- **Measurement mode** — select faces/edges/vertices and measure distances.77- **PBR Studio** — physically based rendering with MaterialX materials,78 environment maps, shadows, and ambient occlusion.79- **Standalone mode** — `python -m ocp_vscode` starts a Flask server at80 `http://127.0.0.1:3939` — no VS Code required.81- **Camera control** — `reset_camera=Camera.CENTER` (keeps rotation, re-centers),82 `Camera.KEEP` (keeps pan too), `Camera.RESET` (full reset).83- **`set_defaults()`** — set per-file defaults for `helper_scale`,84 `reset_camera`, `transparent`, etc.8586#### Best practices8788- Use `# %%` cell markers with the Jupyter extension for interactive work.89- Name your `BuildPart` / `BuildSketch` / `Location` contexts so the visual90 debugger labels them.91- Don't use the OCP logo to verify settings — it overrides your config.92- If models are invisible, clear the VS Code browser cache (stale WebGL93 shader compilation).9495---9697### 2 cq-editor (jdegenstein fork)9899A GUI editor based on PyQT, forked with build123d-friendly changes.100Useful if you prefer a standalone IDE-like experience outside VS Code.101102| Field | Value |103|-------|-------|104| **Repo** | <https://github.com/jdegenstein/jmwright-CQ-Editor> |105106> **When to use:** Only if the user explicitly doesn't want VS Code.107> Otherwise, recommend ocp-vscode — it's better maintained and more108> feature-rich.109110---111112### 3 Yet Another CAD Viewer (YACV)113114A **web-based** CAD viewer for OCP models that runs in any modern browser.115Supports static site deployment, interactive inspection, measurement,116per-model clipping planes, transparency, and hot reloading via `yacv-server`.117118| Field | Value |119|-------|-------|120| **Repo** | <https://github.com/yeicor-3d/yet-another-cad-viewer> |121| **PyPI** | `yacv-server` |122| **License** | MIT |123| **Demo** | <https://yeicor-3d.github.io/yet-another-cad-viewer/> |124125#### Install126127```bash128pip install yacv-server129```130131#### Key features132133- **Browser playground** — edit and run build123d code entirely in the browser134 (powered by OCP.wasm).135- **Static deployment** — upload the viewer + GLTF models to any web server.136- **Hot reload** — `yacv-server` watches for file changes and pushes updates.137- **GLTF 2.0** — full support for textures, PBR materials, animations.138- **Measurement** — bounding box size and distance measurement on selection.139140> **When to use:** sharing models with others who don't have VS Code, embedding141> previews on a website, or running build123d in a browser without any local142> install.143144---145146### 4 PartCAD VS Code Extension147148A wrapper around `ocp-vscode` that requires build123d scripts to be packaged149with PartCAD. Adds UI controls for exporting models and passing parameters,150plus AI-based generative design tools.151152| Field | Value |153|-------|-------|154| **VS Code** | Search "PartCAD" in Extensions |155| **Docs** | <https://partcad.readthedocs.io/> |156157> **When to use:** only if the user is already using PartCAD for package158> management. Otherwise, ocp-vscode alone is simpler.159160---161162## Tools163164### 5 blendquery — Blender Integration165166CadQuery and build123d integration for Blender. Import CAD objects directly167into Blender for rendering, animation, or further modeling.168169| Field | Value |170|-------|-------|171| **Repo** | <https://github.com/uki-dev/blendquery> |172173#### When to use174175- The user wants to **render a photorealistic image** of a build123d model176 using Blender's Cycles/EEVEE renderer.177- The user wants to **animate** an assembly.178- The user needs to **combine CAD geometry with artistic 3D work**.179180> Note: For quick renders, ocp-vscode's PBR Studio mode may be sufficient181> without bringing in Blender.182183---184185### 6 nething — Generative AI for CAD186187A 3D generative AI platform for CAD modeling. Describe what you want in188natural language and get a 3D model.189190| Field | Value |191|-------|-------|192| **Website** | <https://nething.xyz/> |193194> **When to use:** the user wants to quickly bootstrap a shape from a text195> description before refining it parametrically in build123d. Treat the196> output as a starting point, not a final model — it won't be parametric.197198---199200### 7 ocp-freecad-cam — CNC Toolpath Generation201202Generates CNC toolpaths from build123d / CadQuery / OCP shapes by leveraging203FreeCAD's Path workbench through a fluent Python API. Spiritual successor204of `cq-cam`.205206| Field | Value |207|-------|-------|208| **Repo** | <https://github.com/voneiden/ocp-freecad-cam> |209| **PyPI** | `ocp-freecad-cam` |210| **Docs** | <https://ocp-freecad-cam.readthedocs.io/> |211| **License** | Apache-2.0 |212| **Latest** | 1.1.0 |213214#### Prerequisites215216- FreeCAD ≥ 1.0.1 must be importable by your Python environment.217- On Linux: extract the AppImage, create a venv from its interpreter, add218 FreeCAD's `lib` to a `.pth` file.219- On Windows: use the 7z portable build; create a `.pth` pointing at `src`.220221#### Install222223```bash224pip install ocp-freecad-cam225```226227#### When to use228229- The user wants to **machine a build123d part on a CNC router or mill**.230- The user asks about **G-code generation** from a parametric model.231232#### Limitations233234- **Experimental** — always double-check generated G-code.235- `Pocket3D` doesn't work; use `Surface3D` instead.236- `VCarve` can produce unstable toolpaths (openvoronoi bug).237238---239240### 8 PartCAD — Package Manager for CAD Models241242A package manager and repository for CAD models. Build123d is the most243supported framework; CadQuery and OpenSCAD are also supported.244245| Field | Value |246|-------|-------|247| **Repo** | <https://github.com/partcad/partcad> |248| **Docs** | <https://partcad.readthedocs.io/> |249| **Public repo** | <https://partcad.org/repository> |250| **PyPI** | `partcad` |251| **VS Code extension** | <https://marketplace.visualstudio.com/items?itemName=OpenVMP.partcad> |252253#### When to use254255- Find / reuse a community-published CAD part beyond the basic256 hardware that `bd_warehouse` covers.257- Publish your own build123d / CadQuery / OpenSCAD models.258- Use AI-generated CAD scripts (Google / OpenAI) as a starting point.259260> **Deep dive lives in the `cad-partcad-repository` skill.** That261> skill covers install, the full CLI (`pc list / info / inspect /262> render / export`), the build123d / CadQuery / generic Python APIs263> (`pc.get_part_build123d`, `pc.get_assembly_build123d`),264> `partcad.yaml` package authoring, AI-generated parts, `.assy`265> assembly files, and publishing to the public index. Load that266> skill when the user actually wants to use PartCAD; this `tools`267> entry is just the catalog pointer.268269---270271### 9 MakerRepo — Manufacturing-as-Code272273A lightweight Python library (`mr`) that provides decorators to annotate274build123d model functions for discovery by `makerrepo-cli` or MakerRepo.com CI.275276| Field | Value |277|-------|-------|278| **Library repo** | <https://github.com/LaunchPlatform/makerrepo> |279| **CLI repo** | <https://github.com/LaunchPlatform/makerrepo-cli> |280| **Docs** | <https://docs.makerrepo.com/makerrepo-library/> |281| **PyPI** | `makerrepo` (library), `makerrepo-cli` (CLI) |282283#### Install284285```bash286pip install makerrepo makerrepo-cli287```288289#### Decorators290291| Decorator | Purpose |292|-----------|---------|293| `@artifact` | Mark a function that produces a CAD model to be built/published. Optional: `sample`, `cover`, `desc`, `export_step`, `export_3mf`. |294| `@customizable` | Parametric model — users tweak parameters via a Pydantic model. |295| `@cached` | Cache expensive sub-builds by arguments for reuse. |296297#### Quick start298299```python300import makerrepo as mr301from build123d import *302303@mr.artifact(desc="A simple box", export_step=True)304def my_box():305 return Box(10, 20, 30)306```307308```bash309mr list # discover artifacts310mr build # build all artifacts311mr snapshot # snapshot outputs312```313314#### When to use315316- The user wants a **CI/CD pipeline** for their build123d models.317- The user wants to **publish parametric models** on MakerRepo.com.318- The user wants **build caching** for complex multi-part projects.319320> **Non-intrusive:** decorators have zero effect on normal build123d scripts321> until discovered by MakerRepo tooling.322323---324325### 10 dl4to4ocp — Topology Optimization326327Perform topology optimization on OCP-based CAD models using the `dl4to`328deep-learning library.329330| Field | Value |331|-------|-------|332| **Repo** | <https://github.com/yeicor-3d/dl4to4ocp/> |333334#### When to use335336- The user wants to **minimize material** while maintaining structural strength.337- The user mentions **topology optimization**, **generative design** (structural),338 or **lightweighting**.339340> **Experimental** — requires `dl4to` and its deep-learning dependencies341> (PyTorch). Best for users already comfortable with ML tooling.342343---344345### 11 OCP.wasm — Build123d in the Browser346347Ports OCP (OpenCASCADE for Python) and supporting libraries to WebAssembly,348enabling full in-browser CAD model generation. Powers the build123d349playground in Yet Another CAD Viewer.350351| Field | Value |352|-------|-------|353| **Repo** | <https://github.com/yeicor/OCP.wasm> |354355#### When to use356357- The user wants to **run build123d without a local Python install**.358- The user wants to **embed a live build123d editor** on a website.359- The user is building a **web-based CAD application**.360361> For a ready-made frontend, use Yet Another CAD Viewer (§3 above) rather362> than integrating OCP.wasm directly.363364---365366## Quick Decision Table367368| Need | Tool |369|------|------|370| View model interactively in VS Code | **ocp-vscode** (§1) |371| View model in a web browser | **Yet Another CAD Viewer** (§3) |372| Run build123d with no local install | **OCP.wasm** via YACV playground (§3, §11) |373| Photorealistic render / animation | **blendquery** (§5) or ocp-vscode PBR Studio |374| Generate shape from text description | **nething** (§6) |375| CNC toolpath / G-code from model | **ocp-freecad-cam** (§7) |376| Find / reuse community parts | **PartCAD** (§8, deep dive in `cad-partcad-repository` skill); for nuts/bolts/bearings see `cad-build123d-bd-warehouse` |377| Publish models with CI/CD | **MakerRepo** (§9) |378| Topology optimization | **dl4to4ocp** (§10) |379| Standalone GUI editor (no VS Code) | **cq-editor fork** (§2) |380381---382383## See Also384385- Official page: <https://build123d.readthedocs.io/en/latest/external.html>386- Related skill: `cad-build123d-bd-warehouse` (deep dive on Gumyr's387 comprehensive part library — fasteners, bearings, gears, threads, etc.)388- Related skill: `cad-partcad-repository` (deep dive on PartCAD: install,389 CLI, build123d / CadQuery / generic Python APIs, package authoring,390 AI-generated parts, publishing)391- Related skill: `cad-build123d-general` (foundational build123d API reference)