Ceci est une ancienne révision du document !
Table des matières
Initiation OpenScad
OpenSCAD est un logiciel de modélisation 3D. Son originalité réside dans les faits que les volumes y sont décrit avec du code, ce qui est fort plaisant pour qui aime en écrire.
Liens utiles
Concepts de bases
Installation
La version packagée dans les Debian Stable est tout à fait satisfaisante pour une utilisation normale :
apt-get install openscad
Il est toujours intéressant de faire un tour dans les préférences, entre autres pour choisir sa palette de couleur préférée et activer l'éditeur avancé.
Encore mieux : on peut activer l'option Recharger et Aperçu automatique
dans le menu Conception
, puis fermer l'éditeur intégré afin d'utiliser plutôt son éditeur de texte préféré.
Créer des volumes
Comme expliqué dans le cheat sheet, une certain nombre de primitve 3D sont disponibles.
Bien que cela ne soit pas obligatoire, il est recommandé de toujours nommer les paramètres des fonctions explicitement afin de s'économiser du temps à la relecture.
Les principales primitives sont les suivantes :
sphere(radius | d=diameter)
qui permet de dessiner des sphères.
cube([width,depth,height], center)
qui permet de dessiner non seulement des cubes, mais aussi des parallélépipèdes rectangles d'une façon générales.
cylinder(h,r1|d1,r2|d2,center)
qui permet de dessiner non seulement des cylindres, mais également des cônes ou tronc de cônes.
Voici un exemple à copier-coller pour avoir un aperçu rapide des possibilités :
/* On définit une sphère par son rayon */ sphere(r = 42); /* On définit une sphère par son diamètre */ translate([100, 0, 0]) sphere(d = 42); /* On définit un cube régulier de coté trente */ translate([0, 100, 0]) cube(30); /* On définit une cube avec des dimensions differentes suivant les axes, centrée sur l´origine */ translate([100, 100, 0]) cube([10, 20, 30], center = true); /* Les cylindre sont définit par leur hauteur et par leur largeur */ translate([0, 200, 0]) cylinder(h = 42, r = 12); /* Le largeur peut être différente aux deux extrémités. La hauteur peut être centrée */ translate([100, 200, 0]) cylinder(h = 42, r1 = 12, d2 = 42, center = true);
Primitives 2D
Les principales primitives 2D sont les suivantes :
circle(radius | d=diameter)
permet de dessiner des cercles.
square([width,height],center)
permet de dessiner non seulement des carrés, mais plus généralement des rectangles.
text(text, size, font, halign, valign, spacing, direction, language, script)
Permet d'écrire facilement du texte avec n'importe-quelle police installée sur le système hôte.
Ces primitives sont couramment utilisés en association avec les fonctions d'extrusions :
linear_extrude(height,center,convexity,twist,slices,scale) rotate_extrude(angle,convexity)
Voici un exemple à copier-coller pour avoir un aperçu de ce qu'il est possible d'en faire :
// On extrude linéairement sur 25mm linear_extrude(height = 25) { // On définit un carré régulier de coté trente translate([200, 100]) square(30); // On définit un carré avec des dimensions differentes suivant les axes, centrée sur l'origine translate([300, 100]) square([10, 20], center = true); } // L'extrusion rotative permet de définir facilement des formes toriques // Attention, le paramètres 'angle' n'est disponible qu'à partir de la version 2016.XX rotate_extrude(angle = 142) { // On définit un cercle par son rayon translate([150, 0]) circle(r = 42); // On définit un cercle par son diamètre translate([150, 100]) circle(d = 42); } translate([0,300]) linear_extrude(25) { // Il est très facile d'écrire text("Beautiful is better than ugly"); // Toutes les polices du systèmes sont disponibles translate([0, -40]) text("Explicit is better than implicit.", size = 12, font = "Courier:style=Bold Italic"); }