3d/frontlampe2.scad

165 lines
4.2 KiB
OpenSCAD

use <BOSL/metric_screws.scad>;
use <tht-leds/tht-leds.scad>;
$fn=50;
gap = 0.24;
screw_dia = 3;
screw_gap = 0.6;
screwhead_dia = 6;
screwhead_hei = 3;
screwhold_hei = 3.5;
nutholder_dia = 5;
nutholder_hei = 5;
screwpos = 2;
thickness = 1.2;
sdiameter = 40;
front = 4;
devscrewhead_dia = 6;
devscrew_dia = 4;
module threaded_insert( s = undef, d = undef, l = undef) {
if( 3==s) threaded_insert( d = 4.6 , l = 4.6);
else if( 4==s) threaded_insert( d = 6.3 , l = 6.35);
else if( 5==s) threaded_insert( d = 7.1 , l = 9.5);
else if( 6==s) threaded_insert( d = 8.7 , l = 12.7);
else if( 8==s) threaded_insert( d = 10.24, l = 12.7);
else {
assert( is_undef(s), "Unknown size (expected 3 for M3, ...) or manual (d,l).");
assert( is_num(d), "Diameter d (numeric) or size expected.");
assert( is_num(l), "Length l (numeric) or size expected.");
cylinder( d = d, h = l);
}
}
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);
}
rotate( [0, 0, 180])
translate( [0, 0, -2*thickness])
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 = [-14 : 7 : 14])
if( 0 != i)
translate( [3, i, 0]) {
//tht_led_5mm();
/*translate([0,0,-0.1])
cylinder( d=5+gap, h=screwhold_hei+0.1);
translate([0,0,-screwhold_hei])
cylinder( d=6, h=screwhold_hei);*/
ledz();
}
for( i = [-10.5 : 7 : 10.5])
translate( [3+5.3, i, -1])
ledz();
for( i = [-6.5 : 6.5 : 6.5])
translate( [3+5.3+5.3, i, -1])
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);
}
}
rotate( [0,-90,0])
translate( [0, 0, 0]) {
h = 2*thickness + screwhold_hei + front + gap;
translate( [0, 0, -h+front+gap]) {
difference() {
translate( [0,0,-gap]) intersection() {
d = sdiameter+2*gap+2*thickness;
cylinder( d=d, h=h+gap);
translate( [-gap-thickness,-d/2,0])
cube( [d/2+gap+thickness, d, h+gap]);
}
translate( [0, 0, -0.1-gap])
intersection() {
d = sdiameter+2*gap;
cylinder( d=d, h=h+gap+0.2);
translate( [-gap,-d/2,0])
cube( [d/2+gap, d, h+gap+0.2]);
}
d = thickness+gap;
translate( [-d-0.1, -4-gap, -gap-0.1])
cube( [d+0.2, 8+2*gap, h+gap+0.2]);
translate( [screwpos,0,0])
mirror([0,0,1])
threaded_insert(3);
}
difference() {
translate( [-gap-thickness, 0, -thickness])
for( i = [0 : 1 : 90])
rotate( [0,i,0])
linear_extrude( 1)
intersection() {
d = sdiameter+2*gap+2*thickness;
translate( [thickness+gap, 0])
circle( d=d);
translate( [0, -d/2])
square( [d/2+gap+thickness, d]);
}
translate( [0, 0, -10])
rotate( [0, 90, 0]) {
translate( [0,0,-thickness])
cylinder( d=devscrew_dia, h = 3*thickness, center = true);
linear_extrude( 30)
hull() {
circle( d = devscrewhead_dia);
translate( [30,0])
square( [1, devscrewhead_dia], center=true);
}
}
translate( [screwpos,0,0])
mirror([0,0,1])
threaded_insert(3);
}
}
translate( [0, 0, -2*thickness - gap - screwhold_hei]) {
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]);
}
}