Archive for the ‘OpenSCAD’ Category.

Prägestempel mit OpenSCAD entwerfen

Um meine Kreationen aus Leder zu „branden“, habe ich mir heute in OpenSCAD einen kleinen Stempel entworfen, den ich jetzt bei Shapeways in Kupfer sintern lasse. Hier die Datei:

rotate(a=[0,180,0]) {
    translate([0,0,-5]){
        linear_extrude(
            height = 3, 
            center = false, 
            convexity = 10, 
            slices = 20, 
            scale = 1.0, 
            $fn = 25) {
            text("UweZ",font="Helvetica", $fn=100);
        }
    }
}
 
translate([-34.5,-1.5,1.25]){
cube([35,13,2]);
}

in der Vorschau sieht das dann so aus:

Ob die Form optimal ist, wird sich im Januar rausstellen. Vermutlich muss ich noch die Buchstaben zulaufen lassen, d.h. an der Bodenplatte minimal größer gestalten.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Holzboxen entwerfen mit OpenSCAD

Für mein Bücherregal möchte ich einige Boxen aus Holz bauen, die die Außenmaße 36x26x26 cm (Länge, Breite, Höhe) haben sollen. Um den Entwurf zu visualisieren, nutze ich OpenSCAD, eine freie CAD-Software. Die Besonderheit von OpenSCAD ist die Steuerung per Programmcode, die Maus hat nur wenig zu tun sowie die Möglichkeit, direkt STL-Dateien zu erzeugen, die dann im 3D-Drucker verarbeitet werden können.

Legen wir mal los!

Zuerst zeichnen wir mittels cube() Funktion einen Würfel, um Gewissheit über die Achsen zu bekommen.

cube([50,30,10]);

Wir erkennen anhand der Maße die Achsen: X geht nach rechts, Y nach hinten, Z nach oben. Jetzt wird es Zeit, die ersten Wände zu zeichen.

Im folgenden Bild sieht man die Vorder- und die Hinterwand. Für die Dicke der Holzplatten nutze ich eine Variable, so lässt sich das Design noch auf andere Plattendicken übertragen. Mit translate() verschiebe ich die Rückwand um die Dicke des Holzes nach hinten.

Im folgenden Bild sieht man die Seitenwand vor dem Verschieben, die Objekte gehen hier ineinander über, es ist nicht klar, wo die Vorderwand und das Seitenteil anfangen und aufhören. So etwas gilt es zu vermeiden.

Im folgenden Bild sehen wir das Ergebnis der Rotation mittels rotate(). Die Platte (und die Maße) passen noch nicht, die Seitenwände müssen sauber zwischen Vorder und Rückteil eingepasst werden.

Hier noch ein Bild von oben.

Nach dem Einfügen und Einpassen der Seitenwände (360mm – 2 * Plattendicke) haben wir das folgende Bild, zusammen mit einem der Zylinder für den Griff.

Hier noch aus einer anderen Perspektive, mit dem Zylinder schon auf der richtigen Höhe.

Im nächsten Schritt dupliziere ich den Zylinder und richte beide von der Mitte aus.

Im nächsten Schritt nutze ich die hull() Funktion, um beide Objekte mit einer Hülle zu versehen. In einem ersten Versuch hatte ich einen Quader eingepasst, die Lösung mit der Hülle ist aber wesentlich einfacher und sauberer. Das gesamte Objekt wird jetzt in die Kiste verschoben, um bei der folgenden Differenz-Funktion (Vorderseite minus umhüllte Zylinder) auf jeden Fall vorn und hinten ein sauberes Ergebnis zu liefern.

Im folgenden Bild sieht man das vorläufige Ergebnis, in einem folgenden Beitrag werde ich vermutlich zeigen, wie man einen Boden für die Box einpasst.

Zum Abschluss der fertige Quellcode:

/* param. Holzdicke */
holzdicke = 12;
 
// Rückseite
color([0/255, 255/255, 0/255],1)
translate([0, 360-1*holzdicke, 0]) {
 cube([260,holzdicke,260]);
}
 
 
// Seitenteil 1
translate([holzdicke,holzdicke,0]){
 rotate(a=[0,0,90]) { 
  cube([360-2*holzdicke,holzdicke,260]);
 } // rotate
} // translate
 
// Seitenteil 2
color([0/255, 0/255, 255/255],1)
translate([260,holzdicke,0]){
 rotate(a=[0,0,90]) { 
  cube([360-2*holzdicke,holzdicke,260]);
 } // rotate
} // translate
 
 
difference(){
// Vorderseite
 color([255/255, 0/255, 0/255],1) 
 cube([260,holzdicke,260]);
 
// Griffloch
 hull(){
  // Zylinder 1
  translate([260/2-30,30,200]){
   rotate(a=[90,0,0]) {
    cylinder(h = 80, r1 = 35/2, r2 = 35/2);
   } // rotate
  } //translate
 
  // Zylinder 2
  translate([260/2+30,30,200]){
   rotate(a=[90,0,0]) {
    cylinder(h = 80, r1 = 35/2, r2 = 35/2);
   } // rotate
  } // translate
 } // hull
} // difference

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website