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 :

Resultat de l'etape 4

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

use <openscad_course_tower.scad>

$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]) tower_base();
}

Ce qui nous donne cet objet :

Retour a la presentation