OpenSCAD
OpenSCAD est un logiciel de CAO, très simple mais très puissant. Pour modéliser un objet il faut écrire un script en faisant appel à des primitives (cercle, rectangle, sphère, cylindre etc ...) ainsi qu'à des transformations (translation, rotation, homothétie, etc ...) et des opérations (différence, union, intersection). Il permet alors de placer des formes géométrique simple, de les positionner, de les orienter et de les additionner ou soustraire à d'autres. Le fait d'utiliser un script pour modéliser des objets en 3D permet d'obtenir un coté paramétrable grâce à l'utilisation de variable. Ce qui est un atout non négligeable pour obtenir des pièces modulables et/ou modifiables facilement.
Dans les grandes lignes un script se présentera sous la forme suivante :
//définition des variables variable = 42; x=1; y=2; z=3; //les transformations s'appliquent sur tout le bloc définit par { et } translate([x, y, z]) { //appel d'une primitive circle(r=variable); }
On trouve un aide mémoire à cette adresse Qui regroupe toutes les fonctions, primitives et opérations utilisable dans un script.
Un autre point qui en fait un outil géométriquement puissant, c'est la possibilité d'utiliser des vecteurs et des matrices, mais aussi de pouvoir les utiliser directement dans des opérations ! On peut donc par exemple définir deux vecteurs de cette manières :
Vecteur1 = [1, 2, 3]; Vecteur2 = [4, 5, 6];
Et les additionner simplement en faisant :
Vecteur3 = Vecteur1 + Vecteur2;
Ce qui simplifie pas mal de code.
Autres liens intéressant concernant OpenSCAD :
- https://hackaday.com/2017/01/03/ditch-openscad-for-c/
- https://github.com/jscad/OpenJSCAD.org
- https://hackaday.com/2015/10/28/we-didnt-know-the-sun-could-do-digital/
Utilisation à partir d'un script
Il est parfois utile de générer un grand nombre de modèles 2D ou 3D ayant des propriétés différentes. Dans ce cas de figure l'interface graphique est laborieuse car nécessite la répétition de plusieurs étapes pour générer chaque modèle.
En utilisant un script bash on peut automatiser cette tâche. Par exemple :
#!/bin/bash min=0 max=180 pas=10 for rotation in `seq $min $pas $max` do openscad -o "piece_$rotation.dxf" -D 'angle='$rotation'' fichier.scad done
Permet de générer des fichiers DXF en faisant varier l'angle de rotation définit dans fichier.scad