Cappello Chiave

Progetto OpenSCAD


$fn = 50;

Spessore_Pareti = 2;
Diametro_Interno = 24;
Spessore_Interno = 2.5;
Diametro_esterno = Diametro_Interno + Spessore_Pareti;
Spessore_esterno = Spessore_Interno + Spessore_Pareti;
Bordo_Foro = 4;
Diametro_Foro = 6;
Bordo_Taglio_Inferiore = 6;
Testo = "CASA";
Carattere = "Arial:style=Narrow Bold";
Testo_Larghezza = Diametro_esterno - 5;
Testo_Altezza = Diametro_esterno - Bordo_Foro - Diametro_Foro - Bordo_Taglio_Inferiore; 

module Testo(){
      translate ([0 - (Testo_Larghezza / 2), (Diametro_esterno / 2) - Bordo_Foro - Diametro_Foro - Testo_Altezza, (Spessore_esterno / 2) + (Spessore_Pareti / 4)]) {
        resize ([Testo_Larghezza, Testo_Altezza, (Spessore_Pareti / 2)]){
            linear_extrude(height = 1, center = true){
                text(Testo, font = Carattere, size = 10);    
            };
        };  
    };  
};

module AnelloForo(){
    translate([0, (Diametro_esterno/2)-(Diametro_Foro/2)-Bordo_Foro, (Spessore_Interno/2)+(Spessore_Pareti/4)]) { 
        rotate_extrude(convexity = 10) {
            translate([Diametro_Foro/2, 0, 0]) {
                circle(r = (Spessore_Pareti/4));
            };
        };
    };    
};

translate([0, 0, (Diametro_esterno / 2) - Bordo_Taglio_Inferiore]) {
    rotate([90, 0, 0]){
       union(){  
           difference() {
                union(){
                    cylinder(h = Spessore_esterno, d = Diametro_esterno, center = true);
                    Testo();
                    rotate([0, 180, 0]){
                        Testo();
                    };
                };
                union() {
                    cylinder(h = Spessore_Interno, d = Diametro_Interno, center = true);
                    translate([0, ((Diametro_esterno / 2) - (Diametro_Foro / 2)) - Bordo_Foro, 0]) {
                        cylinder(h = (Spessore_esterno * 2), d = Diametro_Foro, center = true);
                    };
                    translate([0, 0 - (Diametro_esterno / 2), 0]) {
                        cube([(Diametro_esterno * 2), (Bordo_Taglio_Inferiore * 2), (Spessore_esterno * 2)], center = true);
                    };
                };
            };             
            AnelloForo();
            rotate([0, 180, 0]) {
                AnelloForo();            
            };
        };
    };
};

File STL