Projekt P0188 angelegt

This commit is contained in:
xsider 2024-09-08 16:21:06 +02:00
commit 283033a278
128 changed files with 64137 additions and 0 deletions

51
README.md Normal file
View File

@ -0,0 +1,51 @@
# Mosaik Frontplatten
![Ansicht Frontelement](bilder/P0188-24-a_Frontelement_2x1_2mm-.jpg)
Frontplattensystem im Rastermaß 25/50mm für M2 und M3 Schrauben
Kombinierbar mit P0170
|Teilenummer|Bezeichnung |
|-----------|-----------------------------------------:|
|<del>P0188-01-a</del>|<del>Raster für 200x100 M2, Gewinde geschnitten</del> |
|P0188-01-b|Raster für 200x100 M2, Gewinde geschnitten, Schrauben an den Rahmenkanten Abstand vergrößert |
|P0188-02-a|Frontelement 2x1 4mm Buchsen\\ \\ Beschriftungsfenster 6x30mm |
|P0188-03-a|Frontelement 1x1 blank |
|P0188-04-a|Frontelement 2x1 blank |
|P0188-05-a|Frontelement 2x2 blank |
|P0188-06-a|Raster für 300x200 M2, Gewinde geschnitten, Eckbohrugen noch zu dicht beieinander |
|P0188-07-a|Frontelement 2x2 Anzeigefenster |
|P0188-08-a|Diarahmen 2x2 für -07 |
|P0188-09-a|Frontelement 2x3 Anzeigefenster groß |
|P0188-10-a|Acryleinsatz Anzeigefenster groß |
|<del>P0188-11-a</del>| |
|P0188-11-b|Raster für Anzeige 300x200 M2, Gewinde geschnitten, Schrauben an den Rahmenkanten Abstand vergrößert |
|P0188-12-a|Acryleinsatz Anzeigefenster 2x2 M3 |
|P0188-13-a|Raster für Anzeige 300x200 M3, Gewinde geschnitten |
|P0188-14-a| |
|P0188-15-a|Rückwand für Anzeige 300x200 M2, Gewinde geschnitten |
|P0188-16-a|Rückwand für Anzeige 300x200 M3, Gewinde geschnitten |
|P0188-17-a|Frontelement 1x1 Anzeige |
|P0188-18-a|Anzeigefenster 1x1 |
|P0188-19-a|Reflektor 1x1 Anzeige |
|<del>P0188-20-a</del>|<del>Wandhalter 200mm für Panel 300x200, Schlitze für M5</del> |
|P0188-20-b|Wandhalter 200mm für Panel 300x200, Schlitze für M6, größerer Abstand zur Wand. |
|P0188-21-a|Haltescheiben Durchmesser 10mm für -20 |
|P0188-22-a|Kabelhalter M2 50mm lang |
|P0188-23-a|Kabelhalter M3 50mm lang |
|P0188-24-a|Frontelement 2x1 2mm Buchsen\\ \\ Beschriftungsfenster 6x30mm |
|P0188-25-a|Frontelement 2x2 Steckdoseneinsatz System 45 M2\\ \\ Frontausschnitt ist noch etwas zu eng |
|<del>P0188-26-a</del>|<del>Frontelement 2x2 Steckdoseneinsatz System 45 M3<del> |
|P0188-26-b|Frontelement 2x2 Steckdoseneinsatz System 45 M3 Frontausschnitt erweitert |
|P0188-27-a|Frontplatte Blind 2x2 M3 Flachrundkopfschrauben |
|P0188-28-a|Raster für Steckdoseneinsatz 3,5 Felder (rechts offen) |
|P0188-29-a|Raster für Steckdoseneinsatz 4 Felder +2x0,5 (Mittenteile)\\ \\ Durch diese Aufteilung ist eine Überlappung um mind.2 Schrauben an den Stoßstellen sichergestellt|
|P0188-30-a|Firmware für Arduino Mega World Domination Panel |
|P0188-31-a|Software Statuswebserver World Domination Panel |
## Quellen
- Mosaikfrontplatten\\[https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten](https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten)
- Schriftart Osifont für Teilebeschriftung (Erhaben oder Versenkt)\\[https://github.com/hikikomori82/osifont](https://github.com/hikikomori82/osifont)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
datenblätter/WS2812.pdf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
freecad/osifont.ttf Normal file

Binary file not shown.

View File

@ -0,0 +1,273 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic grid 25 mm 300x100 baseplate
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern
module support (
//Parameter
b=169.8, //Breite der Frontplatte, innenmaß für P0170 200x100mm
h=69.8, //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)
// Bohrungen für M3 Kernloch 2.5 +0.1 Toleranz
x01=80,y01=25,d01=1.8,
x02=80,y02=0,d02=1.8,
x03=80,y03=-25,d03=1.8,
x04=75,y04=30,d04=1.8,
x05=75,y05=-30,d05=1.8,
x06=50,y06=30,d06=1.8,
x07=50,y07=-30,d07=1.8,
x08=25,y08=30,d08=1.8,
x09=25,y09=-30,d09=1.8,
x10=00,y10=30,d10=1.8,
x11=00,y11=-30,d11=1.8,
x12=-25,y12=30,d12=1.8,
x13=-25,y13=-30,d13=1.8,
x14=-50,y14=30,d14=1.8,
x15=-50,y15=-30,d15=1.8,
x16=-75,y16=30,d16=1.8,
x17=-75,y17=-30,d17=1.8,
x18=-80,y18=25,d18=1.8,
x19=-80,y19=0,d19=1.8,
x20=-80,y20=-25,d20=1.8,
//Raster (muss identisch sein mit Rahmen x,y,segment)
x=6,y=2,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=7,
//Rasterbohrungen und Stützgitter
diab=1.8, // Kernloch 1.6 + 0.1 für Drucktoleranz
diamat=5, //Materialdurchmesser für Schraubenbefestigung
wall=2, //Wandstärke Verbindungsstreben
//Strebendefinition vertikale Streben
vv25 = [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],
vv24 = [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],
vv23 = [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],
vv22 = [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],
vv21 = [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],
vv20 = [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],
vv19 = [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],
vv18 = [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],
vv17 = [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],
vv16 = [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],
vv15 = [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],
vv14 = [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],
vv13 = [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],
vv12 = [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],
vv11 = [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],
vv10 = [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],
vv09 = [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],
vv08 = [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],
vv07 = [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],
vv06 = [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],
vv05 = [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],
vv04 = [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],
vv03 = [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],
vv02 = [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
vv01 = [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
//Strebendefinition horizontale Streben
vh25 = [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],
vh24 = [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],
vh23 = [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],
vh22 = [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],
vh21 = [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],
vh20 = [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],
vh19 = [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],
vh18 = [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],
vh17 = [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],
vh16 = [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],
vh15 = [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],
vh14 = [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],
vh13 = [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],
vh12 = [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],
vh11 = [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],
vh10 = [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],
vh09 = [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],
vh08 = [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],
vh07 = [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],
vh06 = [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],
vh05 = [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],
vh04 = [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],
vh03 = [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],
vh02 = [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],
vh01 = [0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
//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 = [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],
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 = [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],
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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
)
//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)
//Body
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cube([b-chmfr,h-chmfr,dick]);
//Umrandung
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, -h/2, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2+chmfr/2, +h/2-chmfr, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
translate([+b/2-chmfr, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
} //union 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2)
//Anfasung
if (chmtyp==0)
{
translate([-b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([-b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
}
//Bohrungen
translate([x01,y01,-0.1]) cylinder(d=d01, h=2*dick, $fn=fnn);
translate([x02,y02,-0.1]) cylinder(d=d02, h=2*dick, $fn=fnn);
translate([x03,y03,-0.1]) cylinder(d=d03, h=2*dick, $fn=fnn);
translate([x04,y04,-0.1]) cylinder(d=d04, h=2*dick, $fn=fnn);
translate([x05,y05,-0.1]) cylinder(d=d05, h=2*dick, $fn=fnn);
translate([x06,y06,-0.1]) cylinder(d=d06, h=2*dick, $fn=fnn);
translate([x07,y07,-0.1]) cylinder(d=d07, h=2*dick, $fn=fnn);
translate([x08,y08,-0.1]) cylinder(d=d08, h=2*dick, $fn=fnn);
translate([x09,y09,-0.1]) cylinder(d=d09, h=2*dick, $fn=fnn);
translate([x10,y10,-0.1]) cylinder(d=d10, h=2*dick, $fn=fnn);
translate([x11,y11,-0.1]) cylinder(d=d11, h=2*dick, $fn=fnn);
translate([x12,y12,-0.1]) cylinder(d=d12, h=2*dick, $fn=fnn);
translate([x13,y13,-0.1]) cylinder(d=d13, h=2*dick, $fn=fnn);
translate([x14,y14,-0.1]) cylinder(d=d14, h=2*dick, $fn=fnn);
translate([x15,y15,-0.1]) cylinder(d=d15, h=2*dick, $fn=fnn);
translate([x16,y16,-0.1]) cylinder(d=d16, h=2*dick, $fn=fnn);
translate([x17,y17,-0.1]) cylinder(d=d17, h=2*dick, $fn=fnn);
translate([x18,y18,-0.1]) cylinder(d=d18, h=2*dick, $fn=fnn);
translate([x19,y19,-0.1]) cylinder(d=d19, h=2*dick, $fn=fnn);
translate([x20,y20,-0.1]) cylinder(d=d20, h=2*dick, $fn=fnn);
//Rasterausschnitt
translate([-(x*segment)/2+x_off, -(y*segment)/2+y_off, -0.1]) cube([x*segment,y*segment,2*dick]);
} //difference 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird dazu hinzugefügt (union 1)
//Markierung Ursprung
translate([-(x*segment)/2+x_off,-(y*segment)/2+y_off,0]) rotate([0,0,45]) cylinder(d=1.3*diamat,h=dick, $fn=fnn);
//Schraubenzylinder
for (i = [0:x])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cylinder(d=diamat, h=dick+intr, $fn=fnn);
}
}
//Stützgitter horizontal
for (i = [0:x-1])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment-wall/2+y_off,-intr]) cube([segment,wall,dick+intr]);
}
}
//Stützgitter vertikal
for (i = [0:x])
{
for (k = [0:y-1])
{
translate([-(x*segment)/2+i*segment-wall/2+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cube([wall,segment,dick+intr]);
}
}
} //union 1 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon wieder abgezogen (difference 1)
//Schraubenlöcher
for (i = [0:x])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr-0.1]) cylinder(d=diab, h=2*dick+intr, $fn=fnn);
}
}
//Streben-Ausschnitte
//vertikale Streben
vv=[vv01,vv02,vv03,vv04,vv05,vv06,vv07,vv08,vv09,vv10,vv11,vv12,vv13,vv14,vv15,vv16,vv17,vv18,vv19,vv20,vv21,vv22,vv23,vv24,vv25];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
if (vv[k][i-1]==0)
{
translate([-(x*segment)/2+i*segment-wall+x_off,-(y*segment)/2+diamat/2+k*segment+y_off,-dick-intr]) cube([2*wall,segment-diamat,2*(dick+intr)]);
}
}
}
//horizontale Streben
vh=[vh01,vh02,vh03,vh04,vh05,vh06,vh07,vh08,vh09,vh10,vh11,vh12,vh13,vh14,vh15,vh16,vh17,vh18,vh19,vh20,vh21,vh22,vh23,vh24,vh25];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
if (vh[k-1][i]==0)
{
translate([-(x*segment)/2+i*segment+diamat/2+x_off,-(y*segment)/2+k*segment-wall+y_off,-dick-intr]) cube([segment-diamat,2*wall,2*(dick+intr)]);
}
}
}
//Schraubenblöcke
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];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
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=1.1*diamat, h=2*(dick+intr), $fn=fnn);
}
}
}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,-2]) support(); //in z-Richtung um -dick verschieben

View File

@ -0,0 +1,148 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic grid 50x25mm with 2x4mm connectors
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-03 xsider modified for 25mm grid M2 screws
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern für Frontplattensystem im 19mm-Raster
module FrontElem (
//Frontplattenelement
xwert=2, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //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 BLK-Vollisiolierte KLemmen
//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)
//Körper des Frontplattensegments
cube([xwert*segment, ywert*segment, hght]);
} //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
);
//Bohrung für 4mm-Telefonbuchse (Mindestgröße 1x1)
translate([xwert*segment/2-(19/2),ywert*segment/2+3,-0.1]) cylinder(d=TRSdia, h=10, $fn=32);
translate([xwert*segment/2+(19/2),ywert*segment/2+3,-0.1]) cylinder(d=TRSdia, h=10, $fn=32);
translate([xwert*segment/2-Ltext/2,ywert*segment/2-9,thick-Dtext+0.05]) cube([Ltext, Btext, Dtext]);
} //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]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,137 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 25x25mm neutral plate
//
// 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
module FrontElem (
//Frontplattenelement
xwert=1, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //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 M2-Zylinderkopf-Inbusschraube
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]);
} //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])
{
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]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,133 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x25mm neutral plate
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern
module FrontElem (
//Frontplattenelement
xwert=2, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //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
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]);
} //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])
{
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]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,160 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm neutral plate
//
// 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
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 BLK-Vollisiolierte KLemmen
//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]);
} //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]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,210 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 25x25mm grid 300x200 M2
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-09 xsider modified 7mm distance
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern
module support (
//Parameter
b=300-30.2, //Breite der Frontplatte, innenmaß für P0170 200x100mm
h=200-30.2, //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)
//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=7,
//Rasterbohrungen und Stützgitter
diab=1.8, // Kernloch 1.6 + 0.1 für Drucktoleranz
diamat=5, //Materialdurchmesser für Schraubenbefestigung
wall=2, //Wandstärke Verbindungsstreben
//Strebendefinition vertikale Streben
vv25 = [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],
vv24 = [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],
vv23 = [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],
vv22 = [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],
vv21 = [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],
vv20 = [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],
vv19 = [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],
vv18 = [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],
vv17 = [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],
vv16 = [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],
vv15 = [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],
vv14 = [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],
vv13 = [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],
vv12 = [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],
vv11 = [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],
vv10 = [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],
vv09 = [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],
vv08 = [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],
vv07 = [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],
vv06 = [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],
vv05 = [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],
vv04 = [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],
vv03 = [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],
vv02 = [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],
vv01 = [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],
//Strebendefinition horizontale Streben
vh25 = [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],
vh24 = [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],
vh23 = [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],
vh22 = [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],
vh21 = [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],
vh20 = [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],
vh19 = [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],
vh18 = [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],
vh17 = [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],
vh16 = [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],
vh15 = [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],
vh14 = [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],
vh13 = [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],
vh12 = [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],
vh11 = [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],
vh10 = [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],
vh09 = [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],
vh08 = [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],
vh07 = [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],
vh06 = [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],
vh05 = [0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
vh04 = [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],
vh03 = [0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
vh02 = [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],
vh01 = [0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
//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 1
difference(){ //difference 2
union(){ //union 2
//alles, was vor der nächsten geschweiften Klammer steht, wird zusammengefügt (union 2)
//Body
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cube([b-chmfr,h-chmfr,dick]);
//Umrandung
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, -h/2, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2+chmfr/2, +h/2-chmfr, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
translate([+b/2-chmfr, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
} //union 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2)
//Anfasung
if (chmtyp==0)
{
translate([-b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([-b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
}
//Bohrungen
for ( i= [-x/2:x/2] ) {
// x=10,y=6,segment=25,
translate([i*segment,y/2*segment+7,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
translate([i*segment,-y/2*segment-7,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
}
for ( i= [-y/2:y/2] ) {
translate([x/2*segment+7,i*segment,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
translate([-x/2*segment-7,i*segment,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
}
//Rasterausschnitt
translate([-(x*segment)/2+x_off, -(y*segment)/2+y_off, -0.1]) cube([x*segment,y*segment,2*dick]);
} //difference 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird dazu hinzugefügt (union 1)
//Markierung Ursprung
translate([-(x*segment)/2+x_off,-(y*segment)/2+y_off,0]) rotate([0,0,45]) cylinder(d=1.3*diamat,h=dick, $fn=fnn);
//Schraubenzylinder
for (i = [0:x]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cylinder(d=diamat, h=dick+intr, $fn=fnn);}}
//Stützgitter horizontal
for (i = [0:x-1]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment-wall/2+y_off,-intr]) cube([segment,wall,dick+intr]);}}
//Stützgitter vertikal
for (i = [0:x]) {
for (k = [0:y-1]) {
translate([-(x*segment)/2+i*segment-wall/2+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cube([wall,segment,dick+intr]);}}
} //union 1 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon wieder abgezogen (difference 1)
//Schraubenlöcher
for (i = [0:x]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr-0.1]) cylinder(d=diab, h=2*dick+intr, $fn=fnn);}}
//Streben-Ausschnitte
//vertikale Streben
vv=[vv01,vv02,vv03,vv04,vv05,vv06,vv07,vv08,vv09,vv10,vv11,vv12,vv13,vv14,vv15,vv16,vv17,vv18,vv19,vv20,vv21,vv22,vv23,vv24,vv25];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
if (vv[k][i-1]==0) {
translate([-(x*segment)/2+i*segment-wall+x_off,-(y*segment)/2+diamat/2+k*segment+y_off,-dick-intr]) cube([2*wall,segment-diamat,2*(dick+intr)]); }
}}
//horizontale Streben
vh=[vh01,vh02,vh03,vh04,vh05,vh06,vh07,vh08,vh09,vh10,vh11,vh12,vh13,vh14,vh15,vh16,vh17,vh18,vh19,vh20,vh21,vh22,vh23,vh24,vh25];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
if (vh[k-1][i]==0) {
translate([-(x*segment)/2+i*segment+diamat/2+x_off,-(y*segment)/2+k*segment-wall+y_off,-dick-intr]) cube([segment-diamat,2*wall,2*(dick+intr)]); }
}}
//Schraubenblöcke
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];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
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=1.1*diamat, h=2*(dick+intr), $fn=fnn); }
}}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
//rotate([0,180,0]) //auskommentieren für seitenrichtige Anzeige
translate([0,0,-2]) support(); //in z-Richtung um -dick verschieben

View File

@ -0,0 +1,205 @@
//---------------------------------------------------------------------
//
// 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();

View File

@ -0,0 +1,96 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm window holder
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
$fn=32;
//Moduldefinition mit Parametern
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 2
union(){ //union 2
//alles, was vor der nächsten geschweiften Klammer steht, wird zusammengefügt (union 2)0
//Rahmenaufdoppelung für Acrylscheibe 2x1mm
translate([25-21,25-21,0])cube([42,42,2]);
translate([12.5,3+1.5,0])cylinder(h=2,r=2.5,center=false);
translate([25+12.5,3+1.5,0])cylinder(h=2,r=2.5,center=false);
translate([12.5,50-4.5,0])cylinder(h=2,r=2.5,center=false);
translate([25+12.5,50-4.5,0])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)
// Ausschnitt Fenster Acrylglasplatte
translate([25-17,25-16,-5])cube([34,32,10]);
// Kernlochbohrungen
translate([12.5,3+1.5,-5])cylinder(h=10,r=1.1,center=false);
translate([25+12.5,3+1.5,-5])cylinder(h=10,r=1.1,center=false);
translate([12.5,50-4.5,-5])cylinder(h=10,r=1.1,center=false);
translate([25+12.5,50-4.5,-5])cylinder(h=10,r=1.1,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 2 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,192 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm large Window M2 acrylic plate
//
// 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=1, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //Anzahl der Segmente in vertikaler Richtung
segment=50, //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
//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]);
} //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([2.5,2.5,-5])cube([45,45,10]);
// Ausschnitt Acrylplatte von hinten
difference(){
translate([1,1,-1])cube([48,48,2]);
//Verstärkungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
translate([0,y,-2]) cylinder(d=6,h=4,$fn=16);
//Verstärkungen für Schrauben y-Achse rechts
for (y=[0:segment:ywert*segment])
translate([xwert*segment,y,-2]) cylinder(d=6,h=4,$fn=16);
}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
//translate([0,0,0]) FrontElem();
// Acrylplatte:
module Acrylplatte()
{
segment=50;
xwert=1;
ywert=1;
difference(){
translate([1.1,1.1,-1])cube([47.8,47.8,2]);
//Verstärkungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
translate([0,y,-2]) cylinder(d=6.1,h=4,$fn=16);
//Verstärkungen für Schrauben y-Achse rechts
for (y=[0:segment:ywert*segment])
translate([xwert*segment,y,-2]) cylinder(d=6.1,h=4,$fn=16);
}
}
projection() Acrylplatte();

View File

@ -0,0 +1,210 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm grid 300x200 M2
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-09 xsider modified 7mm distance
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern
module support (
//Parameter
b=300-30.2, //Breite der Frontplatte, innenmaß für P0170 200x100mm
h=200-30.2, //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)
//Raster (muss identisch sein mit Rahmen x,y,segment)
x=5,y=3,segment=50,
//Rasteroffsets (muss identisch sein mit Rahmen x_off,y_off)
x_off=0,y_off=0,
//Eintauchtiefe der Stützstruktur ins Gehäuse
intr=7,
//Rasterbohrungen und Stützgitter
diab=1.8, // Kernloch 1.6 + 0.1 für Drucktoleranz
diamat=5, //Materialdurchmesser für Schraubenbefestigung
wall=2, //Wandstärke Verbindungsstreben
//Strebendefinition vertikale Streben
vv25 = [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],
vv24 = [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],
vv23 = [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],
vv22 = [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],
vv21 = [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],
vv20 = [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],
vv19 = [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],
vv18 = [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],
vv17 = [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],
vv16 = [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],
vv15 = [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],
vv14 = [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],
vv13 = [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],
vv12 = [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],
vv11 = [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],
vv10 = [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],
vv09 = [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],
vv08 = [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],
vv07 = [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],
vv06 = [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],
vv05 = [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],
vv04 = [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],
vv03 = [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],
vv02 = [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],
vv01 = [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],
//Strebendefinition horizontale Streben
vh25 = [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],
vh24 = [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],
vh23 = [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],
vh22 = [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],
vh21 = [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],
vh20 = [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],
vh19 = [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],
vh18 = [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],
vh17 = [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],
vh16 = [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],
vh15 = [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],
vh14 = [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],
vh13 = [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],
vh12 = [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],
vh11 = [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],
vh10 = [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],
vh09 = [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],
vh08 = [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],
vh07 = [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],
vh06 = [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],
vh05 = [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],
vh04 = [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],
vh03 = [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],
vh02 = [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],
vh01 = [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],
//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 = [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],
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 = [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],
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 = [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]
)
//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)
//Body
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cube([b-chmfr,h-chmfr,dick]);
//Umrandung
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, -h/2, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2+chmfr/2, +h/2-chmfr, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
translate([+b/2-chmfr, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
} //union 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2)
//Anfasung
if (chmtyp==0)
{
translate([-b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([-b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
}
//Bohrungen
for ( i= [-x/2:x/2] ) {
// x=10,y=6,segment=25,
translate([i*segment,y/2*segment+7,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
translate([i*segment,-y/2*segment-7,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
}
for ( i= [-y/2:y/2] ) {
translate([x/2*segment+7,i*segment,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
translate([-x/2*segment-7,i*segment,-0.1]) cylinder(d=diab, h=2*dick, $fn=fnn);
}
//Rasterausschnitt
translate([-(x*segment)/2+x_off, -(y*segment)/2+y_off, -0.1]) cube([x*segment,y*segment,2*dick]);
} //difference 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird dazu hinzugefügt (union 1)
//Markierung Ursprung
translate([-(x*segment)/2+x_off,-(y*segment)/2+y_off,0]) rotate([0,0,45]) cylinder(d=1.3*diamat,h=dick, $fn=fnn);
//Schraubenzylinder
for (i = [0:x]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cylinder(d=diamat, h=dick+intr, $fn=fnn);}}
//Stützgitter horizontal
for (i = [0:x-1]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment-wall/2+y_off,-intr]) cube([segment,wall,dick+intr]);}}
//Stützgitter vertikal
for (i = [0:x]) {
for (k = [0:y-1]) {
translate([-(x*segment)/2+i*segment-wall/2+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cube([wall,segment,dick+intr]);}}
} //union 1 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon wieder abgezogen (difference 1)
//Schraubenlöcher
for (i = [0:x]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr-0.1]) cylinder(d=diab, h=2*dick+intr, $fn=fnn);}}
//Streben-Ausschnitte
//vertikale Streben
vv=[vv01,vv02,vv03,vv04,vv05,vv06,vv07,vv08,vv09,vv10,vv11,vv12,vv13,vv14,vv15,vv16,vv17,vv18,vv19,vv20,vv21,vv22,vv23,vv24,vv25];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
if (vv[k][i-1]==0) {
translate([-(x*segment)/2+i*segment-wall+x_off,-(y*segment)/2+diamat/2+k*segment+y_off,-dick-intr]) cube([2*wall,segment-diamat,2*(dick+intr)]); }
}}
//horizontale Streben
vh=[vh01,vh02,vh03,vh04,vh05,vh06,vh07,vh08,vh09,vh10,vh11,vh12,vh13,vh14,vh15,vh16,vh17,vh18,vh19,vh20,vh21,vh22,vh23,vh24,vh25];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
if (vh[k-1][i]==0) {
translate([-(x*segment)/2+i*segment+diamat/2+x_off,-(y*segment)/2+k*segment-wall+y_off,-dick-intr]) cube([segment-diamat,2*wall,2*(dick+intr)]); }
}}
//Schraubenblöcke
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];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
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=1.1*diamat, h=2*(dick+intr), $fn=fnn); }
}}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
//rotate([0,180,0]) //auskommentieren für seitenrichtige Anzeige
translate([0,0,-2]) support(); //in z-Richtung um -dick verschieben

View File

@ -0,0 +1,193 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm window M3 screws
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-07-27 xsider modified for grid 50mm and M3-screws
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
$fn=128;
//Moduldefinition mit Parametern für Frontplattensystem im 19mm-Raster
module FrontElem (
//Frontplattenelement
xwert=1, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //Anzahl der Segmente in vertikaler Richtung
segment=50, //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
//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]);
} //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([2.5,2.5,-5])cube([45,45,10]);
// Ausschnitt Acrylplatte von hinten
difference(){
translate([1,1,-1])cube([48,48,2]);
//Verstärkungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
translate([0,y,-2]) cylinder(d=6,h=4,$fn=16);
//Verstärkungen für Schrauben y-Achse rechts
for (y=[0:segment:ywert*segment])
translate([xwert*segment,y,-2]) cylinder(d=6,h=4,$fn=16);
}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
//translate([0,0,0]) FrontElem();
// Acrylplatte:
module Acrylplatte()
{
segment=50;
xwert=1;
ywert=1;
difference(){
translate([0.05,0.05,-1])cube([49.9,49.9,3]);
//Verstärkungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
translate([0,y,-2]) cylinder(d=3.1,h=4,$fn=128);
//Verstärkungen für Schrauben y-Achse rechts
for (y=[0:segment:ywert*segment])
translate([xwert*segment,y,-2]) cylinder(d=3.1,h=4,$fn=128);
}
}
projection() Acrylplatte();

View File

@ -0,0 +1,203 @@
//OpenSCAD-Skript
// 2024-06-09 xsider Anpassung 7mm Abstand
// 2024-06-03 xsider Anpassungen an Raster 25
//Moduldefinition mit Parametern
//---------------------------------------------------------------------
module support (
//Parameter
b=300-30.2, //Breite der Frontplatte, innenmaß für P0170 200x100mm
h=200-30.2, //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)
//Raster (muss identisch sein mit Rahmen x,y,segment)
x=5,y=3,segment=50,
//Rasteroffsets (muss identisch sein mit Rahmen x_off,y_off)
x_off=0,y_off=0,
//Eintauchtiefe der Stützstruktur ins Gehäuse
intr=7,
//Rasterbohrungen und Stützgitter
diab=2.7, // Kernloch M3 für Drucktoleranz
diabM2=1.7, // Kernloch 1.6 + 0.1 für Drucktoleranz
diamat=5, //Materialdurchmesser für Schraubenbefestigung
wall=2, //Wandstärke Verbindungsstreben
//Strebendefinition vertikale Streben
vv25 = [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],
vv24 = [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],
vv23 = [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],
vv22 = [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],
vv21 = [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],
vv20 = [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],
vv19 = [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],
vv18 = [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],
vv17 = [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],
vv16 = [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],
vv15 = [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],
vv14 = [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],
vv13 = [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],
vv12 = [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],
vv11 = [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],
vv10 = [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],
vv09 = [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],
vv08 = [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],
vv07 = [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],
vv06 = [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],
vv05 = [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],
vv04 = [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],
vv03 = [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],
vv02 = [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],
vv01 = [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],
//Strebendefinition horizontale Streben
vh25 = [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],
vh24 = [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],
vh23 = [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],
vh22 = [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],
vh21 = [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],
vh20 = [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],
vh19 = [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],
vh18 = [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],
vh17 = [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],
vh16 = [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],
vh15 = [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],
vh14 = [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],
vh13 = [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],
vh12 = [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],
vh11 = [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],
vh10 = [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],
vh09 = [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],
vh08 = [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],
vh07 = [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],
vh06 = [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],
vh05 = [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],
vh04 = [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],
vh03 = [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],
vh02 = [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],
vh01 = [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],
//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 = [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],
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 = [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],
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 = [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]
)
//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)
//Body
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cube([b-chmfr,h-chmfr,dick]);
//Umrandung
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, -h/2, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2+chmfr/2, +h/2-chmfr, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
translate([+b/2-chmfr, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
} //union 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2)
//Anfasung
if (chmtyp==0)
{
translate([-b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([-b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
}
//Bohrungen
for ( i= [-x/2:x/2] ) {
// x=10,y=6,segment=25,
translate([i*segment,y/2*segment+7,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
translate([i*segment,-y/2*segment-7,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
}
for ( i= [-y/2:y/2] ) {
translate([x/2*segment+7,i*segment,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
translate([-x/2*segment-7,i*segment,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
}
//Rasterausschnitt
translate([-(x*segment)/2+x_off, -(y*segment)/2+y_off, -0.1]) cube([x*segment,y*segment,2*dick]);
} //difference 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird dazu hinzugefügt (union 1)
//Markierung Ursprung
translate([-(x*segment)/2+x_off,-(y*segment)/2+y_off,0]) rotate([0,0,45]) cylinder(d=1.3*diamat,h=dick, $fn=fnn);
//Schraubenzylinder
for (i = [0:x]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cylinder(d=diamat, h=dick+intr, $fn=fnn);}}
//Stützgitter horizontal
for (i = [0:x-1]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment-wall/2+y_off,-intr]) cube([segment,wall,dick+intr]);}}
//Stützgitter vertikal
for (i = [0:x]) {
for (k = [0:y-1]) {
translate([-(x*segment)/2+i*segment-wall/2+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cube([wall,segment,dick+intr]);}}
} //union 1 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon wieder abgezogen (difference 1)
//Schraubenlöcher
for (i = [0:x]) {
for (k = [0:y]) {
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr-0.1]) cylinder(d=diab, h=2*dick+intr, $fn=fnn);}}
//Streben-Ausschnitte
//vertikale Streben
vv=[vv01,vv02,vv03,vv04,vv05,vv06,vv07,vv08,vv09,vv10,vv11,vv12,vv13,vv14,vv15,vv16,vv17,vv18,vv19,vv20,vv21,vv22,vv23,vv24,vv25];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
if (vv[k][i-1]==0) {
translate([-(x*segment)/2+i*segment-wall+x_off,-(y*segment)/2+diamat/2+k*segment+y_off,-dick-intr]) cube([2*wall,segment-diamat,2*(dick+intr)]); }
}}
//horizontale Streben
vh=[vh01,vh02,vh03,vh04,vh05,vh06,vh07,vh08,vh09,vh10,vh11,vh12,vh13,vh14,vh15,vh16,vh17,vh18,vh19,vh20,vh21,vh22,vh23,vh24,vh25];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
if (vh[k-1][i]==0) {
translate([-(x*segment)/2+i*segment+diamat/2+x_off,-(y*segment)/2+k*segment-wall+y_off,-dick-intr]) cube([segment-diamat,2*wall,2*(dick+intr)]); }
}}
//Schraubenblöcke
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];
for (i=[0:x-1]) {
for (k=[0:y-1]) {
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=1.1*diamat, h=2*(dick+intr), $fn=fnn); }
}}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
//rotate([0,180,0]) //auskommentieren für seitenrichtige Anzeige
translate([0,0,-2]) support(); //in z-Richtung um -dick verschieben

View File

@ -0,0 +1,122 @@
//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

View File

@ -0,0 +1,122 @@
//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-16-a",
//Raster (muss identisch sein mit Rahmen x,y,segment)
x=5,y=3,segment=50,
//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=3.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 = [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],
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 = [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],
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 = [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]
)
//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

View File

@ -0,0 +1,160 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 25x25mm LED window
//
// 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=1, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //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
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]);
} //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])
{
translate([x,0,0]) cylinder(d=dvst3,h=hght,$fn=64);
}
//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=64);
}
//Verstärkungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
{
translate([0,y,0]) cylinder(d=dvst3,h=hght,$fn=64);
}
//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=64);
}
} //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=64);
translate([x,0,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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=64);
translate([x,ywert*segment,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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=64);
translate([0,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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=64);
translate([xwert*segment,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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 für 3mm Acylglasscheibe, 1mm eintauchend
translate([1,1,-0.999])
difference()
{
cube([23,23,3]);
translate([-1,-1,-1])cylinder(d=5.5,h=5,$fn=128);
translate([-1,25-1,-1])cylinder(d=5.5,h=5,$fn=128);
translate([25-1,-1,-1])cylinder(d=5.5,h=5,$fn=128);
translate([25-1,25-1,-1])cylinder(d=5.5,h=5,$fn=128);
}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,170 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 25x25mm LED window acrylic inlay for -17
//
// 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=1, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //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
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]);
} //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])
{
translate([x,0,0]) cylinder(d=dvst3,h=hght,$fn=64);
}
//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=64);
}
//Verstärkungen für Schrauben y-Achse links
for (y=[0:segment:ywert*segment])
{
translate([0,y,0]) cylinder(d=dvst3,h=hght,$fn=64);
}
//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=64);
}
} //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=64);
translate([x,0,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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=64);
translate([x,ywert*segment,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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=64);
translate([0,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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=64);
translate([xwert*segment,y,hght-skh3]) cylinder(d=skd3,h=2*hght,$fn=64);
}
//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 für 3mm Acylglasscheibe, 1mm eintauchend
translate([1,1,-0.999])
difference()
{
cube([23,23,3]);
translate([-1,-1,-1])cylinder(d=5.5,h=5,$fn=128);
translate([-1,25-1,-1])cylinder(d=5.5,h=5,$fn=128);
translate([25-1,-1,-1])cylinder(d=5.5,h=5,$fn=128);
translate([25-1,25-1,-1])cylinder(d=5.5,h=5,$fn=128);
}
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
//translate([0,0,0]) FrontElem();
// Frontglas
// translate([1.1,1.1,-1])
projection()
difference(){
cube([23-0.2,23-0.2,3]);
translate([-1,-1,-1])cylinder(d=5.7,h=5,$fn=128);
translate([-1,25-1,-1])cylinder(d=5.7,h=5,$fn=128);
translate([25-1,-1,-1])cylinder(d=5.7,h=5,$fn=128);
translate([25-1,25-1,-1])cylinder(d=5.7,h=5,$fn=128);
}

View File

@ -0,0 +1,67 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 25x25mm reflector for LEd fits to -17
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
//
// 2024-06-03 xsider modified for grid 25mm and M2-screws
//
//---------------------------------------------------------------------
beschriftung = "P0188-19-a";
module Reflektor(){
difference(){
union() {
cube([23-0.2,23-0.2,9]);
// Anschraubplatte für die Rückwand
translate([-1.1,25-1.1,1])
rotate([180,0,0])
BackElem();
}
translate([-1,-1,1])cylinder(d=5.7,h=9,$fn=128);
translate([-1,25-1,1])cylinder(d=5.7,h=9,$fn=128);
translate([25-1,-1,1])cylinder(d=5.7,h=9,$fn=128);
translate([25-1,25-1,1])cylinder(d=5.7,h=9,$fn=128);
// LED-Loch für 5mm herausschneiden
translate([12.5-1.1,12.5-1.1,-5])cylinder(h=20,d=5.1,$fn=128);
// Pyramide herausschneiden
translate([12.5-1.1,12.5-1.1,11])
rotate([180,0,0])
polyhedron(
points=[ [12.5,12.5,0],[12.5,-12.5,0],[-12.5,-12.5,0],[-12.5,12.5,0], // the four points at base
[0,0,12.5] ], // the apex point
faces=[ [0,1,4],[1,2,4],[2,3,4],[3,0,4], // each triangle side
[1,0,3],[2,1,3] ] // two triangles for square base
);
// Beschriftung
translate([3,7,-1.5])rotate([180,0,0])
linear_extrude(height=1)
{
text( text="P0188",size=5,font="osifont",valign=center,halign=center,$fn=50);
translate([0,-14,0])
text( text="-19-a",size=5,font="osifont",valign=center,halign=center,$fn=50);
}
}
}
module frontglas() {
difference(){
cube([23-0.2,23-0.2,3]);
translate([-1,-1,-1])cylinder(d=5.7,h=5,$fn=128);
translate([-1,25-1,-1])cylinder(d=5.7,h=5,$fn=128);
translate([25-1,-1,-1])cylinder(d=5.7,h=5,$fn=128);
translate([25-1,25-1,-1])cylinder(d=5.7,h=5,$fn=128);
}
}
translate([1.1,1.1,-10])
Reflektor();
// Frontglas
//%translate([1.1,1.1,-1])frontglas();

View File

@ -0,0 +1,162 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 25x50mm Frontelement with 2mm sockets
//
// 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=1, //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
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
//Beschriftungsfeld eingesenkt
Btext=6.2, //Breite Beschriftungsband
Ltext=30.2, //Länge Beschriftungsband
Dtext=0.2, //Tiefe Beschriftungsfeld, oder Null
TRSdia=5.0, //Bohrung für Telefonbuchse 2mm Hirschmann
//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]);
} //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
);
//Bohrung für 2mm-Telefonbuchse (Mindestgröße 1x1)
translate([xwert*segment/2-(19/2),ywert*segment/2+3,-0.1]) cylinder(d=TRSdia, h=10, $fn=32);
translate([xwert*segment/2+(19/2),ywert*segment/2+3,-0.1]) cylinder(d=TRSdia, h=10, $fn=32);
// Beschritungsfeld
translate([xwert*segment/2-Ltext/2,ywert*segment/2-9,thick-Dtext+0.05]) cube([Ltext, Btext, Dtext]);
} //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]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,169 @@
//---------------------------------------------------------------------
//
// 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();

View File

@ -0,0 +1,138 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm Schuko Socket M3 screws
//
// 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=1, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //Anzahl der Segmente in vertikaler Richtung
segment=50, //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
//M3-Schrauben
dsh3=3.2, //Schaftdurchmesser M3-Schraube
dvst3=6.3, //Verstärkung für M3-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.25,1.25,-13+3])cube([47.5,47.5,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)
} //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);
}
//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);
}
//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);
}
//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);
}
//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();

View File

@ -0,0 +1,145 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm blind M3
//
// 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=1, //Anzahl der Segmente in horizontaler Richtung
ywert=1, //Anzahl der Segmente in vertikaler Richtung
segment=50, //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
//M3-Schrauben
skd3=3.2, //Schraubenkopfdurchmesser M3-Schraube
skh3=2, //Schraubenkopfhöhe M3-Schraube
dsh3=3.2, //Schaftdurchmesser M3-Schraube
dvst3=7, //Verstärkung für M3-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]);
} //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])
{
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]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,0]) FrontElem();

View File

@ -0,0 +1,257 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm Schuko Socket 3.5
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
// 2024-06-09 xsider modified 7mm distance
// 2024-06-03 xsider modified for grid 25mm
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern
module support (
//Parameter
b=300-30.2, //Breite der Frontplatte, innenmaß für P0170 200x100mm
h=100-30.2, //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)
//Raster (muss identisch sein mit Rahmen x,y,segment)
x=5,y=1,segment=50,
//Rasteroffsets (muss identisch sein mit Rahmen x_off,y_off)
x_off=0,y_off=0,
//Eintauchtiefe der Stützstruktur ins Gehäuse
intr=7,
//Rasterbohrungen und Stützgitter
diab=2.7, // Kernloch M3 für Drucktoleranz
diabM2=1.7, // Kernloch 1.6 + 0.1 für Drucktoleranz
diamat=5, //Materialdurchmesser für Schraubenbefestigung
wall=2, //Wandstärke Verbindungsstreben
//Strebendefinition vertikale Streben
vv25 = [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],
vv24 = [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],
vv23 = [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],
vv22 = [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],
vv21 = [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],
vv20 = [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],
vv19 = [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],
vv18 = [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],
vv17 = [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],
vv16 = [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],
vv15 = [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],
vv14 = [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],
vv13 = [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],
vv12 = [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],
vv11 = [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],
vv10 = [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],
vv09 = [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],
vv08 = [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],
vv07 = [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],
vv06 = [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],
vv05 = [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],
vv04 = [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],
vv03 = [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],
vv02 = [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],
vv01 = [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],
//Strebendefinition horizontale Streben
vh25 = [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],
vh24 = [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],
vh23 = [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],
vh22 = [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],
vh21 = [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],
vh20 = [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],
vh19 = [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],
vh18 = [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],
vh17 = [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],
vh16 = [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],
vh15 = [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],
vh14 = [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],
vh13 = [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],
vh12 = [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],
vh11 = [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],
vh10 = [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],
vh09 = [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],
vh08 = [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],
vh07 = [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],
vh06 = [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],
vh05 = [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],
vh04 = [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],
vh03 = [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],
vh02 = [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],
vh01 = [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],
//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 = [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],
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 = [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],
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 = [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]
)
//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)
//Body
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cube([b-chmfr,h-chmfr,dick]);
//Umrandung
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, -h/2, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2+chmfr/2, +h/2-chmfr, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
translate([+b/2-chmfr, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
} //union 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2)
//Anfasung
if (chmtyp==0)
{
translate([-b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([-b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
}
//Bohrungen
for ( i= [-x/2:x/2] ) {
translate([i*segment,y/2*segment+7,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
translate([i*segment,-y/2*segment-7,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
}
for ( i= [-y/2:y/2] ) {
translate([x/2*segment+7,i*segment,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
translate([-x/2*segment-7,i*segment,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
}
//Rasterausschnitt
translate([-(x*segment)/2+x_off, -(y*segment)/2+y_off, -0.1]) cube([x*segment,y*segment,2*dick]);
} //difference 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird dazu hinzugefügt (union 1)
//Markierung Ursprung
translate([-(x*segment)/2+x_off,-(y*segment)/2+y_off,0]) rotate([0,0,45]) cylinder(d=1.3*diamat,h=dick, $fn=fnn);
//Schraubenzylinder
for (i = [0:x])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cylinder(d=diamat, h=dick+intr, $fn=fnn);
}
}
//Stützgitter horizontal
for (i = [0:x-1])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment-wall/2+y_off,-intr]) cube([segment,wall,dick+intr]);
}
}
//Stützgitter vertikal
for (i = [0:x])
{
for (k = [0:y-1])
{
translate([-(x*segment)/2+i*segment-wall/2+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cube([wall,segment,dick+intr]);
}
}
} //union 1 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon wieder abgezogen (difference 1)
//Schraubenlöcher
for (i = [0:x])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr-0.1]) cylinder(d=diab, h=2*dick+intr, $fn=fnn);
}
}
//Streben-Ausschnitte
//vertikale Streben
vv=[vv01,vv02,vv03,vv04,vv05,vv06,vv07,vv08,vv09,vv10,vv11,vv12,vv13,vv14,vv15,vv16,vv17,vv18,vv19,vv20,vv21,vv22,vv23,vv24,vv25];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
if (vv[k][i-1]==0)
{
translate([-(x*segment)/2+i*segment-wall+x_off,-(y*segment)/2+diamat/2+k*segment+y_off,-dick-intr]) cube([2*wall,segment-diamat,2*(dick+intr)]);
}
}
}
//horizontale Streben
vh=[vh01,vh02,vh03,vh04,vh05,vh06,vh07,vh08,vh09,vh10,vh11,vh12,vh13,vh14,vh15,vh16,vh17,vh18,vh19,vh20,vh21,vh22,vh23,vh24,vh25];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
if (vh[k-1][i]==0)
{
translate([-(x*segment)/2+i*segment+diamat/2+x_off,-(y*segment)/2+k*segment-wall+y_off,-dick-intr]) cube([segment-diamat,2*wall,2*(dick+intr)]);
}
}
}
//Schraubenblöcke
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];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
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=1.1*diamat, h=2*(dick+intr), $fn=fnn);
}
}
}
// Ausschnittblock für Abschnitt Rand Rechts
// 1/10mm Spalt lassen
translate([50-0.1,-50,-10])cube([200,100,20]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
translate([0,0,-2]) support(); //in z-Richtung um -dick verschieben

View File

@ -0,0 +1,261 @@
//---------------------------------------------------------------------
//
// OpenSCAD-Script for mosaic 50x50mm Schuko Socket 4+2x0.5
//
// derived from:
// https://github.com/MakeMagazinDE/OpenSCAD_Frontplatten/
//---------------------------------------------------------------------
// 2024-06-09 xsider modified 7mm distance
// 2024-06-03 xsider modified for grid 25mm
//
//---------------------------------------------------------------------
//Moduldefinition mit Parametern
//---------------------------------------------------------------------
module support (
//Parameter
b=350-30.2, //Breite der Frontplatte, innenmaß für P0170 300x100mm
h=100-30.2, //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)
//Raster (muss identisch sein mit Rahmen x,y,segment)
x=6,y=1,segment=50,
//Rasteroffsets (muss identisch sein mit Rahmen x_off,y_off)
x_off=0,y_off=0,
//Eintauchtiefe der Stützstruktur ins Gehäuse
intr=7,
//Rasterbohrungen und Stützgitter
diab=2.7, // Kernloch M3 für Drucktoleranz
diabM2=1.7, // Kernloch 1.6 + 0.1 für Drucktoleranz
diamat=5, //Materialdurchmesser für Schraubenbefestigung
wall=2, //Wandstärke Verbindungsstreben
//Strebendefinition vertikale Streben
vv25 = [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],
vv24 = [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],
vv23 = [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],
vv22 = [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],
vv21 = [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],
vv20 = [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],
vv19 = [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],
vv18 = [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],
vv17 = [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],
vv16 = [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],
vv15 = [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],
vv14 = [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],
vv13 = [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],
vv12 = [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],
vv11 = [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],
vv10 = [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],
vv09 = [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],
vv08 = [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],
vv07 = [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],
vv06 = [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],
vv05 = [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],
vv04 = [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],
vv03 = [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],
vv02 = [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],
vv01 = [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],
//Strebendefinition horizontale Streben
vh25 = [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],
vh24 = [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],
vh23 = [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],
vh22 = [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],
vh21 = [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],
vh20 = [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],
vh19 = [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],
vh18 = [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],
vh17 = [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],
vh16 = [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],
vh15 = [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],
vh14 = [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],
vh13 = [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],
vh12 = [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],
vh11 = [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],
vh10 = [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],
vh09 = [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],
vh08 = [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],
vh07 = [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],
vh06 = [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],
vh05 = [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],
vh04 = [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],
vh03 = [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],
vh02 = [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],
vh01 = [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],
//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 = [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],
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 = [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],
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 = [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]
)
//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)
//Body
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cube([b-chmfr,h-chmfr,dick]);
//Umrandung
translate([-b/2+chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, -h/2+chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([+b/2-chmfr/2, +h/2-chmfr/2, 0]) cylinder(d=chmfr, h=dick, $fn=fnn);
translate([-b/2+chmfr/2, -h/2, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2+chmfr/2, +h/2-chmfr, 0]) cube([b-chmfr,chmfr,dick]);
translate([-b/2, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
translate([+b/2-chmfr, -h/2+chmfr/2, 0]) cube([chmfr,h-chmfr,dick]);
} //union 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon abgezogen (difference 2)
//Anfasung
if (chmtyp==0)
{
translate([-b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([-b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, -h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
translate([+b/2, +h/2, dick/2-0.1]) rotate([0,0,45]) cube([chmfr,chmfr,2*dick],center=true);
}
//Bohrungen
for ( i= [-x/2:x/2] ) {
translate([i*segment,y/2*segment+7,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
translate([i*segment,-y/2*segment-7,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
}
for ( i= [-y/2:y/2] ) {
translate([x/2*segment+7,i*segment,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
translate([-x/2*segment-7,i*segment,-0.1]) cylinder(d=diabM2, h=2*dick, $fn=fnn);
}
//Rasterausschnitt
translate([-(x*segment)/2+x_off, -(y*segment)/2+y_off, -0.1]) cube([x*segment,y*segment,2*dick]);
} //difference 2 end
//alles, was vor der nächsten geschweiften Klammer steht, wird dazu hinzugefügt (union 1)
//Markierung Ursprung
translate([-(x*segment)/2+x_off,-(y*segment)/2+y_off,0]) rotate([0,0,45]) cylinder(d=1.3*diamat,h=dick, $fn=fnn);
//Schraubenzylinder
for (i = [0:x])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cylinder(d=diamat, h=dick+intr, $fn=fnn);
}
}
//Stützgitter horizontal
for (i = [0:x-1])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment-wall/2+y_off,-intr]) cube([segment,wall,dick+intr]);
}
}
//Stützgitter vertikal
for (i = [0:x])
{
for (k = [0:y-1])
{
translate([-(x*segment)/2+i*segment-wall/2+x_off,-(y*segment)/2+k*segment+y_off,-intr]) cube([wall,segment,dick+intr]);
}
}
} //union 1 end
//alles, was vor der nächsten geschweiften Klammer steht, wird davon wieder abgezogen (difference 1)
//Schraubenlöcher
for (i = [0:x])
{
for (k = [0:y])
{
translate([-(x*segment)/2+i*segment+x_off,-(y*segment)/2+k*segment+y_off,-intr-0.1]) cylinder(d=diab, h=2*dick+intr, $fn=fnn);
}
}
//Streben-Ausschnitte
//vertikale Streben
vv=[vv01,vv02,vv03,vv04,vv05,vv06,vv07,vv08,vv09,vv10,vv11,vv12,vv13,vv14,vv15,vv16,vv17,vv18,vv19,vv20,vv21,vv22,vv23,vv24,vv25];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
if (vv[k][i-1]==0)
{
translate([-(x*segment)/2+i*segment-wall+x_off,-(y*segment)/2+diamat/2+k*segment+y_off,-dick-intr]) cube([2*wall,segment-diamat,2*(dick+intr)]);
}
}
}
//horizontale Streben
vh=[vh01,vh02,vh03,vh04,vh05,vh06,vh07,vh08,vh09,vh10,vh11,vh12,vh13,vh14,vh15,vh16,vh17,vh18,vh19,vh20,vh21,vh22,vh23,vh24,vh25];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
if (vh[k-1][i]==0)
{
translate([-(x*segment)/2+i*segment+diamat/2+x_off,-(y*segment)/2+k*segment-wall+y_off,-dick-intr]) cube([segment-diamat,2*wall,2*(dick+intr)]);
}
}
}
//Schraubenblöcke
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];
for (i=[0:x-1])
{
for (k=[0:y-1])
{
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=1.1*diamat, h=2*(dick+intr), $fn=fnn);
}
}
}
// Ausschnittblock für Abschnitt Rand Rechts
// 1/10mm Spalt lassen
translate([125-0.1,-50,-10])cube([200,100,20]);
translate([-125+0.1-200,-50,-10])cube([200,100,20]);
} //difference 1 end
} //module end
//Hier werden Instanzen des Moduls aufgerufen
//rotate([0,180,0]) //auskommentieren für seitenrichtige Anzeige
translate([0,0,-2]) support(); //in z-Richtung um -dick verschieben

47
render/00-catalog.html Normal file
View File

@ -0,0 +1,47 @@
<html>
<head><title>Project overview</title></head><body>
<style>
table, th, td {
border: 1px solid black;
border-radius: 10px;
};
</style>
<table>
<tr>
<td>stl_step/P0188-01-b_Raster_für_200x100_gewinde_geschnitten.stl<br><img src="stl_step_P0188_01_b_Raster_für_200x100_gewinde_geschnitten.stl_1.png"> </img><img src="stl_step_P0188_01_b_Raster_für_200x100_gewinde_geschnitten.stl_2.png"></img>
<td>stl_step/P0188-02-a_FrontElement_2x1_4mm_Buchsen.stl<br><img src="stl_step_P0188_02_a_FrontElement_2x1_4mm_Buchsen.stl_1.png"> </img><img src="stl_step_P0188_02_a_FrontElement_2x1_4mm_Buchsen.stl_2.png"></img>
<td>stl_step/P0188-03-a_FrontElement_1x1_blank.stl<br><img src="stl_step_P0188_03_a_FrontElement_1x1_blank.stl_1.png"> </img><img src="stl_step_P0188_03_a_FrontElement_1x1_blank.stl_2.png"></img>
<td>stl_step/P0188-04-a_FrontElement_2x1_blank.stl<br><img src="stl_step_P0188_04_a_FrontElement_2x1_blank.stl_1.png"> </img><img src="stl_step_P0188_04_a_FrontElement_2x1_blank.stl_2.png"></img>
</tr><tr>
<td>stl_step/P0188-05-a_FrontElement_2x2_blank.stl<br><img src="stl_step_P0188_05_a_FrontElement_2x2_blank.stl_1.png"> </img><img src="stl_step_P0188_05_a_FrontElement_2x2_blank.stl_2.png"></img>
<td>stl_step/P0188-06-a_Raster_für_300x200_gewinde_geschnitten.stl<br><img src="stl_step_P0188_06_a_Raster_für_300x200_gewinde_geschnitten.stl_1.png"> </img><img src="stl_step_P0188_06_a_Raster_für_300x200_gewinde_geschnitten.stl_2.png"></img>
<td>stl_step/P0188-07-a_FrontElement_2x2_Anzeigefenster.stl<br><img src="stl_step_P0188_07_a_FrontElement_2x2_Anzeigefenster.stl_1.png"> </img><img src="stl_step_P0188_07_a_FrontElement_2x2_Anzeigefenster.stl_2.png"></img>
<td>stl_step/P0188-08-a_Diarahmen_2x2.stl<br><img src="stl_step_P0188_08_a_Diarahmen_2x2.stl_1.png"> </img><img src="stl_step_P0188_08_a_Diarahmen_2x2.stl_2.png"></img>
</tr><tr>
<td>stl_step/P0188-09-a_FrontElement_2x2_Anzeigefenster_groß.stl<br><img src="stl_step_P0188_09_a_FrontElement_2x2_Anzeigefenster_groß.stl_1.png"> </img><img src="stl_step_P0188_09_a_FrontElement_2x2_Anzeigefenster_groß.stl_2.png"></img>
<td>stl_step/P0188-10-a_Acryleinsatz_Anzeigefenster_groß.stl<br><img src="stl_step_P0188_10_a_Acryleinsatz_Anzeigefenster_groß.stl_1.png"> </img><img src="stl_step_P0188_10_a_Acryleinsatz_Anzeigefenster_groß.stl_2.png"></img>
<td>stl_step/P0188-11-b_Raster_für_300x200_Anzeigefenster_groß_gewinde_geschnitten.stl<br><img src="stl_step_P0188_11_b_Raster_für_300x200_Anzeigefenster_groß_gewinde_geschnitten.stl_1.png"> </img><img src="stl_step_P0188_11_b_Raster_für_300x200_Anzeigefenster_groß_gewinde_geschnitten.stl_2.png"></img>
<td>stl_step/P0188-13-a_Raster_für_300x200_Anzeigefenster_3mm_m3.stl<br><img src="stl_step_P0188_13_a_Raster_für_300x200_Anzeigefenster_3mm_m3.stl_1.png"> </img><img src="stl_step_P0188_13_a_Raster_für_300x200_Anzeigefenster_3mm_m3.stl_2.png"></img>
</tr><tr>
<td>stl_step/P0188-15-a_Rückwand_für_300x200_gewinde_M2.stl<br><img src="stl_step_P0188_15_a_Rückwand_für_300x200_gewinde_M2.stl_1.png"> </img><img src="stl_step_P0188_15_a_Rückwand_für_300x200_gewinde_M2.stl_2.png"></img>
<td>stl_step/P0188-16-a_Rückwand_für_300x200_gewinde_M3.stl<br><img src="stl_step_P0188_16_a_Rückwand_für_300x200_gewinde_M3.stl_1.png"> </img><img src="stl_step_P0188_16_a_Rückwand_für_300x200_gewinde_M3.stl_2.png"></img>
<td>stl_step/P0188-17-a_FrontElement_1x1_Anzeige.stl<br><img src="stl_step_P0188_17_a_FrontElement_1x1_Anzeige.stl_1.png"> </img><img src="stl_step_P0188_17_a_FrontElement_1x1_Anzeige.stl_2.png"></img>
<td>stl_step/P0188-18-a_Anzeigefenster_1x1_Acryl_3mm.stl<br><img src="stl_step_P0188_18_a_Anzeigefenster_1x1_Acryl_3mm.stl_1.png"> </img><img src="stl_step_P0188_18_a_Anzeigefenster_1x1_Acryl_3mm.stl_2.png"></img>
</tr><tr>
<td>stl_step/P0188-19-a_Anzeigefenster_1x1_Reflektor.stl<br><img src="stl_step_P0188_19_a_Anzeigefenster_1x1_Reflektor.stl_1.png"> </img><img src="stl_step_P0188_19_a_Anzeigefenster_1x1_Reflektor.stl_2.png"></img>
<td>stl_step/P0188-20-a_Wandhalter.step<br><img src="stl_step_P0188_20_a_Wandhalter.step_1.png"> </img><img src="stl_step_P0188_20_a_Wandhalter.step_2.png"></img>
<td>stl_step/P0188-20-b_Wandhalter.step<br><img src="stl_step_P0188_20_b_Wandhalter.step_1.png"> </img><img src="stl_step_P0188_20_b_Wandhalter.step_2.png"></img>
<td>stl_step/P0188-21-a_Haltescheibe.step<br><img src="stl_step_P0188_21_a_Haltescheibe.step_1.png"> </img><img src="stl_step_P0188_21_a_Haltescheibe.step_2.png"></img>
</tr><tr>
<td>stl_step/P0188-22-a_Kabelhalter_M2.step<br><img src="stl_step_P0188_22_a_Kabelhalter_M2.step_1.png"> </img><img src="stl_step_P0188_22_a_Kabelhalter_M2.step_2.png"></img>
<td>stl_step/P0188-23-a_Kabelhalter_M3.step<br><img src="stl_step_P0188_23_a_Kabelhalter_M3.step_1.png"> </img><img src="stl_step_P0188_23_a_Kabelhalter_M3.step_2.png"></img>
<td>stl_step/P0188-24-a_FrontElement_2x1_2mm_Buchse.stl<br><img src="stl_step_P0188_24_a_FrontElement_2x1_2mm_Buchse.stl_1.png"> </img><img src="stl_step_P0188_24_a_FrontElement_2x1_2mm_Buchse.stl_2.png"></img>
<td>stl_step/P0188-25-a_FrontElement_2x2_Steckdose_System_45.stl<br><img src="stl_step_P0188_25_a_FrontElement_2x2_Steckdose_System_45.stl_1.png"> </img><img src="stl_step_P0188_25_a_FrontElement_2x2_Steckdose_System_45.stl_2.png"></img>
</tr><tr>
<td>stl_step/P0188-26-b_FrontElement_2x2_Steckdose_System_45_M3.stl<br><img src="stl_step_P0188_26_b_FrontElement_2x2_Steckdose_System_45_M3.stl_1.png"> </img><img src="stl_step_P0188_26_b_FrontElement_2x2_Steckdose_System_45_M3.stl_2.png"></img>
<td>stl_step/P0188-27-a_FrontElement_2x2_blind_M3.stl<br><img src="stl_step_P0188_27_a_FrontElement_2x2_blind_M3.stl_1.png"> </img><img src="stl_step_P0188_27_a_FrontElement_2x2_blind_M3.stl_2.png"></img>
<td>stl_step/P0188-28-a_Raster_für_Steckdosen_System_45_M3_3.5_Felder.stl<br><img src="stl_step_P0188_28_a_Raster_für_Steckdosen_System_45_M3_3.5_Felder.stl_1.png"> </img><img src="stl_step_P0188_28_a_Raster_für_Steckdosen_System_45_M3_3.5_Felder.stl_2.png"></img>
<td>stl_step/P0188-29-a_Raster_für_Steckdosen_System_45_M3_4_2x0.5_Felder.stl<br><img src="stl_step_P0188_29_a_Raster_für_Steckdosen_System_45_M3_4_2x0.5_Felder.stl_1.png"> </img><img src="stl_step_P0188_29_a_Raster_für_Steckdosen_System_45_M3_4_2x0.5_Felder.stl_2.png"></img>
</tr><tr>
</tr>
</table></body></html>

31
render/README.md Normal file
View File

@ -0,0 +1,31 @@
# Übersicht 3D-Dateien
|Datei|Ansicht 1|Ansicht 2|
|-----|:-------:|--------:
|stl_step/P0188-01-b_Raster_für_200x100_gewinde_geschnitten.stl|![Ansicht 1](stl_step_P0188_01_b_Raster_für_200x100_gewinde_geschnitten.stl_1.png)|![Ansicht 2](stl_step_P0188_01_b_Raster_für_200x100_gewinde_geschnitten.stl_2.png)|
|stl_step/P0188-02-a_FrontElement_2x1_4mm_Buchsen.stl|![Ansicht 1](stl_step_P0188_02_a_FrontElement_2x1_4mm_Buchsen.stl_1.png)|![Ansicht 2](stl_step_P0188_02_a_FrontElement_2x1_4mm_Buchsen.stl_2.png)|
|stl_step/P0188-03-a_FrontElement_1x1_blank.stl|![Ansicht 1](stl_step_P0188_03_a_FrontElement_1x1_blank.stl_1.png)|![Ansicht 2](stl_step_P0188_03_a_FrontElement_1x1_blank.stl_2.png)|
|stl_step/P0188-04-a_FrontElement_2x1_blank.stl|![Ansicht 1](stl_step_P0188_04_a_FrontElement_2x1_blank.stl_1.png)|![Ansicht 2](stl_step_P0188_04_a_FrontElement_2x1_blank.stl_2.png)|
|stl_step/P0188-05-a_FrontElement_2x2_blank.stl|![Ansicht 1](stl_step_P0188_05_a_FrontElement_2x2_blank.stl_1.png)|![Ansicht 2](stl_step_P0188_05_a_FrontElement_2x2_blank.stl_2.png)|
|stl_step/P0188-06-a_Raster_für_300x200_gewinde_geschnitten.stl|![Ansicht 1](stl_step_P0188_06_a_Raster_für_300x200_gewinde_geschnitten.stl_1.png)|![Ansicht 2](stl_step_P0188_06_a_Raster_für_300x200_gewinde_geschnitten.stl_2.png)|
|stl_step/P0188-07-a_FrontElement_2x2_Anzeigefenster.stl|![Ansicht 1](stl_step_P0188_07_a_FrontElement_2x2_Anzeigefenster.stl_1.png)|![Ansicht 2](stl_step_P0188_07_a_FrontElement_2x2_Anzeigefenster.stl_2.png)|
|stl_step/P0188-08-a_Diarahmen_2x2.stl|![Ansicht 1](stl_step_P0188_08_a_Diarahmen_2x2.stl_1.png)|![Ansicht 2](stl_step_P0188_08_a_Diarahmen_2x2.stl_2.png)|
|stl_step/P0188-09-a_FrontElement_2x2_Anzeigefenster_groß.stl|![Ansicht 1](stl_step_P0188_09_a_FrontElement_2x2_Anzeigefenster_groß.stl_1.png)|![Ansicht 2](stl_step_P0188_09_a_FrontElement_2x2_Anzeigefenster_groß.stl_2.png)|
|stl_step/P0188-10-a_Acryleinsatz_Anzeigefenster_groß.stl|![Ansicht 1](stl_step_P0188_10_a_Acryleinsatz_Anzeigefenster_groß.stl_1.png)|![Ansicht 2](stl_step_P0188_10_a_Acryleinsatz_Anzeigefenster_groß.stl_2.png)|
|stl_step/P0188-11-b_Raster_für_300x200_Anzeigefenster_groß_gewinde_geschnitten.stl|![Ansicht 1](stl_step_P0188_11_b_Raster_für_300x200_Anzeigefenster_groß_gewinde_geschnitten.stl_1.png)|![Ansicht 2](stl_step_P0188_11_b_Raster_für_300x200_Anzeigefenster_groß_gewinde_geschnitten.stl_2.png)|
|stl_step/P0188-13-a_Raster_für_300x200_Anzeigefenster_3mm_m3.stl|![Ansicht 1](stl_step_P0188_13_a_Raster_für_300x200_Anzeigefenster_3mm_m3.stl_1.png)|![Ansicht 2](stl_step_P0188_13_a_Raster_für_300x200_Anzeigefenster_3mm_m3.stl_2.png)|
|stl_step/P0188-15-a_Rückwand_für_300x200_gewinde_M2.stl|![Ansicht 1](stl_step_P0188_15_a_Rückwand_für_300x200_gewinde_M2.stl_1.png)|![Ansicht 2](stl_step_P0188_15_a_Rückwand_für_300x200_gewinde_M2.stl_2.png)|
|stl_step/P0188-16-a_Rückwand_für_300x200_gewinde_M3.stl|![Ansicht 1](stl_step_P0188_16_a_Rückwand_für_300x200_gewinde_M3.stl_1.png)|![Ansicht 2](stl_step_P0188_16_a_Rückwand_für_300x200_gewinde_M3.stl_2.png)|
|stl_step/P0188-17-a_FrontElement_1x1_Anzeige.stl|![Ansicht 1](stl_step_P0188_17_a_FrontElement_1x1_Anzeige.stl_1.png)|![Ansicht 2](stl_step_P0188_17_a_FrontElement_1x1_Anzeige.stl_2.png)|
|stl_step/P0188-18-a_Anzeigefenster_1x1_Acryl_3mm.stl|![Ansicht 1](stl_step_P0188_18_a_Anzeigefenster_1x1_Acryl_3mm.stl_1.png)|![Ansicht 2](stl_step_P0188_18_a_Anzeigefenster_1x1_Acryl_3mm.stl_2.png)|
|stl_step/P0188-19-a_Anzeigefenster_1x1_Reflektor.stl|![Ansicht 1](stl_step_P0188_19_a_Anzeigefenster_1x1_Reflektor.stl_1.png)|![Ansicht 2](stl_step_P0188_19_a_Anzeigefenster_1x1_Reflektor.stl_2.png)|
|stl_step/P0188-20-a_Wandhalter.step|![Ansicht 1](stl_step_P0188_20_a_Wandhalter.step_1.png)|![Ansicht 2](stl_step_P0188_20_a_Wandhalter.step_2.png)|
|stl_step/P0188-20-b_Wandhalter.step|![Ansicht 1](stl_step_P0188_20_b_Wandhalter.step_1.png)|![Ansicht 2](stl_step_P0188_20_b_Wandhalter.step_2.png)|
|stl_step/P0188-21-a_Haltescheibe.step|![Ansicht 1](stl_step_P0188_21_a_Haltescheibe.step_1.png)|![Ansicht 2](stl_step_P0188_21_a_Haltescheibe.step_2.png)|
|stl_step/P0188-22-a_Kabelhalter_M2.step|![Ansicht 1](stl_step_P0188_22_a_Kabelhalter_M2.step_1.png)|![Ansicht 2](stl_step_P0188_22_a_Kabelhalter_M2.step_2.png)|
|stl_step/P0188-23-a_Kabelhalter_M3.step|![Ansicht 1](stl_step_P0188_23_a_Kabelhalter_M3.step_1.png)|![Ansicht 2](stl_step_P0188_23_a_Kabelhalter_M3.step_2.png)|
|stl_step/P0188-24-a_FrontElement_2x1_2mm_Buchse.stl|![Ansicht 1](stl_step_P0188_24_a_FrontElement_2x1_2mm_Buchse.stl_1.png)|![Ansicht 2](stl_step_P0188_24_a_FrontElement_2x1_2mm_Buchse.stl_2.png)|
|stl_step/P0188-25-a_FrontElement_2x2_Steckdose_System_45.stl|![Ansicht 1](stl_step_P0188_25_a_FrontElement_2x2_Steckdose_System_45.stl_1.png)|![Ansicht 2](stl_step_P0188_25_a_FrontElement_2x2_Steckdose_System_45.stl_2.png)|
|stl_step/P0188-26-b_FrontElement_2x2_Steckdose_System_45_M3.stl|![Ansicht 1](stl_step_P0188_26_b_FrontElement_2x2_Steckdose_System_45_M3.stl_1.png)|![Ansicht 2](stl_step_P0188_26_b_FrontElement_2x2_Steckdose_System_45_M3.stl_2.png)|
|stl_step/P0188-27-a_FrontElement_2x2_blind_M3.stl|![Ansicht 1](stl_step_P0188_27_a_FrontElement_2x2_blind_M3.stl_1.png)|![Ansicht 2](stl_step_P0188_27_a_FrontElement_2x2_blind_M3.stl_2.png)|
|stl_step/P0188-28-a_Raster_für_Steckdosen_System_45_M3_3.5_Felder.stl|![Ansicht 1](stl_step_P0188_28_a_Raster_für_Steckdosen_System_45_M3_3.5_Felder.stl_1.png)|![Ansicht 2](stl_step_P0188_28_a_Raster_für_Steckdosen_System_45_M3_3.5_Felder.stl_2.png)|
|stl_step/P0188-29-a_Raster_für_Steckdosen_System_45_M3_4_2x0.5_Felder.stl|![Ansicht 1](stl_step_P0188_29_a_Raster_für_Steckdosen_System_45_M3_4_2x0.5_Felder.stl_1.png)|![Ansicht 2](stl_step_P0188_29_a_Raster_für_Steckdosen_System_45_M3_4_2x0.5_Felder.stl_2.png)|

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,214 @@
/************************************************************************************
*
* P0180-30 World Domination Panel
*
*************************************************************************************
* for ARDUNINO MEGA2560
*
* Dependencies:
* Adafruit Neopixel 1.12.3
* https://github.com/adafruit/Adafruit_NeoPixel
*
*************************************************************************************
*
* 2024-09-07 xsider final P0180-30-a
*
*************************************************************************************/
#include <Adafruit_NeoPixel.h>
#include <avr/power.h>
#include <string.h>
#define PINPIR 2
#define PINLEDBLUE 3
#define PINLEDGN 4
#define PINWS2812 6
#define PINLDR A2
#define PINPIR2 7
#define PINLEDBLUE2 8
#define PINPIR3 9
#define PINLEDBLUE3 10
#define PINPWRON 11
#define FIELDS (15*5)
#define NUMPIXELS FIELDS*6 /* 6 LEDs per field */
#define VERSION "P0188-30-a\n"
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PINWS2812, NEO_GRB + NEO_KHZ800);
int delayval = 20;
#define MAXLEN 254
char inputString[MAXLEN+1]; // a String to hold incoming data
int si=0;
const int datalength=7;
int a[datalength];
byte ColorStorage[FIELDS][6];
const char separator = ';';
bool blink = false;
unsigned long previousMillis = 0; // will store last time LED was updated
unsigned long lastpir = 0; // will store time last time PIR was active
const unsigned long interval = 500; // interval at which to blink (milliseconds)
const unsigned long PIRTIME = 600000L; // 10mins
unsigned long activeled;
const unsigned long ACTINTERVAL = 100;
byte charcount = 0;
int br = 0;
void setup() {
pinMode(PINPIR,INPUT);
pinMode(PINLEDBLUE, OUTPUT);
pinMode(PINLEDGN, OUTPUT);
pixels.begin();
// initialize serial:
Serial.begin(115200);
Serial.write(VERSION);
// reserve 64 bytes for the inputString:
inputString[0]='\0';
for (int i=0;i<FIELDS;i++) {
for (int k=0;k<6;k++) {
ColorStorage[i][k]=0x1;
}
}
}
void loop()
{
byte helligkeit;
unsigned long currentMillis;
if ( digitalRead(PINPIR) )
{
digitalWrite(PINLEDBLUE,HIGH);
lastpir = millis();
}
else
{
digitalWrite(PINLEDBLUE,LOW);
}
if ( digitalRead(PINPIR2) )
{
digitalWrite(PINLEDBLUE2,HIGH);
lastpir = millis();
}
else
{
digitalWrite(PINLEDBLUE2,LOW);
}
if ( digitalRead(PINPIR3) )
{
digitalWrite(PINLEDBLUE3,HIGH);
lastpir = millis();
}
else
{
digitalWrite(PINLEDBLUE3,LOW);
}
/* the serial routine is lossy because ws2812 serial out is blocking */
/* host repeats requests until it is received correct */
if (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
/* string is finished, we can process it */
if (inChar == '\n' )
{
digitalWrite(PINLEDGN,HIGH);
activeled=millis();
inputString[charcount]='\n';
Serial.print((char*)inputString ); /* messsage processed */
charcount = 0;
char* ptr = strtok(inputString, ";");
byte ip =0;
while (ptr && ip<datalength)
{
a[ip]=atoi(ptr);
ptr= strtok(NULL, ";");
ip++;
}
/* if packet is not long enough, there are missing data, so no processing is done */
if (ip==7)
{
if ( a[0] < FIELDS )
{
for (int k=0;k<6;k++)
{
ColorStorage[ a[0] ][k] = a[k+1];
}
}
}
}
else
{
// add it to the inputString:
if ( charcount < MAXLEN )
{
inputString[charcount] = inChar;
charcount++;
}
}
}
currentMillis = millis();
//@todo: handling millis() overflow
/* this increases LED on tune for communication LED */
if ( currentMillis - activeled > ACTINTERVAL )
{
digitalWrite(PINLEDGN,LOW);
}
/* run this every second */
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
br = ( br + analogRead(PINPIR) ) /2 ; /* simple average */
helligkeit = map( (br>200 ? 200 : br ) , 0, 200, 100, 5);
if ( currentMillis - lastpir > PIRTIME )
{
/* we have no motion for long time */
/* display minimal time */
/* switch off power supplies */
pixels.setBrightness(2);
digitalWrite(PINPWRON,LOW);
}
else
{
/* power supply on */
digitalWrite(PINPWRON,HIGH);
if ( blink)
{
for ( int l=0; l<FIELDS; l++ )
{
for (int k=0;k<3;k++)
{
pixels.setPixelColor( (l)*3+k+((l ) / 5)*15, pixels.Color(ColorStorage[l][0],ColorStorage[l][1],ColorStorage[l][2] ) );
pixels.setPixelColor( (l)*3+k+(( l ) / 5)*15 + 27- (l % 5 )*6, pixels.Color(ColorStorage[l][0],ColorStorage[l][1],ColorStorage[l][2] ) );
}
}
}
else
{
for ( int l=0;l<FIELDS;l++ )
{
for (int k=0;k<3;k++)
{
pixels.setPixelColor( (l)*3+k+((l ) / 5)*15, pixels.Color(ColorStorage[l][3],ColorStorage[l][4],ColorStorage[l][5]) );
pixels.setPixelColor( (l)*3+k+(( l ) / 5)*15 + 27- (l % 5 )*6, pixels.Color(ColorStorage[l][3],ColorStorage[l][4],ColorStorage[l][5] )) ;
}
}
}
pixels.setBrightness(helligkeit);
}
pixels.show();
blink = !blink;
}
}

View File

@ -0,0 +1,424 @@
#!/usr/bin/env python3
#####################################################################
#
# P0188
#
# World domination panel
#
# This software checks status of systems (Ping/Website/MQTT)
# and writes status out to serial interface for
# RGB-LED-stripe
#
#####################################################################
#
# 2024-09-08 xsider version for public
# 2024-08-28 xsider code cleanup
# 2024-08-21 xsider created
#
#####################################################################
from http.server import HTTPServer, BaseHTTPRequestHandler #Pythons built-in library
import os
import time
from threading import Thread
import serial
import queue
import paho.mqtt.client as mqtt
from enum import Enum,auto
from ping3 import ping
hostName = "0.0.0.0"
serverPort = 8082 #You can choose any available port; by default, it is 8000
DISPTTY="/dev/ttyACM0"
DISPBAUD=115200
MQTTHOST="sigint5.internal"
MQTTPORT=1883
brightness = 0
# this is a replacement for enum
BLACK = "BLACK"
RED = "RED"
GREEN = "GREEN"
BLUE = "BLUE"
YELLOW = "YELLOW"
WHITE = "WHITE"
NOBLINK = False
BLINK = True
colordef = { BLACK : { "html" : "000000", "rgb" : b";0;0;0" },
RED : { "html" : "FF0000", "rgb" : b";255;0;0" },
GREEN : { "html" : "00FF00", "rgb" : b";0;255;0" },
BLUE : { "html" : "7070FF", "rgb": b";0;0;255" },
YELLOW : { "html" : "FFFF00", "rgb" : b";255;255;0" },
WHITE : { "html" : "FFFFFF", "rgb" : b";255;255;255" }
}
class AlarmTyp(Enum):
RUHE = auto()
TEST = auto()
q = queue.Queue()
hostlist = [
[0,"192.168.0.1","Router<br>AP EG",WHITE,NOBLINK,RED,NOBLINK],
[1,"192.168.0.2","Blackfin<br>Server",WHITE,NOBLINK,RED,BLINK],
[2,"192.168.0.3","Coreswitch",WHITE,NOBLINK,RED,BLINK],
[3,"192.168.0.4","Odin<br>Fileserver",WHITE,NOBLINK,RED,NOBLINK],
[4,"192.168.0.5","Thor<br>Mailserver", WHITE, NOBLINK, RED, NOBLINK],
[5,"192.168.0.6","Tyr<br>Webserver", WHITE, NOBLINK, RED, NOBLINK],
[6,"192.168.0.7","Frigg<br>Loginserver", WHITE, NOBLINK, RED, NOBLINK],
[7,"192.168.0.8","Fulla<br>Lizenzserver", WHITE, NOBLINK, BLACK, NOBLINK],
[8,"192.168.0.9","Observer 1", WHITE, NOBLINK, RED, NOBLINK],
[9,"192.168.0.10","Sigint 5", WHITE, NOBLINK, RED, NOBLINK],
[10,"192.168.0.11","AP4<br>1.OG Nord", WHITE, NOBLINK, BLACK, NOBLINK],
[11,"192.168.0.12","AP7<br>1.OG SÜd", WHITE, NOBLINK, BLACK, NOBLINK],
[12,"192.168.0.13","AP5<br>2.OG", WHITE, NOBLINK, BLACK, NOBLINK],
[13,"192.168.0.14","Bridge<br>3.OG", WHITE, NOBLINK, BLACK, NOBLINK],
[14,"192.168.0.15","AP3<br>Labor", WHITE, NOBLINK, BLACK, NOBLINK],
[15,"192.168.0.16","Blitzortung", WHITE, NOBLINK, RED, NOBLINK],
[16,"192.168.0.17","urad<br>Monitor", WHITE, NOBLINK, RED, NOBLINK],
[17,"192.168.0.18","Feinstaub<br>Sensor", WHITE, NOBLINK, RED, NOBLINK],
[18,"192.168.0.19","Kiwi<br>SDR",WHITE , NOBLINK, BLACK, NOBLINK],
[19,"192.168.0.20","LoRaWAN<br>Gateway", WHITE, NOBLINK, RED, NOBLINK],
[20,"192.168.0.21","APC1", WHITE, NOBLINK, BLACK, NOBLINK],
[21,"192.168.0.22","APC2", WHITE, NOBLINK, BLACK, NOBLINK],
[22,"192.168.0.23","APC3", WHITE, NOBLINK, BLACK, NOBLINK],
[23,"192.168.0.24","Laborraum 4", WHITE, NOBLINK, BLACK, NOBLINK],
[24,"192.168.0.25","Kamera 2", WHITE, NOBLINK, BLACK, NOBLINK],
[25,"192.168.0.26","Kamera 4", WHITE, NOBLINK, BLACK, NOBLINK],
[32,"192.168.0.33","Hamclock", WHITE, NOBLINK, BLACK, NOBLINK],
[33,"192.168.0.34","Manik<br>Backup", WHITE, NOBLINK, RED, NOBLINK],
[34,"192.168.0.35","Automatix<br>CNC-Fräse", WHITE, NOBLINK, BLACK, NOBLINK],
[35,"192.168.0.36","Indra<br>Solarmess", WHITE, NOBLINK, BLACK, NOBLINK],
[36,"192.168.0.37","Shiva<br>Bat.umschaltung", WHITE, NOBLINK, BLACK, NOBLINK],
[38,"192.168.0.39","Redpitaya", WHITE, NOBLINK, BLACK, NOBLINK],
[39,"192.168.0.40","Rigol<br>Oszi", WHITE, NOBLINK, BLACK, NOBLINK],
[40,"192.168.0.41","Rigol<br>Spektrum", WHITE, NOBLINK, BLACK, NOBLINK],
[41,"192.168.0.42","Rigol<br>DMM", WHITE, NOBLINK, BLACK, NOBLINK],
[42,"192.168.0.43","Rigol<br>Arb.gen", WHITE, NOBLINK, BLACK, NOBLINK],
[43,"192.168.0.44","Victron<br>Gateway", WHITE, NOBLINK, BLACK, NOBLINK],
[44,"192.168.0.45","Roboterarm", WHITE, NOBLINK, BLACK, NOBLINK],
[45,"192.168.0.46","Unmatched<br>RISC V", WHITE, NOBLINK, BLACK, NOBLINK],
[46,"192.168.0.47","Drucker<br>A4 Labor", WHITE, NOBLINK, BLACK, NOBLINK],
[47,"192.168.0.48","Drucker<br>A3 Labor", WHITE, NOBLINK, BLACK, NOBLINK],
[48,"192.168.0.49","DSKY", WHITE, NOBLINK, BLACK, NOBLINK],
[49,"192.168.0.50","Oc 5", WHITE, NOBLINK, BLACK, NOBLINK],
[60,"192.168.0.61","Arbeitsplatz<br>EG", WHITE, NOBLINK, BLACK, NOBLINK],
[61,"192.168.0.62","Drucker<br>EG", WHITE, NOBLINK, BLACK, NOBLINK],
[62,"192.168.0.63","Inferno<br>1.OG", WHITE, NOBLINK, BLACK, NOBLINK],
[63,"192.168.0.64","Drucker<br>1.OG", WHITE, NOBLINK, BLACK, NOBLINK],
[64,"192.168.0.65","Eb<br>Wetterstation", WHITE, NOBLINK, BLACK, NOBLINK],
[65,"192.168.0.66","Sigint 2<br>NOAA Sat.", WHITE, NOBLINK, BLACK, NOBLINK],
[66,"192.168.0.67","Weishaupt<br>Heizung", WHITE, NOBLINK, BLACK, NOBLINK],
[67,"192.168.0.68","Wago 1<br>SPS", WHITE, NOBLINK, BLACK, NOBLINK],
[68,"192.168.0.69","VUZero", WHITE, NOBLINK, BLACK, NOBLINK],
[69,"192.168.0.70","Vishnu<br>Thermodrucker", WHITE, NOBLINK, BLACK, NOBLINK],
]
colorlist= ["666666"]*15*5
textlist=[""]*15*5
blinklist=[0]*15*5
funkok=False
funktest=False
def set_color( field, color, blink ):
sendstr = b"%d" % field
colorlist[field] = colordef[color]["html"]
blinklist[field] = blink
sendstr += colordef[color]["rgb"]
if ( blink ):
sendstr += colordef[BLACK]["rgb"]
else:
sendstr += colordef[color]["rgb"]
sendstr += b"\n"
q.put(sendstr)
TOPIC_POC=[("funk/+/ok/#",1), # Netzkennung
("funk/+/test/#",1), # Testkennung
]
def on_connect(client,userdata,flags,reason_code,properties):
print(f"Connected with result code {reason_code}")
for e in TOPIC_POC:
mqttclient.subscribe(e)
print("Subscribed", e)
def on_disconnet(client,userdata,rc):
print("Disconnect with result code"+str(rc))
time.sleep(1)
mqttclient.reconnect()
def on_message(client,userdata,msg):
global funkok,funktest
topic = msg.topic
Void,quelle,kennung,sub = topic.split("/")
if ( kennung == "ok" ):
funkok=True
if ( kennung == "test" ):
funktest=True
# old mosquitto_lib
#mqttclient=mqtt.Client(client_id="Anzeige",clean_session=False)
# new mosquitto_lib
mqttclient = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2)
mqttclient.on_connect = on_connect
mqttclient.on_message = on_message
def funk_observe():
global funkok,funktest
timeoutfunk=time.time()
timeoutfunktest=time.time()
funkstate=AlarmTyp.RUHE
textlist[70] = "Funk OK"
while ( True ):
try:
if funkok:
timeoutfunk = time.time()
funkok=False;
if funkstate != AlarmTyp.TEST : # a test alarm is running, so keep green light instead of white
set_color( 70, WHITE, NOBLINK )
if funktest:
timeoutfunktest = time.time()
funkstate = AlarmTyp.TEST
funktest=False
set_color(70, GREEN, NOBLINK )
if funkstate == AlarmTyp.TEST and time.time() > (timeoutfunktest + 15*60):
funkstate = AlarmTyp.RUHE
# whitecolor comes from next LoRaWAN signal
if time.time() > ( timeoutfunk + 200 ): # no LoRaWAN for 3 minutes, color red
timeoutfunk = time.time()
set_color(70, RED, NOBLINK )
except Exception as error:
print ("Error: ", error)
time.sleep(0.1)
def HostUp(hostname):
# '''Function returns True if host IP returns a ping, else False'''
if ping(hostname,timeout=1):
HOST_UP = True
else:
HOST_UP = False
return HOST_UP
def ping_hosts():
for i in hostlist:
textlist[ i[0] ] = i[2]
while True:
for i in hostlist:
if HostUp( i[1] ):
set_color( i[0], i[3], i[4] )
# send a rgb string to display
time.sleep(1) # this is mandatory for slow down ping for prevent ping slowdown for unprivileged users
else:
set_color( i[0], i[5], i[6] )
from urllib.request import urlopen
import requests
import json
def decode_prusa_status( fieldnumber, statustext ):
if statustext == 'IDLE' or statustext == 'FINISHED' or statustext == 'READY':
set_color( fieldnumber, WHITE, NOBLINK )
if statustext == 'PRINTING':
set_color( fieldnumber, GREEN, NOBLINK )
if statustext == 'BUSY' or statustext == 'PAUSED' or statustext == 'STOPPED' or statustext == 'ATTENTION':
set_color( fieldnumber, YELLOW, NOBLINK )
if statustext == 'ERROR':
set_color( fieldnumber, RED, NOBLINK )
def decode_octopi_status( fieldnumber, statustext ):
if statustext == "Printing":
set_color( fieldnumber, GREEN, NOBLINK )
elif statustext == "Error" or statustext == "Offline after error":
set_color( fieldnumber, RED, NOBLINK )
elif statustext == "Operational":
set_color( fieldnumber, WHITE, NOBLINK )
else:
set_color( fieldnumber, YELLOW, NOBLINK )
def check_websites():
textlist[74] = "Aktivität < 50 cpm"
textlist[26] = "Ultimaker"
textlist[27] = "Prusa<br>MK3 MMU2"
textlist[28] = "Prusa<br>MK3+"
textlist[29] = "Prusa<br>Mini+"
textlist[30] = "Prusa<br>XL"
textlist[31] = "Prusa<br>SL1"
headersmk3={'X-Api-Key': 'keymk3'}
headersmmu={'X-Api-Key': 'keymmu'}
headersmin={'X-Api-Key': 'keymini'}
headersxl={'X-Api-Key': 'keyxl'}
headersulti={'X-Api-Key': 'keyulti'}
authsl = requests.auth.HTTPDigestAuth('maker','123456')
while (True):
time.sleep(60)
try:
r = requests.get("http://geiger.local/j")
a = r.json()
value = a["data"]["cpm"]
if value < 50:
set_color( 74, WHITE, NOBLINK )
else:
set_color( 74, RED, BLINK )
except:
set_color( 74, BLACK, NOBLINK )
try:
r = requests.get('http://octopi.local/api/job', headers=headersulti )
a = r.json()
decode_octopi_status(26, a['state'] )
except:
set_color( 26, BLACK, NOBLINK )
try:
r = requests.get('http://prusamk3mmu.local/api/v1/status', headers=headersmmu)
a = r.json()
decode_prusa_status(27, a['printer']['state'])
except:
set_color( 27, BLACK, NOBLINK )
try:
r = requests.get('http://prusamk3.local/api/v1/status', headers=headersmk3)
a = r.json()
decode_prusa_status(28, a['printer']['state'])
except:
set_color( 28, BLACK, NOBLINK )
try:
r = requests.get('http://prusamini.local/api/v1/status', headers=headersmin)
a = r.json()
decode_prusa_status(29, a['printer']['state'])
except:
set_color( 29, BLACK, NOBLINK )
try:
r = requests.get('http://prusaxl.local/api/v1/status', headers=headersxl)
a = r.json()
decode_prusa_status(30, a['printer']['state'])
except:
set_color( 30, BLACK, NOBLINK )
try:
r = requests.get('http://prusasl1.local/api/printer', auth=authsl)
a = r.json()
decode_prusa_status(31, a['state']['text'].upper())
except:
set_color( 31, BLACK, NOBLINK )
def serialcommunication():
ser = serial.Serial( DISPTTY,DISPBAUD, timeout=1)
time.sleep(1) # wait for ARDUINO for wake up
ser.reset_input_buffer()
ser.write(b"\n")
a = ser.readline() # read buffers
if ( a != b''):
# System not ready yet
time.sleep(1)
else:
print("System Ready")
while True:
item = q.get(block=True)
a = b'-'
while ( a != item ):
ser.reset_input_buffer()
ser.write(item)
a = ser.readline()
if ( a != item ):
time.sleep(1)
class MyServer(BaseHTTPRequestHandler):
# make log quiet
def log_message(self, format, *args):
pass
def do_GET(self): #the do_GET method is inherited from BaseHTTPRequestHandler
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write("<!DOCTYPE html>\n".encode() )
self.wfile.write("<html>\n".encode() )
self.wfile.write("<head>\n".encode() )
self.wfile.write("<meta charset=\"UTF-8\">\n".encode() )
self.wfile.write("<title>World Domination Status</title><meta http-equiv=\"refresh\" content=\"15\">".encode() )
self.wfile.write("</head>".encode() )
self.wfile.write("<body>".encode() )
self.wfile.write("\n<style>table,th,td {border: 1px solid black;border-collapse:collapse;text-align:center}\n".encode())
self.wfile.write(".blink_me { animation: blinker 1s linear infinite; }\n".encode () )
self.wfile.write("@keyframes blinker {50% { opacity: 0; } }\n".encode() )
self.wfile.write("</style>\n".encode() )
self.wfile.write("<h1>World Domination Panel</h1>".encode())
# define len of total entries, create table 5x3
totallen = len(colorlist)
for i in range( int(totallen/15) ):
self.wfile.write( "<table style=\"width:800px;font-family:osifont;font-size:20px\">\n".encode() )
for j in range(3):
self.wfile.write( "<tr style=\"height:80px\">".encode() )
for k in range(5):
self.wfile.write( ("<td style=\"width:20%; background-color:#" + colorlist[i*15+j*5+k] + \
( ";color:lightgray" if colorlist[i*15+j*5+k] == "000000" else " " ) + \
"\">" + \
( "<div class=\"blink_me\"> " if blinklist[i*15+j*5+k] else " " ) + \
textlist[i*15+j*5+k] + \
( "</div> " if blinklist[i*15+j*5+k] else " " ) + \
"</td>")\
.encode() )
self.wfile.write( "</tr>\n".encode() )
self.wfile.write( "</table><p>\n".encode() )
self.wfile.write( "</body></html>".encode() )
if __name__ == "__main__":
thread = Thread( target = ping_hosts, daemon=True )
thread2 = Thread( target = serialcommunication,daemon=True )
thread3 = Thread( target = funk_observe,daemon=True )
thread4 = Thread( target = check_websites,daemon=True )
thread.start()
thread2.start()
thread3.start()
thread4.start()
webServer = HTTPServer((hostName, serverPort), MyServer)
print("Server started http://%s:%s" % (hostName, serverPort)) #Server starts
mqttclient.connect(MQTTHOST, port=MQTTPORT,keepalive=60)
print("MQTT")
mqttclient.loop_start()
try:
webServer.serve_forever()
except KeyboardInterrupt:
pass
finally:
mqttclient.loop_stop()
webServer.server_close() #Executes when you hit a keyboard interrupt, closing the server
print("Server stopped.")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More