Es tracta d'un programari lliure disponible per Linux, Windows i Mac: http://www.openscad.org/
Hi ha una versió per Android, ScorchCAD, i una altra per navegadors comoatibles amb webGL, OpenJSCAD. En aquest darrer cal començar el disseny amb la linia:
//!OpenSCAD
per que interpreti correctament la sintaxi del openscad, encara que el corrector de l'editor ens pot donar falsos errors (està dissenyat per a analitzar openjSCAD, un nou llenguatge que difereix una mica en la sintaxi)
També és molt interessant la interfície gràfica web blockscad, en la que us podeu iniciar amb aquest tutorial, o amb els apunts adjunts que va preparar Rafael Rubio al practicum del seu màster al nostre centre.
A http://www.thingiverse.com/arekm/collections/openscad/page:1 podeu veure diferents objectes creats amb aquest programa.
Altres programes, com ara el Blender, es centren en la part artística del disseny 3D. Openscad es centra en el CAD, enfocament molt útil en el disseny de peces pel taller.
Openscad combina dues tècniques, Constructive solid geometry (CSG) i l'extrusió de figures 2D. Nosaltres ens centrarem en la primera.
La Geometria constructiva de sòlids utilitza figures geomètriques bàsiques (esfera, cub, cilindre ...) que podem traslladar o rotar i que estan relacionades amb operadors booleans (unió, intersecció, diferència ..). Les mides es donen en mm. Aquestes mides es poden parametritzar i el llenguatge, molt semblant al C, permet fer iteracions, prendre decisions o realitzar manipulacions matemàtiques. El llenguatge vectorial és el punt clau per entendre el seu funcionament.
Molt impontant: el separador decimal es el punt: 2.5 vol dir 2 coma 5 mm.
Veiem un exemple:
d = 4; // diàmetre dels forats
r1 = d/2;
difference () {
union () {
cube ([60,20,70]);
}
union () {
translate ([20, 10, 0])
cylinder (h=10, r=r1 , $fs=0.1 );
translate ([40, 10, 0])
cylinder (h=10, r=r1 , $fs=0.1 );
translate ([30, 0, 30]) rotate ([-90,0,0])
cylinder (h=20, r=r1 , $fs=0.1 );
translate ([30,0,50]) rotate ([-90,0,0])
cylinder (h=20, r=r1 , $fs=0.1 );
}
}
}