Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
logiciels:openscad:accueil [2015/09/16 18:07] resonance [Primitives 3D et transformations] |
logiciels:openscad:accueil [2018/02/11 22:31] resonance [Description] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== OpenSCAD ====== | ====== OpenSCAD ====== | ||
- | * Porteur du projet : OpenSCAD is maintained by Marius Kintel - marius[at]kintel.net | ||
- | * General inquiries can be sent to info@openscad.org | ||
- | * Licence : GPL v2 | ||
- | * Fichiers : {{: | ||
- | * Lien : http:// | ||
- | ===== Description ===== | ||
{{: | {{: | ||
- | "OpenSCAD est un logiciel de modélisation tridimensionnelle rudimentaire. C'est un logiciel libre qui fonctionne à la fois sous Linux, Mac OS et Microsoft Windows. Le projet a débuté en Février 2010. OpenSCAD a pour particularité de fonctionner de façon entièrement paramétrique, | + | < |
+ | |||
+ | |||
+ | * Fichiers : {{: | ||
+ | * Lien : http:// | ||
===== Ressources===== | ===== Ressources===== | ||
Ligne 23: | Ligne 21: | ||
===== Installation===== | ===== Installation===== | ||
- | | + | |
- | | + | |
- | | + | * [[https:// |
- | | + | * [[http:// |
- | | + | * [[https:// |
- | | + | * Plugins Inkscape |
- | | + | |
+ | * [[http:// | ||
===== Exemples===== | ===== Exemples===== | ||
==== Primitives 3D et transformations==== | ==== Primitives 3D et transformations==== | ||
{{: | {{: | ||
- | ** exemple_1.scad** | + | ++++ exemple_1.scad | |
- | ++++ | + | |
<code c> | <code c> | ||
// Unité = millimètre | // Unité = millimètre | ||
Ligne 67: | Ligne 66: | ||
</ | </ | ||
++++ | ++++ | ||
- | Les mots clés (tags) représentant votre travail | + | |
- | {{tag>[tag1 tag2 tag3]}} | + | ==== Modélisation simple avec opérations booléennes==== |
+ | {{: | ||
+ | ++++ exemple_2.scad | | ||
+ | |||
+ | <code c> | ||
+ | // DIFFERENCE | ||
+ | difference(){ | ||
+ | cube(10, true); | ||
+ | |||
+ | cylinder(h=15, | ||
+ | rotate([90, | ||
+ | rotate([0, | ||
+ | } | ||
+ | |||
+ | // INTERSECTION | ||
+ | translate([20, | ||
+ | intersection() { | ||
+ | sphere(6); | ||
+ | cube(10, | ||
+ | } | ||
+ | |||
+ | //UNION | ||
+ | translate([40, | ||
+ | union() { | ||
+ | sphere(6); | ||
+ | cube(10, | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ==== Extrusion d'une forme 2D en 3D==== | ||
+ | {{: | ||
+ | ** difficulté pour extruder un .dxf ? > voir [[http:// | ||
+ | ++++ exemple_3.scad | | ||
+ | |||
+ | <code c> | ||
+ | // Rotation = révolution | ||
+ | rotate_extrude($fn=20) polygon( points=[ [0, | ||
+ | |||
+ | // Linéaire | ||
+ | linear_extrude(height = 2) | ||
+ | translate([3, | ||
+ | square(5); | ||
+ | |||
+ | // Extrusion d'un fichier DXF | ||
+ | linear_extrude(height = 2) | ||
+ | scale (0.5) | ||
+ | translate([20, | ||
+ | import (file = " | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | ==== Avantages du paramétrique ==== | ||
+ | Possible aussi en python avec Freecad et Blender. | ||
+ | {{: | ||
+ | difficulté pour extruder un .dxf ? > voir [[http:// | ||
+ | ++++ exemple_4.scad | | ||
+ | |||
+ | <code c> | ||
+ | /* | ||
+ | * EXEMPLE 4 : avantages d'un logiciel paramétrique | ||
+ | * Accès aux principes de bases de la programmation : | ||
+ | * Structures et fonctions | ||
+ | */ | ||
+ | |||
+ | // --------- Programme principal ---------------- // | ||
+ | // Appel des modules, etc. | ||
+ | |||
+ | difference(){ | ||
+ | support(); | ||
+ | trous(); | ||
+ | } | ||
+ | |||
+ | // --------- Variables (ou plutôt constantes) -- // | ||
+ | longueur = 50; | ||
+ | hauteur = 5; | ||
+ | profondeur = 15; | ||
+ | trou_rayon = 2; | ||
+ | trou_nb = 6; | ||
+ | $fn=20; | ||
+ | |||
+ | // --------- Modules --------------------------- // | ||
+ | module support() { | ||
+ | union(){ | ||
+ | cube([longueur, | ||
+ | color ([0,1,0]) | ||
+ | translate ([0, | ||
+ | cylinder(h=hauteur, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | module trous() { | ||
+ | for (i=[0: | ||
+ | translate([i*5, | ||
+ | cylinder(h=hauteur+2, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | ==== Utilisation des bibliothèques ==== | ||
+ | [[https:// | ||
+ | Il suffit de décompresser le dossier et de le mettre dans le dossier de travail, puis d' | ||
+ | {{: | ||
+ | |||
+ | ++++ exemple_5.scad | | ||
+ | |||
+ | <code c> | ||
+ | /* | ||
+ | * Utilisation des bibliothèques | ||
+ | * - MCAD pour les engrenages et bien d' | ||
+ | * - nutsnbolts pour les écrous et boulons : https:// | ||
+ | * - Write.scad pour le texte : http:// | ||
+ | * -- Attention, il faut placer les fichiers Letters.dxf et Write.scad dans le répertoire de travail | ||
+ | */ | ||
+ | |||
+ | // Importer les bibliothèques | ||
+ | include < | ||
+ | include < | ||
+ | include < | ||
+ | include < | ||
+ | |||
+ | // Moteur pas à pas Nema 17 | ||
+ | stepper_motor_mount(17); | ||
+ | |||
+ | // Engrenages | ||
+ | translate([0,0,15]) gear(number_of_teeth=51, | ||
+ | translate([0, | ||
+ | gear(number_of_teeth=17, | ||
+ | |||
+ | // Écrous et boulons | ||
+ | $fn=60; | ||
+ | translate([35, | ||
+ | translate([35, | ||
+ | |||
+ | // Lettres | ||
+ | translate([0, | ||
+ | rotate(90, | ||
+ | write(" | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | |||
+ | ==== Autres exemples ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ++++ exemple_6.scad | | ||
+ | |||
+ | <code c> | ||
+ | for(i=[0: | ||
+ | translate([i*10, | ||
+ | | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | {{: | ||
+ | [[http:// | ||
+ | ++++ exemple_7.scad | | ||
+ | |||
+ | <code c> | ||
+ | seashell(5, | ||
+ | |||
+ | module seashell(turns, | ||
+ | for ( i = [0 : 0.2 : turns] ) | ||
+ | { | ||
+ | rotate( i * 360/6, [100 * i, i, 0]) | ||
+ | difference () { | ||
+ | cylinder(h=i, | ||
+ | cylinder(h=i/ | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ==== Extrusion complexe ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ++++ exemple_8.scad | | ||
+ | |||
+ | <code c> | ||
+ | // Example009.scad from OpenSCAD examples | ||
+ | |||
+ | bodywidth = dxf_dim(file = " | ||
+ | fanwidth = dxf_dim(file = " | ||
+ | platewidth = dxf_dim(file = " | ||
+ | fan_side_center = dxf_cross(file = " | ||
+ | fanrot = dxf_dim(file = " | ||
+ | |||
+ | % linear_extrude(height = bodywidth, center = true, convexity = 10) | ||
+ | import(file = " | ||
+ | |||
+ | % for (z = [+(bodywidth/ | ||
+ | -(bodywidth/ | ||
+ | { | ||
+ | translate([0, | ||
+ | linear_extrude(height = platewidth, center = true, convexity = 10) | ||
+ | import(file = " | ||
+ | } | ||
+ | |||
+ | intersection() | ||
+ | { | ||
+ | linear_extrude(height = fanwidth, center = true, convexity = 10, twist = -fanrot) | ||
+ | import(file = " | ||
+ | |||
+ | // NB! We have to use the deprecated module here since the " | ||
+ | // layer contains an open polyline, which is not yet supported | ||
+ | // by the import() module. | ||
+ | rotate_extrude(file = " | ||
+ | origin = fan_side_center, | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | |||
+ | {{: | ||
+ | {{: |