3d/frontlampe3.scad

165 lines
3.9 KiB
OpenSCAD

use <./threaded_insert.scad>;
$fn=50;
gap = 0.24;
mgap = 1.5*gap;
length = 40;
guard_diameter = 430;
thickness = 1.2;
sdiameter = 40;
screw_dia = 3;
screw_gap = 0.6;
screwhead_dia = 6;
screwhead_hei = 3;
screwhold_hei = 3.5;
nutholder_dia = 5;
nutholder_hei = 5;
screwpos = 4;
front = 4;
devscrewhead_dia = 6;
devscrew_dia = 4;
function ease_in(v) = v^2;
function ease_out(v) = 1 - v^2;
function ease_inout(v) = (1-v^2)^4;
module rotate_in( rot, pos) {
translate( -pos) rotate( rot) translate( pos) children();
}
module ledz( d=5, h=5) {
/*
tht_led_5mm();
translate([0,0,-screwhold_hei])
cylinder( d=6, h=screwhold_hei);*/
translate([0,0,-0.1])
cylinder( d=d+gap, h=h+0.1);
translate([0,0,-h])
cylinder( d=d+gap+1, h=h);
}
module half_cylinder( d, h, f=0, v=undef) {
g = is_undef(v) ? f : v;
hull() {
intersection() {
rotate( [0, 90, 0])
cylinder( d=d, h=h);
translate( [0, -d/2, g])
cube( [h, d, 100*d]);
}
translate( [0, -d/2, g])
cube( [h, d, 0.1]);
}
}
L = length; // Länge der Lampe (Nur gekrümmter Teil)
W = sdiameter+2*thickness+2*mgap; // Breite der Lampe
D = guard_diameter+mgap; // Schutzblechkreisdurchmesser
U = PI*D; // Umfang Schutzblech
S = 0.001;
function x(i) = i * L;
function y(i) = (1-i^2) * W * (1-i) + i * ((1-i)^2) * W;
function z(i) = y(i) + i*W/8;
function o(i) = i*180*L/U;
union() {
l = front+screwhold_hei;
difference() {
//minkowski() {
difference() {
union() {
resolution = 1/50;
for( i = [0 : resolution : 1]) {
hull() {
rotate_in( [0, o(i), 0], [0, 0, D])
half_cylinder( y(i), S, v=-thickness-2*mgap);
rotate_in( [0, o(i+resolution), 0], [0, 0, D])
half_cylinder( y(i+resolution), S, v=-thickness-2*mgap);
}
}
translate( [-l, 0, 0])
half_cylinder( W, l, v=-thickness-2*mgap);
}
// Schraubloch
translate( [9, 0, 0])
cylinder( d = devscrewhead_dia, h = 30);
}
//cube(1);
//}
translate( [-0.0001,0,screwpos])
rotate( [0, 90, 0])
threaded_insert( 3, gap=gap);
translate( [-l, 0, 0])
translate( [-0.1,0])
half_cylinder( sdiameter+2*mgap, l+0.2, v=-mgap);
// Schraubloch
translate( [9, 0, 0]) {
translate( [0,0,-3*thickness+0.1])
cylinder( d = devscrew_dia, h = 3*thickness);
cylinder( d = devscrewhead_dia, h = 30);
}
}
// Auflagestege
*rotate( [0,-90,0]) {
translate( [sdiameter/2-0.8, -6, 0])
cube( [1, 12, screwhold_hei]);
for( i = [0, 1])
mirror( [0, i, 0])
translate( [-1, sdiameter/2 - 0.75, 0])
cube( [8, 1, screwhold_hei]);
}
}
rotate( [0, 90, 0]) mirror( [0,0,1]) translate( [5*thickness,0,front+screwhold_hei-2*thickness])
//translate([-screwhold_hei,0,0]) rotate( [0,-90,0])
difference() {
union() {
intersection() {
cylinder( d=sdiameter, h=2*thickness);
translate( [0,-sdiameter/2,0])
cube( [sdiameter/2, sdiameter, 2*thickness]);
}
translate( [0,0,-screwhold_hei])
intersection() {
cylinder( d=sdiameter, h=2*thickness+screwhold_hei);
translate( [-thickness-gap,-sdiameter/2,0])
cube( [sdiameter/2+thickness+gap, sdiameter, 2*thickness+screwhold_hei]);
hull() {
translate( [screwpos, 0, 0])
cylinder( d=8, h=2*thickness+screwhold_hei);
*translate( [-thickness-gap, -8/2])
cube( [2+gap, 8, 2*thickness+screwhold_hei]);
}
}
}
// Platz hinter den Leds müssen hinten frei bleiben
translate( [1, 0, 0])
union() {
for( i = [-15, -8, 8, 15])
if( 0 != i)
translate( [3, i, 0])
ledz();
for( i = [-12, -4.5, 4.5, 12])
translate( [3+5.3, i, 0])
ledz();
for( i = [-7.5, 0, 7.5])
translate( [3+5.3+5.3, i, 0])
ledz();
}
// screwhole
mirror( [0, 0, 1])
translate( [screwpos, 0, -2*thickness]) {
translate( [0, 0, -0.1])
cylinder( d=screw_dia+screw_gap, h=screwhold_hei+2*thickness+0.2);
translate( [0, 0, -0.1])
cylinder( d=screwhead_dia+screw_gap, h=screwhead_hei+0.1);
}
}