« Presentation openscad : Etape 4 » : différence entre les versions

De Wiki du ThiLab
(Page créée avec « Retour a la presentation == Etape 4 : la fonction de minkowski == Pour cette etape, nous allons ajouter l'element suivant aux elements deja cr... »)
 
(ajout palette)
 
(11 versions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
== Etape 4 : les polyedres ==


[[Presentation openscad|Retour a la presentation]]
Pour cette etape, nous allons ajouter l'element suivant aux elements deja crees :


== Etape 4 : la fonction de minkowski ==
[[Fichier:Oscc etape4a.png|200x200px|vignette|centre]]
 
Nous allons realiser cet element grace a l'utilisation d'un polyedre.
 
On definit un polyedre grace a un ensemble de points et de triangles reliant ces points qui formeront la surface du polyedre :
 
[[Fichier:Oscc etape4b.png|200x200px|vignette|centre]]
 
La syntaxe de la fonction polyedre est la suivante :
 
<source lang="c" enclose="div">
polyhedron(points=[...], triangles=[...]);
</source>
 
Les points vont etre definit par des triplets [x,y,z] ou x,y et z sont  les coordonnees des points et les triangles par des triplets [l,m,n] ou l,m et n sont les numero des points correspondant aux sommets des triangles. L'ordre d'apparition des points est donc important. <br />
 
Chaque triangle est oriente de telle maniere a ce que les 3 points le definissant semblent tourner dans le sens des aiguilles d'une montre quand on regarde vers l'interieur de l'objet. Si un triangle est mal oriente, openscad m'incluera pas le polyedre dans le compilation de l'objet (F6) ce qui peut donner des resultats inattendus, malgres que la previsualisation de l'objet (F5) affiche l'objet correctement.
 
Par example, le code suivant :
 
<source lang="c" enclose="div">
$fn=60;
 
union()
{
intersection()
{
translate([-10,-10,-10]) cube([20,20,20]);
sphere(r=12);
}
 
cylinder(r=7.5, h=20);
 
minkowski()
{
translate([-10,-10,-25]) cube([20,20,20]);
cylinder(r=2,h=1);
}
translate([-15,-15,-45]) polyhedron(points=[[0,0,20],[0,30,20],[30,30,20],[30,0,20], [-10,-10,0],[-10,40,0],[40,40,0],[40,-10,0]], triangles=[[1,0,2],[2,3,0], [1,0,4], [4,5,1], [5,6,1],[1,6,2],[2,6,7],[2,7,3],[3,7,4], [4,0,3], [4,6,5],[6,4,7]]);
}
</source>
 
sera correctement previsualise :
 
[[Fichier:Oscc etape4c.png|200x200px|vignette|centre]]
 
mais ne sera pas correctement compile :
 
[[Fichier:Oscc etape4d.png|200x200px|vignette|centre]]


Pour cette etape, nous allons ajouter l'element suivant aux elements deja crees
En effet, le triangle [1,0,2] n'est pas oriente dans le bon sens. Pour le voir, il suffit de presser F12 pour changer le mode de visualisation en "thrown together". On voit alors les faces mal orientees en violet :
 
[[Fichier:Oscc etape4e.png|200x200px|vignette|centre]]
 
Dans ce mode de visalisation , les operation booleennes sur les volumes ne sont pas prises en compte. Presser F9 pour revenir au mode de visualisation standard "OpenCSG".<br />
Pour corriger la compilation, remplacer le premier triangle par son equivalent correctement oriente : [0,1,2]. Pressez F12 pour verifier qu'il n'y a plus de triangle mal oriente. Pressez ensuite F6 pour verifier que la compilation a bien pris le polyedre en compte.


== Resultat de l'etape 4 ==
== Resultat de l'etape 4 ==
Ligne 11 : Ligne 66 :


<source lang="c" enclose="div">
<source lang="c" enclose="div">
use <openscad_course_tower.scad>
$fn=60;
$fn=60;


Ligne 31 : Ligne 84 :
}
}


translate([-15,-15,-45]) tower_base();
translate([-15,-15,-45]) polyhedron(points=[[0,0,20],[0,30,20],[30,30,20],[30,0,20], [-10,-10,0],[-10,40,0],[40,40,0],[40,-10,0]], triangles=[[1,0,2],[2,3,0], [1,0,4], [4,5,1], [5,6,1],[1,6,2],[2,6,7],[2,7,3],[3,7,4], [4,0,3], [4,6,5],[6,4,7]]);
}
}


Ligne 38 : Ligne 91 :
Ce qui nous donne cet objet :
Ce qui nous donne cet objet :


[[Fichier:Oscc etape4a.png|200x200px|vignette|centre]]
[[Fichier:Oscc etape4c.png|200x200px|vignette|centre]]


[[Presentation openscad|Retour a la presentation]]
{{Palette Présentation openscad}}

Dernière version du 21 février 2015 à 23:17

Etape 4 : les polyedres

Pour cette etape, nous allons ajouter l'element suivant aux elements deja crees :

Nous allons realiser cet element grace a l'utilisation d'un polyedre.

On definit un polyedre grace a un ensemble de points et de triangles reliant ces points qui formeront la surface du polyedre :

La syntaxe de la fonction polyedre est la suivante :

polyhedron(points=[...], triangles=[...]);

Les points vont etre definit par des triplets [x,y,z] ou x,y et z sont les coordonnees des points et les triangles par des triplets [l,m,n] ou l,m et n sont les numero des points correspondant aux sommets des triangles. L'ordre d'apparition des points est donc important.

Chaque triangle est oriente de telle maniere a ce que les 3 points le definissant semblent tourner dans le sens des aiguilles d'une montre quand on regarde vers l'interieur de l'objet. Si un triangle est mal oriente, openscad m'incluera pas le polyedre dans le compilation de l'objet (F6) ce qui peut donner des resultats inattendus, malgres que la previsualisation de l'objet (F5) affiche l'objet correctement.

Par example, le code suivant :

$fn=60;

union()
{
		intersection()
		{
			translate([-10,-10,-10]) cube([20,20,20]);
			sphere(r=12);
		}

		cylinder(r=7.5, h=20);

		minkowski()
		{
			translate([-10,-10,-25]) cube([20,20,20]);
			cylinder(r=2,h=1);
		}
	
		translate([-15,-15,-45]) 	polyhedron(points=[[0,0,20],[0,30,20],[30,30,20],[30,0,20], [-10,-10,0],[-10,40,0],[40,40,0],[40,-10,0]], triangles=[[1,0,2],[2,3,0], [1,0,4], [4,5,1], [5,6,1],[1,6,2],[2,6,7],[2,7,3],[3,7,4], [4,0,3], [4,6,5],[6,4,7]]);
}

sera correctement previsualise :

mais ne sera pas correctement compile :

En effet, le triangle [1,0,2] n'est pas oriente dans le bon sens. Pour le voir, il suffit de presser F12 pour changer le mode de visualisation en "thrown together". On voit alors les faces mal orientees en violet :

Dans ce mode de visalisation , les operation booleennes sur les volumes ne sont pas prises en compte. Presser F9 pour revenir au mode de visualisation standard "OpenCSG".
Pour corriger la compilation, remplacer le premier triangle par son equivalent correctement oriente : [0,1,2]. Pressez F12 pour verifier qu'il n'y a plus de triangle mal oriente. Pressez ensuite F6 pour verifier que la compilation a bien pris le polyedre en compte.

Resultat de l'etape 4

Le code apres l'etape 4 est donc le suivant :

$fn=60;

union()
{
		intersection()
		{
			translate([-10,-10,-10]) cube([20,20,20]);
			sphere(r=12);
		}

		cylinder(r=7.5, h=20);

		minkowski()
		{
			translate([-10,-10,-25]) cube([20,20,20]);
			cylinder(r=2,h=1);
		}

		translate([-15,-15,-45]) polyhedron(points=[[0,0,20],[0,30,20],[30,30,20],[30,0,20], [-10,-10,0],[-10,40,0],[40,40,0],[40,-10,0]], triangles=[[1,0,2],[2,3,0], [1,0,4], [4,5,1], [5,6,1],[1,6,2],[2,6,7],[2,7,3],[3,7,4], [4,0,3], [4,6,5],[6,4,7]]);
}

Ce qui nous donne cet objet :