Version 0.005 (ALPHA)
Some wrapper functions to ease the translation from OpenSCAD (.scad) to OpenJsCad (.jscad): OpenSCAD.js(cad) (openscad.js / openscad.jscad).
-- UPDATE --: Consider to get OpenJSCAD.org right away instead, which also includes this library.
OpenJsCad CLI (openjscad) written on nodejs (server-side javascript) converting .jscad to .stl.
- 2013/03/04: 0.005: intersect() -> intersection(), sin, cos, asin, acos included, more examples
- 2013/03/02: 0.004: better install, examples/, etc refinements (working on 2d primitives)
- 2013/03/01: 0.003: example.jscad vs example.scad, openscad.js/.jscad split up, and openjscad cli in nodejs implemented
- 2013/02/28: 0.002: center:false default
- 2013/02/27: 0.001: first version, center: true|false support
- NodeJS.org
- Optional: OpenJsCad (for now, this package might later merge with it)
% make install
- openjscad CLI (command-line interface) .jscad to .stl (like "openscad test.scad -o test.st")
- 3d primitives: sphere(), cube(), cylinder()
- 3d transformations: translate(), rotate(), scale()
- CSG operations: union(), difference(), intersect()
- what does not (yet) work:
- cylinder(fs=angle)
- linear_extrude()
- rotate_extrude()
- 2d primitives
example.scad
union() { //cube(size=[30,30,0.1],center=true); translate([3,0,0]) cube(); difference() { rotate([0,-45,0]) cube(size=[8,7,3],center=true); sphere(r=3,$fn=20,center=true); } translate([10,5,5]) scale([0.5,1,2]) sphere(r=5,$fn=50); translate([-15,0,0]) cylinder(r1=2,r2=0,h=10,$fn=20); |
example.jscad
function main() { var cubes = new Array(); for(i=0; i<20; i++) { cubes[i] = rotate([0,i/20*360,0], translate([i,0,0], rotate([0,i/20*90,i/20*90,0], cube({size:[1,1.2,.5],center:true})))); } return union( //cube({size:[30,30,0.1],center:true}), translate([3,0,0],cube()), difference( rotate([0,-45,0], cube({size:[8,7,3],center:true})), sphere({r:3,fn:20,center:true}) ), translate([10,5,5], scale([0.5,1,2], sphere({r:5,fn:50}))), translate([-15,0,0], cylinder({r1:2,r2:0,h:10,fn:20})), cubes ); } |
Essentially whenever named arguments in .scad appear func(a=1), translate it into func({a:1}), for example:
- .scad: translate([0,0,2]) sphere(size=2,$fn=50);
- .jscad: translate([0,0,2], sphere({size:2,fn:50}));
Also:
cube(); // 1x1x1 cube(2); // 2x2x2 cube([1,2,3]); // 1x2x3 cube({size: [1,2,3]}); // dito cube({size:1, center: true});Go to http://joostn.github.com/OpenJsCad/processfile.html and paste openscad.jscad in there. openjscad is a nodejs script, which renders .jscad to .stl on command-line level:
% ./openjscad example.jscad % ./openjscad example.jscad -o test.stlby default creates filename.('jscad' → 'stl'), optionally -o filename.stl can be defined (alike with openscad).
Important: by default openjscad (CLI) supports the OpenSCAD.jscad extension (unlike the web-platform).
- openjscad: command-line nodejs script (renders .jscad to .stl)
- openscad.js: openscad wrapper function in javascript (in conjunction with csg.js)
- openscad.jscad: same as above with a working example (main() defined)
- csg.js: the core of OpenJsCad
- examples/:
- example000.jscad: working example (without openscad.js library)
- example000.scad: original openscad .scad file
- example001.jscad: converted from example001.scad (from OpenSCAD/examples/)
- example001.scad: original openscad .scad file
- example002.jscad: converted from example002.scad (from OpenSCAD/examples/)
- example002.scad: original openscad .scad file
- etc.
In general .js and .jscad are both written in JavaScript, yet .jscad must have a function main():
function main() { var csg = union( ... ); return csg; }
returning an object of CSG (from csg.js).
- OpenSCAD.net which provides a .scad to .js translator direct.
- CoffeeSCad which provides CoffeeScript CAD development like OpenJsCad.
- RepRapCloud, distribution of tasks (Open[J]SCAD, Slic3r etc) on several servers