Initial commit: complete, but untuned model

This commit is contained in:
Thomas Kolb 2019-11-11 22:55:27 +01:00
commit 7a1b6fd502
4 changed files with 216 additions and 0 deletions

32
Lampe.scad Normal file
View file

@ -0,0 +1,32 @@
include <Lampe_Parameter.scad>;
include <Lampe_2DFormen.scad>;
// acryl pipe
%color("LightCyan", 0.5)
difference() {
cylinder(d = acryl_outer_dia, h=acryl_height, center=true);
cylinder(d = acryl_inner_dia, h=acryl_height+1, center=true);
}
%color("Yellow", 0.3)
translate([0,0,inner_height/2+1.5*wood_thickness]) linear_extrude(wood_thickness, center=true) top_outer_plate();
translate([0,0,inner_height/2+0.5*wood_thickness]) linear_extrude(wood_thickness, center=true) top_inner_plate();
translate([0,0,-inner_height/2-0.5*wood_thickness]) linear_extrude(wood_thickness, center=true) bottom_inner_plate();
%color("Yellow", 0.6)
translate([0,0,-inner_height/2-1.5*wood_thickness]) linear_extrude(wood_thickness, center=true) bottom_outer_plate();
color("red")
for(angle = [0:45:7*45]) {
rotate([0, 0, angle])
translate([0, holder_offset, 0]) rotate([90, 0, 0]) linear_extrude(wood_thickness, center=true) ledstrip_holder();
}
translate([0,0,-inner_height/2-bottom_box_height-2.5*wood_thickness]) linear_extrude(wood_thickness, center=true) base_plate();
color("green")
for(angle = [0:45:7*45]) {
rotate([0, 0, angle])
translate([0, bottom_box_wall_offset, -inner_height/2-bottom_box_height/2-2*wood_thickness]) rotate([90, 0, 0]) linear_extrude(wood_thickness, center=true) box_wall();
}

128
Lampe_2DFormen.scad Normal file
View file

@ -0,0 +1,128 @@
module top_outer_plate() {
difference() {
circle(d=lamp_dia);
circle(d=screw_dia);
};
}
module top_inner_plate() {
difference() {
union() {
difference() {
circle(d=lamp_dia);
circle(d=acryl_outer_dia);
}
circle(d=acryl_inner_dia);
}
union() {
for(angle = [0:45:7*45]) {
rotate(angle) translate([tooth_distance/2, holder_offset])
square([tooth_width, wood_thickness], center=true);
rotate(angle) translate([-tooth_distance/2, holder_offset])
square([tooth_width, wood_thickness], center=true);
}
}
circle(d=screw_dia);
};
}
module cable_holes() {
difference() {
circle(d = acryl_inner_dia-2*cable_hole_spacing);
circle(r = holder_offset + cable_hole_spacing);
for(angle = [0:45:7*45]) {
rotate(angle+22.5)
translate([0, lamp_dia/4]) square([cable_hole_spacing, lamp_dia/2], center=true);
}
}
}
module box_tooth_holes() {
}
module bottom_inner_plate() {
difference() {
top_inner_plate();
cable_holes();
}
}
module bottom_outer_plate() {
difference() {
top_outer_plate();
cable_holes();
box_wall_tooth_holes();
}
}
module base_plate() {
difference() {
top_outer_plate();
box_tooth_holes();
box_wall_tooth_holes();
}
}
module ledstrip_holder() {
union() {
square([holder_width, inner_height], center=true);
translate([tooth_distance/2, (inner_height + tooth_height)/2]) square([tooth_width, tooth_height], center=true);
translate([-tooth_distance/2, (inner_height + tooth_height)/2]) square([tooth_width, tooth_height], center=true);
translate([tooth_distance/2, -(inner_height + tooth_height)/2]) square([tooth_width, tooth_height], center=true);
translate([-tooth_distance/2, -(inner_height + tooth_height)/2]) square([tooth_width, tooth_height], center=true);
}
}
module box_wall() {
teeth_topbottom = floor(bottom_box_wall_width / tooth_distance);
teeth_right = floor(bottom_box_height / tooth_distance);
teeth_left = teeth_right - 1;
union() {
square([bottom_box_wall_width, bottom_box_height], center=true);
start_pos_tb = -(tooth_distance * teeth_topbottom)/2 + tooth_distance/2;
for(i = [0:teeth_topbottom-1]) {
translate([start_pos_tb + i*tooth_distance, (bottom_box_height + tooth_height)/2])
square([tooth_width, tooth_height], center=true);
translate([start_pos_tb + i*tooth_distance, -(bottom_box_height + tooth_height)/2])
square([tooth_width, tooth_height], center=true);
}
/*
start_pos_r = -(tooth_distance * teeth_right)/2 + tooth_distance/2;
for(i = [0:teeth_right-1]) {
translate([(bottom_box_wall_width + tooth_width)/2, start_pos_r + i*tooth_distance])
square([tooth_height, tooth_width], center=true);
}
start_pos_l = -(tooth_distance * teeth_left)/2 - tooth_distance/2;
for(i = [1:teeth_left]) {
translate([-(bottom_box_wall_width + tooth_width)/2, start_pos_l + i*tooth_distance])
square([tooth_height, tooth_width], center=true);
}
*/
}
}
module box_wall_tooth_holes() {
teeth_topbottom = floor(bottom_box_wall_width / tooth_distance);
start_pos_tb = -(tooth_distance * teeth_topbottom)/2 + tooth_distance/2;
for(angle = [0:45:7*45]) {
rotate(angle)
for(i = [0:teeth_topbottom-1]) {
translate([start_pos_tb + i*tooth_distance, bottom_box_wall_offset])
square([tooth_width, tooth_height], center=true);
}
}
}

29
Lampe_2DPanel.scad Normal file
View file

@ -0,0 +1,29 @@
include <Lampe_Parameter.scad>;
include <Lampe_2DFormen.scad>;
spacing = 1;
translate([0, 0]) top_outer_plate();
translate([lamp_dia+spacing, 0]) top_inner_plate();
translate([2*(lamp_dia+spacing), 0]) bottom_inner_plate();
translate([0, lamp_dia+spacing]) bottom_outer_plate();
translate([1*(lamp_dia+spacing), lamp_dia+spacing]) base_plate();
ledstrip_holder_base_pos = [
inner_height/2 + tooth_height - lamp_dia/2,
1.5*lamp_dia + spacing - holder_width/2];
for(i = [1:8]) {
translate(ledstrip_holder_base_pos + [0, i*(spacing + holder_width)])
rotate(90) ledstrip_holder();
}
translate([230, 30])
rotate(0)
for(x = [1:1]) {
for(y = [1:8]) {
translate([x*(spacing+bottom_box_height+tooth_height*2), y*(spacing + bottom_box_wall_width)])
rotate(90) box_wall();
}
}

27
Lampe_Parameter.scad Normal file
View file

@ -0,0 +1,27 @@
wood_thickness = 5;
acryl_thickness=5;
acryl_outer_dia = 100;
acryl_inner_dia = 94;
lamp_dia = acryl_outer_dia + 10;
screw_dia = 6;
acryl_height = 300;
inner_height = acryl_height - 10;
bottom_box_height = 50;
bottom_box_wall_width = 37.5;
bottom_box_wall_offset = 48;
tooth_height = wood_thickness;
tooth_width = 5;
tooth_distance = 2*tooth_width;
holder_width = 20;
holder_offset = holder_width+wood_thickness*1.6;
cable_hole_spacing = tooth_width;
$fn=50;