//--------------------------------------------------------------------- // // OpenSCAD-Script for mosaic 50x50mm window frame // // derived from: // https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/ //--------------------------------------------------------------------- // // 2024-06-03 xsider modified for grid 25mm and M2-screws // //--------------------------------------------------------------------- $fn=32; //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 //M2-Schrauben M2=true, //Bohrungen für M3-Zylinderkopf-Inbusschraube skd3=4.3, //Schraubenkopfdurchmesser M3-Schraube skh3=2, //Schraubenkopfhöhe M3-Schraube dsh3=2.2, //Schaftdurchmesser M3-Schraube dvst3=6.3, //Verstärkung für M3-Schraube //Schneidschrauben 2mmx6mm B2mm=false, //Bohrungen für 2mm-Schneidschrauben //Beschriftungsfeld eingesenkt Btext=6.2, //Breite Beschriftungsband Ltext=30.2, //Länge Beschriftungsband Dtext=0.2, //Tiefe Beschriftungsfeld, oder Null TRSdia=8.0, //Bohrung für Telefonbuchse 4mm //MC-Einbaubuchse ) //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]); //Rahmenaufdoppelung für Acrylscheibe 2x1mm translate([25-21,25-21,-1.8])cube([42,42,2]); translate([12.5,3+1.5,-1.8])cylinder(h=2,r=2.5,center=false); translate([25+12.5,3+1.5,-1.8])cylinder(h=2,r=2.5,center=false); translate([12.5,50-4.5,-1.8])cylinder(h=2,r=2.5,center=false); translate([25+12.5,50-4.5,-1.8])cylinder(h=2,r=2.5,center=false); } //union 2 end //alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2) //Einsenkung in das Segment polyhedron( points= [[wu,wu,thick], //0 unten [xwert*segment-wu,wu,thick], //1 unten [xwert*segment-wu,ywert*segment-wu,thick], //2 unten [wu,ywert*segment-wu,thick], //3 unten [wo,wo,hght+0.01], //4 oben [wo,ywert*segment-wo, hght+0.01], //5 oben [xwert*segment-wo,ywert*segment-wo,hght+0.01], //6 oben [xwert*segment-wo,wo,hght+0.01], //7 oben ], faces= [[0,1,2,3], //Boden [0,4,7,1], //Deckel [1,7,6,2], //Front [2,6,5,3], //Seitenwand rechts [3,5,4,0], //Rückwand [4,5,6,7]] //Seitenwand links ); } //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]) { if (M2==true) translate([x,0,0]) cylinder(d=dvst3,h=hght,$fn=16); if (B2mm==true) translate([x,0,0]) cylinder(d=dvst2,h=hght,$fn=16); } //Verstärkungen für Schrauben x-Achse oben for (x=[0:segment:xwert*segment]) { if (M2==true) translate([x,ywert*segment,0]) cylinder(d=dvst3,h=hght,$fn=16); if (B2mm==true) translate([x,ywert*segment,0]) cylinder(d=dvst2,h=hght,$fn=16); } //Verstärkungen für Schrauben y-Achse links for (y=[0:segment:ywert*segment]) { if (M2==true) translate([0,y,0]) cylinder(d=dvst3,h=hght,$fn=16); if (B2mm==true) translate([0,y,0]) cylinder(d=dvst2,h=hght,$fn=16); } //Verstärkungen für Schrauben y-Achse rechts for (y=[0:segment:ywert*segment]) { if (M2==true) translate([xwert*segment,y,0]) cylinder(d=dvst3,h=hght,$fn=16); if (B2mm==true) translate([xwert*segment,y,0]) cylinder(d=dvst2,h=hght,$fn=16); } /* //Abflachungen für 4mm-MC-Buchse (Mindestgröße 2x2) translate([xwert*segment/2-5,ywert*segment/2+MCdist/2,0]) cube([10,3,thick]); translate([xwert*segment/2-5,ywert*segment/2-MCdist/2-3,0]) cube([10,3,thick]); */ } //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]) { if (M2==true) translate([x,0,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16); if (M2==true) translate([x,0,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16); if (B2mm==true) translate([x,0,-0.1]) cylinder(d=dsh2,h=2*hght,$fn=16); if (B2mm==true) translate([x,0,hght-skh2]) cylinder(d=skd2,h=2*hght,$fn=16); } //Bohrungen für Schrauben x-Achse oben for (x=[0:segment:xwert*segment]) { if (M2==true) translate([x,ywert*segment,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16); if (M2==true) translate([x,ywert*segment,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16); if (B2mm==true) translate([x,ywert*segment,-0.1]) cylinder(d=dsh2,h=2*hght,$fn=16); if (B2mm==true) translate([x,ywert*segment,hght-skh2]) cylinder(d=skd2,h=2*hght,$fn=16); } //Bohrungen für Schrauben y-Achse links for (y=[0:segment:ywert*segment]) { if (M2==true) translate([0,y,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16); if (M2==true) translate([0,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16); if (B2mm==true) translate([0,y,-0.1]) cylinder(d=dsh2,h=2*hght,$fn=16); if (B2mm==true) translate([0,y,hght-skh2]) cylinder(d=skd2,h=2*hght,$fn=16); } //Bohrungen für Schrauben y-Achse rechts for (y=[0:segment:ywert*segment]) { if (M2==true) translate([xwert*segment,y,-0.1]) cylinder(d=dsh3,h=2*hght,$fn=16); if (M2==true) translate([xwert*segment,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=16); if (B2mm==true) translate([xwert*segment,y,-0.1]) cylinder(d=dsh2,h=2*hght,$fn=16); if (B2mm==true) translate([xwert*segment,y,hght-skh2]) cylinder(d=skd2,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]); // Ausschnitt Vertiefung Acrylglasplatte translate([25-19,25-18,-2])cube([38,36,2]); // Ausschnitt Sichtfenster translate([25-17,25-16,-5])cube([34,32,10]); // Kernlochbohrungen translate([12.5,3+1.5,-3])cylinder(h=4,r=0.9,center=false); translate([25+12.5,3+1.5,-3])cylinder(h=4,r=0.9,center=false); translate([12.5,50-4.5,-3])cylinder(h=4,r=0.9,center=false); translate([25+12.5,50-4.5,-3])cylinder(h=4,r=0.9,center=false); // Anfasung Frontfenster FrontPoints = [ [ 0, 0, 0 ], //5 [ 38, 0, 0 ], //6 [ 38, 36, 0 ], //7 [ 0, 36, 0 ], //8 [ 2, 2, 2 ], //1 [ 36, 2, 2 ], //2 [ 36, 34, 2 ], //3 [ 2, 34, 2 ], // 4 ]; FrontFaces = [ [0,1,2,3], // bottom [4,5,1,0], // front [7,6,5,4], // top [5,6,2,1], // right [6,7,3,2], // back [7,4,0,3]]; // left translate([(50-38)/2,36+7,3])rotate([180,0,0])polyhedron( FrontPoints, FrontFaces ); } //difference 1 end } //module end //Hier werden Instanzen des Moduls aufgerufen translate([0,0,0]) FrontElem();