Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


logiciels:openscad:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 17:49]
resonance [OpenSCAD]
logiciels:openscad:accueil [2018/02/11 22:31] (Version actuelle)
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 
-  * Contexte :  
-  * Fichiers : {{:logiciels:openscad:openscad_init.zip|tous les codes de cette page}} 
-  * Lien : http://www.openscad.org 
  
-===== Description ===== 
 {{:logiciels:openscad:window.small.png|}} {{:logiciels:openscad:window.small.png|}}
  
-"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, c'est-à-dire que la conception passe par la rédaction d'un script dans une sous-fenêtre située à gauche, tandis qu'une sous-fenêtre à droite permet de visualiser l'objet en 3D, mais pas de l'éditer.(wikipedia)+<blockquote>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, c'est-à-dire que la conception passe par la rédaction d'un script dans une sous-fenêtre située à gauche, tandis qu'une sous-fenêtre à droite permet de visualiser l'objet en 3D, mais pas de l'éditer. (wikipedia)</blockquote> 
 + 
 + 
 +  * Fichiers : {{:logiciels:openscad:openscad_init.zip|tous les codes de cette page}} 
 +  * Lien : http://www.openscad.org
  
 ===== Ressources===== ===== Ressources=====
Ligne 21: Ligne 18:
   * [[http://www.openscad.org/cheatsheet/|cheatsheet]]    * [[http://www.openscad.org/cheatsheet/|cheatsheet]] 
   * [[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_User_Interface|user interface]]    * [[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_User_Interface|user interface]] 
-===== Tutoriel ===== +  * [[http://openjscad.org/|éditeur en ligne]]  
-Photos ou guide pas à pas + 
-===== Photos ===== +===== Installation===== 
-Autres photosgalerie, ...+  * [[http://www.openscad.org/downloads.html|Téléchargement]] 
 +  * Bibliothèques à télécharger : 
 +    * [[https://github.com/elmom/MCAD|MCAD]] très pratique pour les pièces mécaniques (engrenages, moteurs, formes, etc.) 
 +    * [[http://www.thingiverse.com/thing:16193|Write.scad]] pour l'écriture de texte. 
 +    * [[https://github.com/JohK/nutsnbolts|nutsnbolts]] pour écrous et boulons. 
 +  * Plugins Inkscape 
 +    * [[http://libregraphicsworld.org/blog/entry/inkscape-gets-openscad-converter|Convertertisseur .dxf pour Inkscape]] 
 +    * [[http://www.thingiverse.com/thing:25036|Inkscape to OpenSCAD converter]] 
 + 
 +===== Exemples===== 
 +==== Primitives 3D et transformations==== 
 +{{:logiciels:openscad:exemple_1.png|}} 
 +++++ exemple_1.scad | 
 + 
 +<code c> 
 +// Unité = millimètre 
 +// Vecteur = point en 3D = [x,y,z] 
 + 
 +// CUBE 
 +// Arguments : dimensions (un nombre ou un vecteur), center (booléen) 
 +cube(5, true); 
 +translate([5,0,0]) 
 +    rotate([45,0,0]) 
 +        cube([5,10,2]); 
 + 
 +// SPHERE 
 +// Arguments : rayon, résolution ($fn), fragment angle ($fa), fragment size ($fs) 
 +translate([0,15,0]) sphere(5); 
 +translate([0,15,10]) sphere(5,$fn=5); 
 +translate([0,15,25]) scale(2) sphere(5,$fn=50); 
 + 
 +// CYLINDRE 
 +// Arguments : hauteur, rayon, rayon1, rayon2, center, $fa, $fs, $fn 
 +translate([0,-15,0]) color([1,0,0]) cylinder(h=10, r1=5, r2=10, center=true); 
 + 
 +// POLYHEDRE 
 +translate([0,-35,0]) 
 +polyhedron( 
 +  points=[ [10,10,0],[10,-10,0],[-10,-10,0],[-10,10,0], // the four points at base 
 +           [0,0,10]  ],                                 // the apex point  
 +  triangles=[ [0,1,4],[1,2,4],[2,3,4],[3,0,4],          // each triangle side 
 +              [1,0,3],[2,1,3] ]                         // two triangles for square base 
 + ); 
 +</code> 
 +++++ 
 + 
 +==== Modélisation simple avec opérations booléennes==== 
 +{{:logiciels:openscad:exemple_2.png|}} 
 +++++ exemple_2.scad | 
 + 
 +<code c> 
 +// DIFFERENCE 
 +difference(){ 
 +    cube(10, true); 
 + 
 +    cylinder(h=15, r=2,$fn=20,center=true); 
 +    rotate([90,0,0]) cylinder(h=15, r=2,$fn=20,center=true); 
 +    rotate([0,90,0]) cylinder(h=15, r=2,$fn=20,center=true); 
 +
 + 
 +// INTERSECTION 
 +translate([20,0,0]) 
 +intersection() { 
 +    sphere(6); 
 +    cube(10,true); 
 +
 + 
 +//UNION 
 +translate([40,0,0]) 
 +union() { 
 +    sphere(6); 
 +    cube(10,true); 
 +
 +</code> 
 +++++ 
 + 
 +==== Extrusion d'une forme 2D en 3D==== 
 +{{:logiciels:openscad:exemple_3.png|}} 
 +** difficulté pour extruder un .dxf ? > voir [[http://libregraphicsworld.org/blog/entry/inkscape-gets-openscad-converter|plugin Inkscape .scad converter]] 
 +++++ exemple_3.scad | 
 + 
 +<code c> 
 +// Rotation = révolution 
 +rotate_extrude($fn=20) polygon( points=[ [0,0],[2,6],[0,8] ] ); 
 + 
 +// Linéaire 
 +linear_extrude(height = 2) 
 +translate([3, 0, 0]) 
 +square(5); 
 + 
 +// Extrusion d'un fichier DXF 
 +linear_extrude(height = 2) 
 +scale (0.5) 
 +translate([20, 0, 0])  
 +import (file = "ohw.dxf"); 
 +</code> 
 +++++ 
 + 
 + 
 +==== Avantages du paramétrique ==== 
 +Possible aussi en python avec Freecad et Blender. 
 +{{:logiciels:openscad:exemple_4.png|}} 
 +difficulté pour extruder un .dxf ? > voir [[http://libregraphicsworld.org/blog/entry/inkscape-gets-openscad-converter|plugin Inkscape .scad converter]] 
 +++++ 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,profondeur,hauteur]); 
 +        color ([0,1,0])  
 +            translate ([0,profondeur/2,0])  
 +                cylinder(h=hauteur, r=profondeur/2); 
 +    } 
 +
 + 
 +module trous() { 
 +    for (i=[0:trou_nb-1]) { 
 +        translate([i*5,profondeur/2,-1])  
 +            cylinder(h=hauteur+2, r=trou_rayon); 
 +    } 
 +
 +</code> 
 +++++ 
 + 
 + 
 +==== Utilisation des bibliothèques ==== 
 +[[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries|References]] 
 +Il suffit de décompresser le dossier et de le mettre dans le dossier de travail, puis d'importer le fichier voulu dans le document openscad avec include <nombibliotheque/fichier.scad> 
 +{{:logiciels:openscad:exemple_5.png|}} 
 + 
 +++++ exemple_5.scad | 
 + 
 +<code c> 
 +/* 
 + * Utilisation des bibliothèques  
 + * - MCAD pour les engrenages et bien d'autres choses : https://github.com/elmom/MCAD 
 + * - nutsnbolts pour les écrous et boulons : https://github.com/JohK/nutsnbolts 
 + * - Write.scad pour le texte : http://www.thingiverse.com/thing:16193. 
 + * -- Attention, il faut placer les fichiers Letters.dxf et Write.scad dans le répertoire de travail 
 + */ 
 + 
 +// Importer les bibliothèques 
 +include <MCAD/motors.scad> 
 +include <MCAD/gears.scad> 
 +include <nutsnbolts/cyl_head_bolt.scad> 
 +include <Write.scad> 
 + 
 +// Moteur pas à pas Nema 17 
 +stepper_motor_mount(17); 
 + 
 +// Engrenages 
 +translate([0,0,15]) gear(number_of_teeth=51,circular_pitch=200); 
 +translate([0,0,15]) linear_extrude(height 10, center true, convexity 10, twist -45)  
 +    gear(number_of_teeth=17,diametral_pitch=1); 
 + 
 +// Écrous et boulons 
 +$fn=60; 
 +translate([35,10,0]) screw("M5x10"); 
 +translate([35,-10,0]) nut("M4"); 
 + 
 +// Lettres 
 +translate([0,0,35])  
 +rotate(90,[1,0,0]) 
 +write("Lieu de Fabrication Ouvert", h=4, t=1, center=true); 
 +</code> 
 +++++ 
 + 
 + 
 +==== Autres exemples ==== 
 + 
 +{{:logiciels:openscad:exemple_6.png|}} 
 + 
 +++++ exemple_6.scad | 
 + 
 +<code c> 
 +for(i=[0:36]) 
 +    translate([i*10,0,0]) 
 +       cylinder(r=5,h=cos(i*10)*50+60); 
 +</code> 
 +++++ 
 + 
 +{{:logiciels:openscad:exemple_7.png|}} 
 +[[http://golancourses.net/2014/category/13-parametric-object/|computational design]] 
 +++++ exemple_7.scad | 
 + 
 +<code c> 
 +seashell(5,2); 
 + 
 +module seashell(turns, spine) { 
 +    for ( i = [0 : 0.2 : turns] ) 
 +    { 
 +        rotate( i * 360/6, [100 * i, i, 0]) 
 +        difference () { 
 +            cylinder(h=i, r=i*spine/10, center = true); 
 +            cylinder(h=i/2, r=i*2, center = true); 
 +        } 
 +    } 
 +
 +</code> 
 +++++ 
 + 
 +==== Extrusion complexe ==== 
 + 
 +{{:logiciels:openscad:exemple_8.png|}} 
 + 
 +++++ exemple_8.scad | 
 + 
 +<code c> 
 +// Example009.scad from OpenSCAD examples 
 + 
 +bodywidth = dxf_dim(file = "example009.dxf", name = "bodywidth"); 
 +fanwidth = dxf_dim(file = "example009.dxf", name = "fanwidth"); 
 +platewidth = dxf_dim(file = "example009.dxf", name = "platewidth"); 
 +fan_side_center = dxf_cross(file = "example009.dxf", layer = "fan_side_center"); 
 +fanrot = dxf_dim(file = "example009.dxf", name = "fanrot"); 
 + 
 +% linear_extrude(height = bodywidth, center = true, convexity = 10) 
 +    import(file = "example009.dxf", layer = "body"); 
 + 
 +% for (z = [+(bodywidth/2 + platewidth/2), 
 +        -(bodywidth/2 + platewidth/2)]) 
 +
 +    translate([0, 0, z]) 
 +    linear_extrude(height = platewidth, center = true, convexity = 10) 
 +        import(file = "example009.dxf", layer = "plate"); 
 +
 + 
 +intersection() 
 +
 +    linear_extrude(height = fanwidth, center = true, convexity = 10, twist = -fanrot) 
 +        import(file = "example009.dxf", layer = "fan_top"); 
 +         
 +    // NB! We have to use the deprecated module here since the "fan_side" 
 +    // layer contains an open polyline, which is not yet supported 
 +    // by the import() module. 
 +    rotate_extrude(file = "example009.dxf", layer = "fan_side", 
 +        origin = fan_side_center, convexity = 10); 
 +
 +</code> 
 +++++ 
 + 
 +  * [[https://www.thingiverse.com/thing:34348|ex.1 fractal]] 
 +  * [[http://www.thingiverse.com/thing:156984|ex.2 fractal]] 
 +  * [[http://www.thingiverse.com/thing:19304|ex. gyroCube]] 
 +  * [[https://gist.github.com/t-paul/7171783|exparametrique]]
  
-Les mots clés (tags) représentant votre travail +{{:logiciels:openscad:loft.png|}} 
-{{tag>[tag1 tag2 tag3]}}+{{:logiciels:openscad:loft1.png|}}
/home/resonancg/www/wiki/data/attic/logiciels/openscad/accueil.1442418596.txt.gz · Dernière modification: 2015/09/16 17:49 de resonance