A port of the OpenCascade CAD library to JavaScript and WebAssembly via Emscripten.
Explore the docs »
Examples
·
Issues
·
Discuss
- CascadeStudio is a SCAD (Scripted-Computer-Aided-Design) editor, which runs in the browser.
- OpenCascade.js-examples contains general examples on how to use the library.
(These instructions are for the upcoming @beta
release. All information is likely to change. See here for instructions of the v1.1.1
release.)
-
Add the library as a dependency to your project
npm install opencascade.js@beta
-
Configure your bundler to load
.wasm
files as URLs. If you don't want to use a bundler, you can manually pass in the URLs to the WASM files in the next step.For webpack, first add the
file-loader
dependency.npm install file-loader --save-dev
Then add the following configuration to your
webpack.config.js
.module: { rules: [ { test: /\.wasm$/, type: "javascript/auto", loader: "file-loader" } ] }, node: { fs: "empty" }
-
In your JavaScript file, instantiate the library:
import { initOpenCascade, ocCore, ocModelingAlgorithms, ocVisualApplication, ocDataExchangeBase, ocDataExchangeExtra, } from "opencascade.js"; initOpenCascade({ libs: [ // Specify which modules to use and the sequence in which to load them ocCore, ocModelingAlgorithms, ocVisualApplication, ocDataExchangeBase, ocDataExchangeExtra, ] }).then(oc => { // Check out the examples on how to use this library! });
No. This project is making no changes to the OpenCascade library, apart from few very small modifications which are applied as patches. All this project does is
- Download a tagged commit from the OpenCascade git server.
- Compile the OpenCascade library using the Emscripten compiler.
- Analyze the OpenCascade headers using libclang and auto-generate bind-code to expose the library to JavaScript.
- Link the WASM-binaries and provide some convenience functions so that you can easily use the library in your JavaScript projects.
This project is (hopefully) keeping itself (mostly) up-to-date with the OpenCascade library, since most bindings are generated automatically.
Contributions are welcome! Feel free to have a look at the todo-list if you need some inspiration on what else needs to be done.