P0188_Mosaik_Frontplatte/openscad/P0188-25-a_FrontElement_2x2_Steckdose_System_45.scad
2024-09-08 16:21:06 +02:00

170 lines
5.8 KiB
OpenSCAD

//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm Schuko Socket
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern für Frontplattensystem im 19mm-Raster
module FrontElem (
//Frontplattenelement
xwert=2, //Anzahl der Segmente in horizontaler Richtung
ywert=2, //Anzahl der Segmente in vertikaler Richtung
segment=25, //Kantenlänge des Segments
hght=3.0, //Höhe des Rands des Frontplattensegments
thick=2, //verbleibende Dicke des Frontplattensegments
wo=1.0, //Wandstärke oben
wu=2.0, //Wandstärke unten
splt = 0.05, // Luftspalt
skd3=4.3, //Schraubenkopfdurchmesser M2-Schraube
skh3=2, //Schraubenkopfhöhe M2-Schraube
dsh3=2.2, //Schaftdurchmesser M2-Schraube
dvst3=6.3, //Verstärkung für M2-Schraube
)
//Beginn Modul
{
difference()
{ //difference 1
union()
{ //union 1
difference()
{ //difference 2
union()
{ //union 2
//alles, was vor der nächsten geschweiften Klammer steht, wird zusammengefügt (union 2)0
//Körper des Frontplattensegments
cube([xwert*segment, ywert*segment, hght]);
// umlaufend 0.2mm Luft
translate([1.3,1.3,-13+3])cube([47.4,47.4,13-1]);
} //union 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2)
} //difference 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird dazu hinzugefügt (union 1)
//Verstärkungen für Schrauben x-Achse unten
for (x=[0:segment:xwert*segment])
{
translate([x,0,0]) cylinder(d=dvst3,h=hght,$fn=16);
}
//Verstärkungen für Schrauben x-Achse oben
for (x=[0:segment:xwert*segment])
{
translate([x,ywert*segment,0]) cylinder(d=dvst3,h=hght,$fn=16);
}
//Verstärkungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
{
translate([0,y,0]) cylinder(d=dvst3,h=hght,$fn=16);
}
//Verstärkungen für Schrauben y-Achse rechts
for (y=[0:segment:ywert*segment])
{
translate([xwert*segment,y,0]) cylinder(d=dvst3,h=hght,$fn=16);
}
} //union 1 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon wieder abgezogen (difference 1)
//Bohrungen für Schrauben x-Achse unten
for (x=[0:segment:xwert*segment])
{
translate([x,0,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16);
translate([x,0,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16);
}
//Bohrungen für Schrauben x-Achse oben
for (x=[0:segment:xwert*segment])
{
translate([x,ywert*segment,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16);
translate([x,ywert*segment,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16);
}
//Bohrungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
{
translate([0,y,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16);
translate([0,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16);
}
//Bohrungen für Schrauben y-Achse rechts
for (y=[0:segment:ywert*segment])
{
translate([xwert*segment,y,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16);
translate([xwert*segment,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16);
}
//Abschneiden Verstärkungen unten
translate([-250,-10,-0.1])
cube([500,10,25]);
//Abschneiden Verstärkungen oben
translate([-250,ywert*segment,-0.1])
cube([500,10,25]);
//Abschneiden Verstärkungen links
translate([-10,-250,-0.1])
cube([10,500,25]);
//Abschneiden Verstärkungen rechts
translate([xwert*segment,-250,-0.1])
cube([10,500,25]);
// cutout for 45mm plug insert
translate([2.45,2.45,-8.6+3])cube([45.1,45.1,8.6+1]);
//
translate([4.65,4.65,-15])cube([40.7,40.7,20]);
ddome=5.4;
h=30;
fn=256;
// Cutout for screw domes in Grind
for (x=[0:segment:xwert*segment])
{
translate([x,0,-h]) cylinder(d=ddome,h=h,$fn=fn);
}
//Bohrungen für Schrauben x-Achse oben
for (x=[0:segment:xwert*segment])
{
translate([x,ywert*segment,-h]) cylinder(d=ddome,h=h,$fn=fn);
}
//Bohrungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
{
translate([0,y,-h]) cylinder(d=ddome,h=h,$fn=fn);
}
//Bohrungen für Schrauben y-Achse rechts
for (y=[0:segment:ywert*segment])
{
translate([xwert*segment,y,-h]) cylinder(d=ddome,h=h,$fn=fn);
}
//Bohrungen für Schrauben x-Achse unten
for (x=[0:segment:xwert*segment])
{
translate([x,0,-h]) cylinder(d=ddome,h=h,$fn=fn);
}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();