Presentation openscad : Etape 4

De Wiki du ThiLab

Retour a la presentation

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 :

Retour a la presentation