|
@@ -26,48 +26,48 @@ fix_ext désigne le diamètre externe de la fixation
|
|
|
***************************************************************************************/
|
|
|
module ressort_coord(x1 = -10, y1 = -10, x2 = -30, y2 = -30, tours = 2, largeur = 1, hauteur = 2, fix_int = 3, fix_ext = 5)
|
|
|
{
|
|
|
- difference()
|
|
|
- {
|
|
|
- union()
|
|
|
- {
|
|
|
- //création des fixations
|
|
|
- //point de départ
|
|
|
- translate([x1, y1])
|
|
|
- {cylinder(d = fix_ext, h = hauteur);}
|
|
|
-
|
|
|
- //point d'arrivé
|
|
|
- translate([x2, y2])
|
|
|
- {cylinder(d = fix_ext, h = hauteur);}
|
|
|
-
|
|
|
- //création de la spirale
|
|
|
- theta2 = calcule_angle_2d(x2, y2);
|
|
|
-
|
|
|
- theta1 = norm([x1, y1]) == 0 ? theta2 - tours * 360 : calcule_angle_2d(x1, y1);
|
|
|
- linear_extrude(hauteur)
|
|
|
- {
|
|
|
- spirale_log_coord(
|
|
|
- x1 + ((fix_ext - largeur)/2 ) * cos(theta1),
|
|
|
- y1 + ((fix_ext - largeur)/2 ) * sin(theta1),
|
|
|
- x2 + ((fix_ext - largeur)/2 ) * cos(theta2),
|
|
|
- y2 + ((fix_ext - largeur)/2 ) * sin(theta2),
|
|
|
- tours, largeur);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //création des trous de fixations
|
|
|
- //point de départ
|
|
|
- translate([x1, y1, -0.5])
|
|
|
- {cylinder(d = fix_int, h = hauteur + 1);}
|
|
|
-
|
|
|
- //point d'arrivé
|
|
|
- translate([x2, y2, -0.5])
|
|
|
- {cylinder(d = fix_int, h = hauteur + 1);}
|
|
|
- }
|
|
|
+ difference()
|
|
|
+ {
|
|
|
+ union()
|
|
|
+ {
|
|
|
+ //création des fixations
|
|
|
+ //point de départ
|
|
|
+ translate([x1, y1])
|
|
|
+ {cylinder(d = fix_ext, h = hauteur);}
|
|
|
+
|
|
|
+ //point d'arrivé
|
|
|
+ translate([x2, y2])
|
|
|
+ {cylinder(d = fix_ext, h = hauteur);}
|
|
|
+
|
|
|
+ //création de la spirale
|
|
|
+ theta2 = calcule_angle_2d(x2, y2);
|
|
|
+
|
|
|
+ theta1 = norm([x1, y1]) == 0 ? theta2 - tours * 360 : calcule_angle_2d(x1, y1);
|
|
|
+ linear_extrude(hauteur)
|
|
|
+ {
|
|
|
+ spirale_log_coord(
|
|
|
+ x1 + ((fix_ext - largeur)/2 ) * cos(theta1),
|
|
|
+ y1 + ((fix_ext - largeur)/2 ) * sin(theta1),
|
|
|
+ x2 + ((fix_ext - largeur)/2 ) * cos(theta2),
|
|
|
+ y2 + ((fix_ext - largeur)/2 ) * sin(theta2),
|
|
|
+ tours, largeur);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //création des trous de fixations
|
|
|
+ //point de départ
|
|
|
+ translate([x1, y1, -0.5])
|
|
|
+ {cylinder(d = fix_int, h = hauteur + 1);}
|
|
|
+
|
|
|
+ //point d'arrivé
|
|
|
+ translate([x2, y2, -0.5])
|
|
|
+ {cylinder(d = fix_int, h = hauteur + 1);}
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
module ressort_point(A = [0, 0], B = [10, 10], tours = 2, largeur = 1, hauteur = 2, fix_int = 3, fix_ext = 5)
|
|
|
{
|
|
|
- ressort_coord(A[0], A[1], B[0], B[1], tours, largeur, hauteur, fix_int, fix_ext);
|
|
|
+ ressort_coord(A[0], A[1], B[0], B[1], tours, largeur, hauteur, fix_int, fix_ext);
|
|
|
}
|
|
|
|
|
|
/***************************************************************************************
|
|
@@ -76,8 +76,8 @@ https://fr.wikipedia.org/wiki/%C3%89crou_hexagonal
|
|
|
***************************************************************************************/
|
|
|
module ecrou(largeur, hauteur)
|
|
|
{
|
|
|
- linear_extrude(hauteur)
|
|
|
- {polygone_regulier(cotes = 6, rayon = largeur/sqrt(3));}
|
|
|
+ linear_extrude(hauteur)
|
|
|
+ {polygone_regulier(cotes = 6, rayon = largeur/sqrt(3));}
|
|
|
}
|
|
|
|
|
|
module ecrou_M1(marge = 0.5, marge_h = 0, h = 0.8)
|
|
@@ -102,4 +102,4 @@ module ecrou_M8(marge = 0.5, marge_h = 0, h = 6.8)
|
|
|
{ecrou(largeur = 13 + marge, hauteur = h + marge_h);}
|
|
|
|
|
|
module ecrou_M10(marge = 0.5, marge_h = 0, h = 8.4)
|
|
|
-{ecrou(largeur = 17 + marge, hauteur = h + marge_h);}
|
|
|
+{ecrou(largeur = 17 + marge, hauteur = h + marge_h);}
|