You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

145 lines
3.9 KiB

module top_outer_plate() {
difference() {
circle(d=lamp_dia);
//circle(d=screw_dia);
circle(r=nut_outer_radius, $fn=6);
};
}
module top_inner_plate() {
difference() {
union() {
difference() {
circle(d=lamp_dia);
circle(d=acryl_outer_dia+acryl_tolerance);
}
circle(d=acryl_inner_dia-acryl_tolerance);
}
union() {
for(angle = [0:45:7*45]) {
rotate(angle) translate([tooth_distance/2, holder_offset])
square([tooth_width+tooth_hole_tolerance, wood_thickness+tooth_hole_tolerance], center=true);
rotate(angle) translate([-tooth_distance/2, holder_offset])
square([tooth_width+tooth_hole_tolerance, wood_thickness+tooth_hole_tolerance], 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 bottom_inner_plate() {
difference() {
top_inner_plate();
cable_holes();
}
}
module bottom_outer_plate() {
difference() {
//top_outer_plate();
circle(d=lamp_dia);
circle(r=nut_inset_radius);
cable_holes();
box_wall_tooth_holes();
}
}
module base_plate() {
difference() {
circle(d=lamp_dia);
circle(d=screw_dia);
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_hole_tolerance, tooth_height+tooth_hole_tolerance], center=true);
}
}
}
module box_wall_with_holes() {
difference() {
box_wall();
translate([0, dc_conn_offset]) circle(d=dc_conn_dia);
}
}
module foot_piece() {
intersection() {
difference() {
circle(r=foot_outer_radius);
circle(r=foot_inner_radius);
}
polygon(points=[ [0,0], lamp_dia/2 * [ cos(foot_angle/2), sin(foot_angle/2) ], lamp_dia/2 * [ cos(-foot_angle/2), sin(-foot_angle/2) ] ]);
}
}