OCP-Tessellate
Tessellate OCP (Python bindings for OpenCascade) shapes into a JSON-friendly format suitable for three-cad-viewer and downstream tooling such as ocp_vscode.
It accepts geometry from CadQuery, build123d, and raw OCP TopoDS_* shapes, walks the structure, computes triangulations / discretized edges, and emits a hierarchical group of meshed instances.
Installation
pip install ocp-tessellate
Requires Python 3.10+ and OCP 7.8, 7.9 or 8.0.
Quick start
Programmatic pipeline
For embedding in a tool (the path used by ocp_vscode):
from build123d import Box, Sphere, Compound
from ocp_tessellate.convert import to_ocpgroup, tessellate_group
box = Box(1, 2, 3)
sphere = Sphere(0.5)
sphere.label = "ball"
assembly = Compound(label="root", children=[box, sphere])
# Step 1: convert to an OcpGroup hierarchy + instance list
group, instances = to_ocpgroup(assembly)
# Step 2: tessellate the instances
meshed_instances, shapes, mapping = tessellate_group(group, instances)
# `shapes` is a JSON-serializable tree consumable by three-cad-viewer
Direct export to three-cad-viewer
The simplest path — emit a .js file that a three-cad-viewer page can load directly:
from build123d import Box
from ocp_tessellate.convert import export_three_cad_viewer_js
box = Box(1, 2, 3)
export_three_cad_viewer_js("box", box, filename="box.js")
# writes box.js with `var box = {...}` ready for three-cad-viewer/examples
This is the bridge to three-cad-viewer: bundles tessellated instances + scene tree into a single JSON payload assigned to a JS variable.
Public API
Three entry points in ocp_tessellate.convert:
export_three_cad_viewer_js(var, *objs, names=None, colors=None, alphas=None, modes=None, filename=None, keep_instances=False)— runs the full pipeline (to_ocpgroup→tessellate_group→ JSON encode) and writes avar <name> = {...};JS file. The direct integration point with three-cad-viewer.to_ocpgroup(*objs, names=None, colors=None, alphas=None, modes=None, ...)— converts CAD objects (build123d / CadQuery / OCP / nested dicts and lists) into anOcpGrouphierarchy plus an instance list. Accepts per-objectnames,colors,alphas,materials,modes((state_faces, state_edges)2-tuples), and adefault_color. Renderer-control flags includehelper_scale,render_joints,render_mates,show_parent,show_locals.tessellate_group(group, instances, kwargs=None, progress=None, timeit=False)— meshes the instances and returns the structures consumed by three-cad-viewer.kwargscan carry tessellation parameters likedeviation,angular_tolerance,edge_accuracy, andrender_normals.
For lower-level use, OcpConverter exposes to_ocp(...), which is what to_ocpgroup calls internally.
What gets shown
Inputs are walked recursively. The resulting tree mirrors the input structure:
| input | result |
|---|---|
| build123d / CadQuery / OCP shape | a single OcpObject |
dict |
a Dict group with one named child per key |
list / tuple |
a List group with default-named children |
ShapeList |
a ShapeList group exposing each item individually |
Compound(children=[...]) (assembly) |
a group preserving the assembly hierarchy |
Compound(...) (standard, no children) |
unwrapped to its inner shape |
BuildPart / BuildSheet / BuildSketch / BuildLine |
a single OcpObject for the builder result, plus a part_local / sheet_local / sketch_local / line_local sibling unless disabled |
Compatibility
- Python 3.10+
- OCP 7.8, 7.9 and 8.0
- build123d (current)
- CadQuery 2.x
License
Apache 2.0. See LICENSE.
Changelog
See CHANGELOG.md.
Metadata
Release files for ocp-tessellate 3.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ocp_tessellate-3.5.2.tar.gz | 88.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ocp_tessellate-3.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 149.7 kB
Release files / ocp_tessellate-3.5.2.tar.gz
| Download URL | ocp_tessellate-3.5.2.tar.gz |
|---|---|
| Size | 88.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7558b60248f915181d9dfd2a1f8615fc406ef2482d8d4060a9ce64d2741e545e
|
|
BLAKE2b-256 checksum How to use checksums |
9f62ce81bf1aa6655cef5fd119b40351a771b9acb9cdbcb247f7729d7b416ef3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|
Release files / ocp_tessellate-3.5.2-py3-none-any.whl
| Download URL | ocp_tessellate-3.5.2-py3-none-any.whl |
|---|---|
| Size | 61.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
82b5bb7f35901dee5b887eba37d72a2fd63c2b6239843d9ab25a8f44b6c5a016
|
|
BLAKE2b-256 checksum How to use checksums |
e1121ffc31671d8157097894e5bdae21e264a689c4b2467fcef618bfa334c83c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.12
|