# Bases # Introduction et interface Après avoir téléchargé **OpenSCAD** ([ici](http://www.openscad.org/downloads.html "http://www.openscad.org/downloads.html")), vous découvrirez une interface sans doute un peu aus tère si vous êtes habitués à des logiciels de modélisation "classiques" (Solidworks, Maya, 3DS, Blender, AutoCAD, … ) : [![01.png](https://wiki.liegehacker.space/uploads/images/gallery/2020-06/scaled-1680-/ULg5NfUnhHmJb5MW-01.png)](https://wiki.liegehacker.space/uploads/images/gallery/2020-06/ULg5NfUnhHmJb5MW-01.png) L'écran est donc divisé en 3 parties. -
A gauche, une partie où l'on écrira **le code de notre scène**.
-
En haut à droite, une partie **prévisualisation** où l'on verra notre objet
-
En bas à droite, une **console** qui nous indiquera la raison des erreurs éventuelles et nous donnera des informations diverses.
Dans la partie "code", nous pouvons faire appel à plusieurs primitives **2D** ou **3D** : le cube, la sphère, le cylindre, le cercle, le rectangle, etc… Chacun de ces objets peut être **modifié de plusieurs manières différentes** : redimensionnement, rotation, déplacement… Plusieurs opérations peuvent être appliquées à un ou plusieurs objets à la fois : opérations booléennes, enveloppe convexe, Enfin, il est également possible de faire appel à de la programmation plus traditionnelle pour calculer et paramétrer les objets obtenus. Mais nous sommes dans "**les bases**" et c'est donc par le début que nous allons commencer : le cube, la sphère et le cylindre et les opérations de base. # Les primitives 3D de base ### Cube Nous allons donc commencer par les primitives 3D et le cube : ```code cube([20,10,5]); ``` [![02.png](https://wiki.liegehacker.space/uploads/images/gallery/2020-06/scaled-1680-/2eNB2LLUWApC7qqD-02.png)](https://wiki.liegehacker.space/uploads/images/gallery/2020-06/2eNB2LLUWApC7qqD-02.png) donnera comme résultat un cube de 20 sur 10 sur 5 "unités de mesure". C'est à dire que si vous ouvrez le fichier 3D dans un logiciel d'impression 3D et que votre unité de mesure est le millimètre, vous aurez une forme de 20\*10\*5 mm : ![](https://wiki.lghs.be/_media/tuto:openscad:09.png) [![03.png](https://wiki.liegehacker.space/uploads/images/gallery/2020-06/scaled-1680-/puNpZONY4ZIjOYiw-03.png)](https://wiki.liegehacker.space/uploads/images/gallery/2020-06/puNpZONY4ZIjOYiw-03.png) ### Sphère Le deuxième objet auquel nous allons faire appel est la sphère.
``` sphere(r=5); ```
Vous pouvez employer "**r**" pour indiquer le rayon de la sphère ou "**d**" si vous préférez indiquer le diamètre. Nous allons voir ici un paramètre que nous pouvons retrouver pour toutes les primitives dans lesquelles il y a un sens qu'il s'y trouve : "**$fn**" qui permet de modifier la qualité de l'objet. ![](https://wiki.lghs.be/_media/tuto:openscad:05.png) Nous pouvons voir que la sphère est beaucoup plus lisse. Mais il ne faut pas oublier que le résultat est orienté impression 3D. Est-il nécéssaire de détailler ainsi une courbure qui ne sera formé que de quelques couches de plastiques? Le paramètre "**$fn**" sert donc à "forcer" la qualité. Si rien n'est indiqué, la qualité changera en fonction de la taille de la primitive ce qui assurera toujours une courbure cohérente et n'engendrant pas trop de faces, qu'elle que soit la taille de l'objet :
### Cylindre Nous allons enfin voir la dernière primitive 3D de base : le cylindre :
``` cylinder(r=5,h=20); ```
[![](https://wiki.lghs.be/_media/tuto:openscad:07.png)](https://wiki.lghs.be/_media/tuto:openscad:07.png "tuto:openscad:07.png") Le paramètre "**r**" sert toujours à indiquer le rayon et peut également être remplacé par "**d**" si l'on souhaite indiquer un diamètre. "**h**" sert à indiquer la hauteur de l'objet. Il est possible de faire appel à "**r1**" et "**r2**" ou "**d1**" et "**d2**" pour créer une figure conique :
``` cylinder(r1=5,r2=0,h=20); ```
[![](https://wiki.lghs.be/_media/tuto:openscad:08.png)](https://wiki.lghs.be/_media/tuto:openscad:08.png "tuto:openscad:08.png") ### Les opérations de base Plusieurs opérations sont réalisables sur un objet :
-
Le redimensionnement : opérations "**scale**" et "**resize**"
-
La translation : opération "**translate**"
-
La rotation : opération "**rotate**""
-
Le tout en même temps : "**matrix**"
Nous allons voir en détail chacune de ces opérations : ### Redimensionnement #### Scale
``` scale([4,2,1]) cube([10,10,10]); ```
[![](https://wiki.lghs.be/_media/tuto:openscad:10.png)](https://wiki.lghs.be/_media/tuto:openscad:10.png "tuto:openscad:10.png") Nous pouvons voir que la taille de notre cube de 10 au cube a été multipliée par 4 en X, 2 en Y et est restée la même en Z. nous pouvons faire appel aussi bien à un nombre qu'à une fraction
``` scale([400/100,200/100,100/100]) ```
ou
``` scale([8/2,4/2,2/2]) ```
donneront donc le même résultat. #### Resize
``` resize([40,20,10]) sphere(d=10,$fn=32); ```
[![](https://wiki.lghs.be/_media/tuto:openscad:11.png)](https://wiki.lghs.be/_media/tuto:openscad:11.png "tuto:openscad:11.png") Nous pouvons voir que resize force la taille de l'objet qui aura donc 40 unités de longueur en X, 20 en Y et 10 en Z. L'utilisation des fractions n'est pas très utile car si nous indiquons, par exemple :
``` resize([10,100/100,100/100]) sphere(d=10,$fn=32); ```
il ne va pas prendre 100% de la taille mais réduire la taille à 100 divisé par 100 = 1 :[![](https://wiki.lghs.be/_media/tuto:openscad:12.png)](https://wiki.lghs.be/_media/tuto:openscad:12.png "tuto:openscad:12.png") # Sphère Le deuxième objet auquel nous allons faire appel est la sphère. ```code sphere(r=5); ``` Vous pouvez employer "**r**" pour indiquer le rayon de la sphère ou "**d**" si vous préférez indiquer le diamètre. Nous allons voir ici un paramètre que nous pouvons retrouver pour toutes les primitives dans lesquelles il y a un sens qu'il s'y trouve : "**$fn**" qui permet de modifier la qualité de l'objet. ![](https://wiki.lghs.be/_media/tuto:openscad:05.png) Nous pouvons voir que la sphère est beaucoup plus lisse. Mais il ne faut pas oublier que le résultat est orienté impression 3D. Est-il nécéssaire de détailler ainsi une courbure qui ne sera formé que de quelques couches de plastiques? Le paramètre "**$fn**" sert donc à "forcer" la qualité. Si rien n'est indiqué, la qualité changera en fonction de la taille de la primitive ce qui assurera toujours une courbure cohérente et n'engendrant pas trop de faces, qu'elle que soit la taille de l'objet :