Skip to main content

Jupyter for CadQuery / build123d

The Python package provides a Jupyterlab extension and a JupyterServer extension to view CadQuery, build123d, and OCP objects in JupyterLab

Current version: v5.1.0 (2026-09-11)

The full documentation lives at bernhard-42.github.io/ocp_viewer_docs — the Jupyter CadQuery chapter covers this viewer's specifics; this README gets you installed and running, and links into the rest.

Overview

Click on the "launch binder" icon to start Jupyter-CadQuery on binder:

Binder: Latest development version (Due to security restrictions, the measurement feature does not work on binder)

Installation

  • CadQuery

    1. Create and activate a virtual conda environment

      mamba create -n jcq python=3.12
      mamba activate jcq
      
    2. Install latest cadquery master

      mamba install -c conda-forge -c cadquery cadquery=master
      
    3. Install Jupyter CadQuery

      pip install jupyter-cadquery
      
  • build123d

    1. Create and activate a virtual environment (conda, pyenv-virtualenv, uv, ...)

    2. Install build123d

      pip install build123d
      
    3. Install Jupyter CadQuery

      pip install jupyter-cadquery
      

Jupyter CadQuery requires JupyterLab 4 (jupyterlab>=4.6.2,<5) and installs it if it is missing. The JupyterLab extension is prebuilt and ships inside the cad-viewer-widget dependency: no jupyter labextension step, no Node.js.

Known issue: ipykernel 7.x can stall a running notebook (a cell stays at [*] with an idle kernel). Until the ipykernel release that carries the fix, install pip install "ipykernel<7" — details and the workaround in Troubleshooting.

Verify the installation

jupyter lab extension list        # must list:  jupyter_cadquery 5.1.0 OK   (the viewer frontend)
jupyter server extension list     # must list:  jupyter_cadquery 5.1.0 OK   (the measurement backend)

A line "Extension package jupyter_cadquery took N s to import" is OCP and VTK loading, not an error. On a Mac the very first run can take minutes for the same reason.

Changed behavior from 4.x

  • The complete sidecar space will now be used for the viewer. For the old behaviour set cad_width and height
  • The default for show is reset_camera=Camera.KEEP now (unless set in ~/.jcq_config differently).
    • The viewer warns if the new object is too large or too small. To disable the warnings, use ignore_camera_warnings()
    • The old behavior can be achieved with set_defaults(reset_camera=Camera.RESET)
  • from jupyter_cadquery import * still works. For portable code with other viewers from the ocp viewer ecosystem use from ocp_viewer_core.viewer import *
  • mate_scale does not work any more, use helper_scale
  • The viewer now remembers paths in the tree that are shown/hidden and will show/hide the same paths for the newly shown CAD object

For all new features and fixes see CHANGELOG

First run

jupyter lab

and in a notebook:

from build123d import *
from jupyter_cadquery import *

open_viewer("CAD")
show(Box(1, 2, 3))

open_viewer puts the viewer into a sidecar panel next to the notebook; without it, show draws into the cell. From here on, everything is in the documentation.

Documentation

The full documentation lives at bernhard-42.github.io/ocp_viewer_docs — the Jupyter CadQuery chapter covers this viewer's specifics; everything below is a deep link into it.

Getting started

Working in the notebook

Working with the viewer

Python show* commands

Python API reference

Help

Demo Notebooks

Standard examples

Animated examples (requires pip install cadquery-massembly matplotlib):

Changes

see CHANGELOG.md

Licence

Apache-2.0.

Metadata

Release files for jupyter-cadquery 5.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jupyter-cadquery 5.1.0
File Size Uploaded
jupyter_cadquery-5.1.0.tar.gz 973.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jupyter-cadquery 5.1.0
File Interpreter ABI Platform
jupyter_cadquery-5.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / jupyter_cadquery-5.1.0.tar.gz

Download URL jupyter_cadquery-5.1.0.tar.gz
Size 973.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3bee453a4e9a4952dd7a10a31e93b6eb9f573791a45eb2630b992f23aad4ba67
BLAKE2b-256 checksum
How to use checksums
e7c574fa96f46d6589f653cb6778ad4cfce54e6c0b38c53c9f0f66835c7b77a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Release files / jupyter_cadquery-5.1.0-py3-none-any.whl

Download URL jupyter_cadquery-5.1.0-py3-none-any.whl
Size 81.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
49d9685ef23ff0e101d7ce0ec1a75376dad3035c6c81a97dc671cddae0094d61
BLAKE2b-256 checksum
How to use checksums
e65c95c1b4d3f98c3c0f989f2baa2b92828ee4f57c45fe6b93909ea661c7245c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.12

Release history Release notifications | RSS feed

5.2.0

2 release files

This release

5.1.0 This release

2 release files

4.0.2

2 release files

3.5.2

2 release files

3.5.1

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.0

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page