Giter Club home page Giter Club logo

openscad-wasm's Introduction

OpenSCAD WASM Port

A full port of OpenSCAD to WASM.

This project cross compiles all of the project dependencies and created a headless OpenSCAD WASM module.

Setup

Make sure that you have the following installed:

  • Make
  • Docker
  • Deno

To build the project:

make all

Or for specific steps:

# Generate the library files
make libs 

# Build the project
make build

# Build the project in debug mode
make ENV=Debug build

Usage

There is an example project in the example folder. Run it using:

cd example
deno run --allow-net --allow-read server.ts

# or

make example

There are also automated tests that can be run using:

cd tests
deno test --allow-read --allow-write

# or

make test

API

The project is an ES6 module. Simply import the module:

import OpenSCAD from "./openscad.js";
// OPTIONAL: add fonts to the FS
import { addFonts } from "./openscad.fonts.js";
// OPTIONAL: add MCAD liibrary to the FS
import { addMCAD } from "./openscad.mcad.js";

// Instantiate the application
const instance = await OpenSCAD();

// OPTIONAL: add fonts to the FS
addFonts(instance);

// OPTIONAL: add MCAD liibrary to the FS
addMCAD(instance);

// Write a file to the filesystem
instance.FS.writeFile("/input.scad", `cube(10);`);

// Run OpenSCAD with the arguments "/input.scad -o cube.stl"
instance.callMain(["/input.scad", "-o", "cube.stl"]);

// Read the data from cube.stl
const output = instance.FS.readFile("/cube.stl");

For more information on reading and writing files check out the Emscripten File System API.

openscad-wasm's People

Contributors

dschroer avatar mattmcw avatar t-paul avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.