//OpenSCAD-Skript
// 2024-06-09 xsider    Anpassung 7mm Abstand
// 2024-06-03 xsider    Anpassungen an Raster 25

//Moduldefinition mit Parametern
//---------------------------------------------------------------------
module support (
//Parameter
b=250,      //Breite der Frontplatte, innenmaß für P0170 200x100mm
h=150,       //Höhe der Frontplatte
dick=3,     //Auflagedicke des Rahmens
chmfr=3,    //Maß der Kante (muss identisch sein mit Rahmen chmfr)
chmtyp=1,   //Typ der Kante 0:Fase, 1:Rundung (muss identisch sein mit Rahmen chmtyp)
fnn=32,     //Definition Anzahl Facetten der Rundung (muss identisch sein mit Rahmen fnn)
//Bohrungen außen (muss identisch sein mit Bohrungen Rahmen)
beschriftung = "P0188-15-a",


//Raster (muss identisch sein mit Rahmen x,y,segment) 
x=10,y=6,segment=25,
//Rasteroffsets (muss identisch sein mit Rahmen x_off,y_off)
x_off=0,y_off=0,
//Eintauchtiefe der Stützstruktur ins Gehäuse
intr=0,
//Rasterbohrungen und Stützgitter
diab=2.2,   // Kernloch Durchgangsloch für M2
diamat=5,   //Materialdurchmesser für Schraubenbefestigung
//Strebendefinition vertikale Streben
//Definition Schraubenblöcke
sm25 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm24 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm23 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm22 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm21 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm20 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm19 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm18 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm17 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm16 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm15 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm14 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm13 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm12 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm11 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm10 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm09 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm08 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm07 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm06 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm05 = [0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm04 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm03 = [0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm02 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
sm01 = [0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
)
//Beginn Modul
{
    difference(){   //difference 1
        union(){        //union 2
            //alles, was vor der nächsten geschweiften Klammer steht, wird zusammengefügt (union 2)
                translate([-b/2-1, -h/2-1, 0]) cube([b+2,h+2,dick]);
            //Schraubenblöcke
            //Schraubenzylinder
            for (i = [0:x]) {
            for (k = [0:y]) {
            translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,0]) cylinder(d=diamat, h=dick, $fn=fnn);}}

        }               //union 2 end
        //Schraubenlöcher abziehen
        for (i = [0:x]) {
        for (k = [0:y]) {
        sm=[sm01,sm02,sm03,sm04,sm05,sm06,sm07,sm08,sm09,sm10,sm11,sm12,sm13,sm14,sm15,sm16,sm17,sm18,sm19,sm20,sm21,sm22,sm23,sm24,sm25];
        if (sm[k-1][i-1]!=0) {    
            translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);}}
        }
        // Vertiefungen für die Leuchtbänder
        bandbreite=11;
        bandtiefe=2;
        bandlange=500;
        for (i= [-3:3] ) {
            translate([0,i*25+12.5,0])
            translate([-bandlange/2,-bandbreite/2,dick-bandtiefe/2])cube([bandlange,bandbreite,bandtiefe]);
        }
        // Lochbild für DCDC-Wandler M3-Gewinde DP6037
        translate([-90,38,0])
        {
        translate([52/2,29/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([-52/2,29/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([52/2,-29/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([-52/2,-29/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        }
        // Lochbild für DP100100 Optional
        translate([00,0,0])
        {
        translate([92/2,92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([-92/2,92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([92/2,-92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([-92/2,-92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        }
        
        // Lochbild für DP10062
        translate([85,0,0])
        {
        translate([54/2,92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([-54/2,92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([54/2,-92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        translate([-54/2,-92/2,intr-0.1])cylinder(d=2.5, h=2*dick, $fn=fnn);
        }
        
        // Beschriftung
        translate([55,-57,0.5])rotate([180,0,0])
        linear_extrude(height=1)
        text( text=beschriftung,size=10,font="osifont",valign=center,halign=center,$fn=50);
    }


}  //module end

//Hier werden Instanzen des Moduls aufgerufen
//rotate([0,180,0])  //auskommentieren für seitenrichtige Anzeige
translate([0,0,0]) support(); //in z-Richtung um -dick verschieben