165 lines
3.9 KiB
OpenSCAD
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);
|
|
}
|
|
} |