vork by Voyager
An agent writes a scene as code, renders it on the GPU, looks at the result and revises the code. Source-available and free during the research preview.
翻訳待ち
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A language-agnostic, code-first CAD studio: what Jupyter did for IPython, GCAD Studio aims to do for OpenSCAD. A kernel is a modelling language defined by a formal grammar and rewrite rules; the studio parses it into one shared functional core language (GCore), evaluates it to a neutral geometry graph, renders it, and exports it to neutral and vendor formats. The idea comes from openscad/openscad#2299; the full requirements are in docs/SPEC.md. Today the Jupyter part is the architecture; notebooks come in M10 (Questions).
gcad serve # opens the studio in your browser; files live in the current folder
gcad serve part.mscad # ... and opens a file
F5. Errors are underlined in the code and listed below; the last good model stays on screen.Ctrl+O opens examples and files, Ctrl+S saves, Ctrl+E exports to any format below, one click each.It runs on your machine only: the server listens on 127.0.0.1, every call needs the session token in the address it prints, and nothing is loaded from the internet. Geometry is computed in Python; the browser draws it with WebGL, which works with any GPU or with the browser's software renderer.
A model that runs away stops with a message instead of hanging: at 10 s of evaluation, a call depth of 1,000, 10⁶ loop iterations or 10⁵ geometry nodes. In Live mode the next edit stops an evaluation still running, so the studio never queues up behind one.
The same studio also runs as a static web site, live at gcadstudio.github.io/studio (SPEC §4.1): Python runs inside the page through Pyodide in a Web Worker, and the mesh back-end is Manifold's own WebAssembly build. Your files stay in the browser (with Upload and Download in Ctrl+O), and nothing is sent anywhere. STEP files with explicit B-rep open there too, read by OpenCASCADE's WebAssembly build (occt-import-js, loaded only when a STEP file is opened). Writing STEP and IGES needs OpenCASCADE's modelling back-end, so those two exports need the local install; the other twelve formats work. Build the site and serve it with any static file server:
python tools/build_site.py --out site # fetches the pinned, checksummed Pyodide and Manifold once
python -m http.server -d site 8000 # then open http://127.0.0.1:8000
Where is the Jupyter part? In the architecture, so far. Jupyter split one front end from many kernels that speak a protocol; here a kernel is either a grammar with rewrite rules, or a program that speaks JSON-RPC over stdio, and every kernel's output becomes the same language-neutral geometry graph. The viewer and the exporters are written once against that graph, so a new language gets them without writing any of them. The workflow Jupyter is known for, a document of Markdown and code cells, run cell by cell, sharing one scene, each cell with its own view and measurements, is milestone M10, together with a gcad kernel for JupyterLab. It is not built yet: today the studio shows one file and one model.
How is that different from an editor that re-runs OpenSCAD? For the openscad process kernel it is not very different yet: it runs your OpenSCAD and shows the mesh it makes. The difference is in the grammar kernels. GCAD Studio parses those languages itself, so it knows which code made which face (click a face to find it), shows errors where they are, and builds a graph you can compare and export: the minscad and csg versions of the tour's part give the same graph hash, and both export to exact STEP, which OpenSCAD cannot write.
Can I get a real B-rep STEP for CNC, with fillets and chamfers? Partly. minscad, csg and parts export STEP from OpenCASCADE as an exact B-rep: cylinders stay cylinders and booleans are exact, not meshes. Fillets and chamfers are not GCore operations yet, and are not planned for v0.2. Today, for those, use the cadquery kernel: CadQuery fillets and chamfers on OpenCASCADE, and its STEP stays exact through GCAD Studio. A BOSL2 model opened with the openscad kernel is OpenSCAD's mesh, so STEP is not offered for it. If you want fillets and chamfers in the core, say so in an issue; it helps decide what comes after v0.2.
Which Python does the cadquery kernel use? The one GCAD_CADQUERY_PYTHON points to, never GCAD Studio's own: CadQuery 2.8 pins cadquery-ocp below 8.0 and GCAD Studio needs 8.0.1 or newer, so they cannot share an environment. Install third-party packages into that environment (uv pip install --python cq <package>); the script's own folder is on sys.path, so modules next to it import too. A cq.Assembly comes back as one compound.
This is the beginning of the README. Read the rest at the original. Read the full README ↗