ocp_viewer
The standalone OCP CAD viewer: a browser page and the server behind it.
Installation
pip install ocp_viewer
into the environment that also holds your CAD library (build123d or cadquery).
From a checkout — for local use with uv add path/to/ocp-viewer, uv pip install path/to/ocp-viewer or pip install path/to/ocp-viewer — run make assets in the checkout first. The page's JavaScript and stylesheet are copied in from npm and are not in git, so a package built from a checkout that never ran it ships without them; the server says so at start. make dist runs it for you.
Run
python -m ocp_viewer
and open the printed URL in a browser — http://127.0.0.1:3939 by default. Then show from any Python process in that environment:
from build123d import *
from ocp_viewer import *
show(Box(1, 2, 3))
— the same show you would use with the VS Code extension, pointed at this viewer.
Documentation
Everything else — settings, addressing several viewers, editors, Docker, the whole shared behavior — is in the documentation: the OCP Viewer chapter for this viewer's specifics, bernhard-42.github.io/ocp_viewer_docs for the rest.
What is here, and what is not
Almost nothing about viewing is here. The show pipeline, the config semantics, the render and camera policy, the tree state, the measurement backend, the splash logo, the port registry and the wire protocol are all ocp-viewer-core, shared with the VS Code extension, Jupyter CadQuery and build123d Studio. What is left is a websocket server that also hands out one page, and the settings that reach them.
That is the point of the split rather than a side effect of it. A camera that behaves differently here than in VS Code is a bug in one of them, and there is now one place to fix it.
| file | what |
|---|---|
server/__init__.py |
serve — the websocket server, for the command line |
__main__.py |
the CLI; every option is a viewer setting |
server/settings.py |
defaults, the config file, and the command line on top of both |
server/viewer.py |
what a running viewer knows: its two clients, its config, its state |
server/pages.py |
the page, the files it loads, and a redirect to it |
server/sockets.py |
the one websocket, and the six kinds of message on it |
comms.py |
this host's transport: the core's websocket client, pointed at a viewer |
server/network.py |
is something already listening on that port |
Settings
Three sources, later winning over earlier:
- the defaults in
server/settings.py ~/.ocpvscode_standalone, if it exists — write one withpython -m ocp_viewer --create_configfile- the command line —
python -m ocp_viewer --help
The file keeps its old name so that an existing one still works.
Development
make install # editable
make assets # copy the renderer and the core into static/
make check # ruff check + ty check, and no formatter
make run
make assets copies JavaScript out of node_modules: three-cad-viewer and ocp-viewer-core are npm packages, installed from the registry. The copies under static/ are gitignored. After bumping either dependency, run make assets again so they follow.
Licence
Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ocp_viewer-1.1.3.tar.gz.
File metadata
- Download URL: ocp_viewer-1.1.3.tar.gz
- Upload date:
- Size: 955.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3ceae0f29d101c04ee437f5101099fdbf2210d23aec7cfeb02ca81c034bdeb8
|
|
| MD5 |
fc0bc3fb025b5fc451d055e6100e8da5
|
|
| BLAKE2b-256 |
5005edf9cfde3a8e13c89fddccab10ea58bb091acd48d50fdc9afb7f01c8cdf9
|
File details
Details for the file ocp_viewer-1.1.3-py3-none-any.whl.
File metadata
- Download URL: ocp_viewer-1.1.3-py3-none-any.whl
- Upload date:
- Size: 958.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b3ac31e3b1add1f94224e46158b0edf6583dc751024138902763f2853efdc88
|
|
| MD5 |
143c8c07ba03f860233022457ac25db1
|
|
| BLAKE2b-256 |
f5147a2e91f024eea16d031fe125447c7da0fd5d9539d2991355e75aeb383a64
|