Magnetischer Foto-Rahmen
Der magnetische Foto-Rahmen ist vollkommen parametrisch und kann für jede beliebige Foto-Größe angepasst werden. Es können auch frei gewählte Texte gedruckt werden. Die Magneten sind in den Ecken des Rahmens versteckt und halten das Foto sicher an seinem Platz.
Vorschau
Parameter
▶Binärdateien
include <BOSL2/std.scad>
$fn = 80;
// Frame Width
w = 63.5;
// Frame Length
l = 58.5;
// Frame Height
h = 3;
// Frame Border
border = 10;
// Magnet diameter
magnet_d = 3;
// MAgnet height
magnet_h = 2;
// Magnet tolerance
magnet_tolerance = 0.3;
// Magnet placed inside the frame or outside the frame
magnet_inside = false;
// Text at the bottom of the frame
text1 = "Familien";
// Text at the top of the frame
text2 = "Momente";
// Font for the text
font = "Storytime"; // font
module magnet_cutout() {
cylinder(d=magnet_d + magnet_tolerance, h=magnet_h + magnet_tolerance, anchor=BOTTOM);
}
module picture_frame(anchor, spin, orient) {
attachable(size=[w + border * 2, l + border * 3, h], anchor=anchor, spin=spin, orient=orient) {
difference() {
cuboid([w + border * 2, l + border * 4, h], rounding=2, edges=[FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT]);
translate([0, border, 0])
cuboid([w, l, h], rounding=2, edges=[FRONT + LEFT, FRONT + RIGHT, BACK + LEFT, BACK + RIGHT]);
}
children();
}
}
diff() {
picture_frame() {
position(BACK + LEFT + TOP)
color("blue") linear_extrude(height=0.4)
text(text1, size=12, font=font, halign="left", valign="center");
position(BACK + LEFT + TOP)
translate([0, 0, -h])
linear_extrude(height=h)
offset(delta=2)
text(text1, size=12, font=font, halign="left", valign="center");
position(FRONT + CENTER + TOP)
color("blue") linear_extrude(height=0.4)
translate([0, 11, 0])
text(text2, size=12, font=font, halign="center", valign="center");
// magnet holes in all four corners
position(FRONT + LEFT + BOTTOM)
translate([border / 2, border / 2, magnet_inside ? 0.4 : 0])
tag("remove") magnet_cutout();
position(FRONT + RIGHT + BOTTOM)
translate([-border / 2, border / 2, magnet_inside ? 0.4 : 0])
tag("remove") magnet_cutout();
position(BACK + LEFT + BOTTOM)
translate([border / 2, -border / 2, magnet_inside ? 0.4 : 0])
tag("remove") magnet_cutout();
position(BACK + RIGHT + BOTTOM)
translate([-border / 2, -border / 2, magnet_inside ? 0.4 : 0])
tag("remove") magnet_cutout();
}
}