// GWS / crochet pour panneau mural : fixation à 2 broches dans un trou de Ø8,6 mm, espacement de 38 mm.
// OpenSCAD -> F6 -> Exporter le fichier STL.
$fn = 80 ;
// --- DIMENSIONS DU MUR ---
hole_d = 8.6 ; // le diamètre du trou (en mm)
Pitch = 38,0 ; // distance entre les rayons, du milieu au milieu (en mm)
Clearance = 0,25 ; // jeu (PETG 0,20–0,35, PLA 0,15–0,25)
panel_t = 3,5 ; // l'épaisseur du panneau (en mm) (ajustez si vous le savez)
// --- LES DIMENSIONS DE KOUKUN ---
hook_len = 70 ; // sortie d'urine (mm)
hook_drop = 25 ; // la hauteur à laquelle le crochet tombe (en mm)
hook_thk = 8 ; // l'épaisseur du crochet (Z)
hook_w = 18 ; // largeur de la poutre (Y)
nose_r = 4 ; // arrondissement de la pointe.
// --- TAPIS D'ANCRAGE ---
stem_d = hole_d - clearance ; // la partie qui passe à travers le trou.
stem_len = panel_t + 2.0 ; // un peu plus, mais pas beaucoup.
head_d = hole_d + 3.0 ; // etulaippa
head_thk = 2.2 ;
// --- BROSSE À DENTS (brosse flexible) ---
barb_h = 1.0 ; // ulkonema (mm)
barb_len = 3.2 ; // longueur (en mm)
barb_t = 1.6 ; // épaisseur (mm)
barb_zpos = panel_t - 0.4 ; // derrière le disque Osuu.
Le module rounded_box(x,y,z,r) {
minkowski(){
cube([x-2*r,y-2*r,z-2*r], center=true);
sphère(r=r);
}
)
Module barb() {
translate([stem_d/2 - 0.3, 0, barb_zpos])
linear_extrude(height=barb_len, center=false)
polygon(points=[
[0, -barb_t/2],
[barb_h, 0],
[0, barb_t/2]
]);
)
Le module stem_with_head() :
// etulaippa
translate([0,0,épaisseur_tête/2])
cylindre(d=head_d, h=head_thk, center=true);
// varsi
translate([0,0, épaisseur de la tête + longueur de la tige/2])
cylindre(d=stem_d, h=stem_len, center=true);
// 2 brosses opposées.
translate([0,0, head_thk]) barb();
Rotate([0,0,180]) Translate([0,0, head_thk]) Barb();
)
Le module hook_body() :
// Kaula + koukku
neck_len = 18 ;
// Kaula (devant la ligne médiane des épaules)
translate([0,0, épaisseur_tête + longueur_tige + épaisseur_crochet/2])
rotate([90,0,0])
rounded_box(hook_thk, hook_w, neck_len, 1.2);
// Crochet de balancement
translate([neck_len/2 + hook_len/2, 0, head_thk + stem_len + hook_thk/2])
rotate([90,0,0])
rounded_box(hook_thk, hook_w, hook_len, 1.2);
// Hélas, drop.
translate([neck_len/2 + hook_len - hook_thk/2, 0, head_thk + stem_len - hook_drop/2])
rotate([90,0,0])
rounded_box(hook_thk, hook_w, hook_drop, 1.2);
// Une pointe arrondie.
translate([neck_len/2 + hook_len, 0, head_thk + stem_len - hook_drop])
sphère(r=nose_r);
)
Plaque arrière du module.
// Une planche de soutien entre les traverses + un peu plus haut.
// Cela rend la fixation rigide.
plate_w = pitch + head_d + 8 ; // X
plate_h = hook_w + 8 ; // Y
plate_t = 4.0 ; // Z (derrière le volant)
translate([0,0, épaisseur de la tête + épaisseur de la plaque/2])
rounded_box(plate_w, plate_h, plate_t, 1.2);
)
union(){
// 2 touches : gauche et droite.
translate([-pitch/2, 0, 0]) stem_with_head();
translate([ pitch/2, 0, 0]) stem_with_head();
// Rigidité + crochet au milieu.
plaque arrière ;
hook_body();
)