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

De Wiki du ThiLab
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 68 : Ligne 68 :


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


Ligne 88 : Ligne 86 :
}
}


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 95 : Ligne 93 :
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]]
[[Presentation openscad|Retour a la presentation]]

Version du 22 août 2014 à 20:57

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".

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