|
|
@@ -55,6 +55,8 @@ module frame(size) { |
|
|
|
fbd=front_body_depth; |
|
|
|
bbr=back_bumpers_radius; |
|
|
|
|
|
|
|
walls_height=height-plate*2; |
|
|
|
|
|
|
|
module back_bumpers() { |
|
|
|
module bumper() { back_half() circle(r=bbr); } |
|
|
|
back(depth) { |
|
|
@@ -111,7 +113,6 @@ module frame(size) { |
|
|
|
} |
|
|
|
|
|
|
|
module walls() { |
|
|
|
walls_height=height-plate*2; |
|
|
|
difference() { |
|
|
|
up(plate) linear_extrude(height=walls_height) { |
|
|
|
//back_bumpers(); |
|
|
@@ -129,10 +130,10 @@ module frame(size) { |
|
|
|
offset=4.5; |
|
|
|
plate_len_side=slide_pos.y - offset/2; |
|
|
|
plate_len_left=plate_len_side/2; |
|
|
|
plate_len_right=plate_len_left*3; |
|
|
|
plate_len_right=plate_len_side + 5; |
|
|
|
// front |
|
|
|
fwd(th) left(th) up(offset) { |
|
|
|
cube([plate_len_left / 2 + th*2, th, height - offset*2]); |
|
|
|
cube([plate_len_left + th*2, th, height - offset*2]); |
|
|
|
} |
|
|
|
fwd(th) right(width-plate_len_right-th) up(offset) { |
|
|
|
cube([plate_len_right + th*2, th, height - offset*2]); |
|
|
@@ -180,6 +181,12 @@ module frame(size) { |
|
|
|
slide(); |
|
|
|
slider(); |
|
|
|
} |
|
|
|
|
|
|
|
right(get_holodisk_laserwindow_pos_center().x) zrot(-90) { |
|
|
|
scale([1, 0.7, 1]) { |
|
|
|
slider(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
module laserwindow_door() { |
|
|
@@ -207,6 +214,47 @@ module frame(size) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
overlap=1; |
|
|
|
rails_size = [ |
|
|
|
get_holodisk_laserwindow_size().x * 2 + overlap*2, |
|
|
|
1, |
|
|
|
walls_height |
|
|
|
]; |
|
|
|
rail_size = [rails_size.x, rails_size.y, 2]; |
|
|
|
rails_pos = [get_holodisk_laserwindow_pos().x - rails_size.x/2, |
|
|
|
-rails_size.y, plate]; |
|
|
|
rail1_pos = [rails_pos.x, rails_pos.y, rails_pos.z]; |
|
|
|
rail2_pos = [rails_pos.x, rails_pos.y, rails_pos.z + rails_size.z - rail_size.z]; |
|
|
|
|
|
|
|
module laserwindow_slider_rails() { |
|
|
|
translate(rail1_pos) cube(rail_size); |
|
|
|
translate(rail2_pos) cube(rail_size); |
|
|
|
} |
|
|
|
|
|
|
|
module laserwindow_slider_cover() { |
|
|
|
cover_size=[ |
|
|
|
get_holodisk_laserwindow_size().x, |
|
|
|
rails_size.y + overlap*2, |
|
|
|
get_holodisk_slide_slider_size().z |
|
|
|
]; |
|
|
|
cover_plate=[cover_size.x, rail_size.y, cover_size.z]; |
|
|
|
cover_top=[cover_size.x - overlap, cover_size.y, cover_size.z - overlap]; |
|
|
|
/*cover_pos=[rails_pos.x+overlap, rails_pos.y + rails_size.y, rails_pos.z];*/ |
|
|
|
cover_pos=[get_holodisk_laserwindow_pos().x, rails_pos.y + rails_size.y, rails_pos.z]; |
|
|
|
left(anim(0,1)*get_holodisk_laserwindow_size().x) |
|
|
|
right(anim(len(get_anim_keys())-2,len(get_anim_keys())-1)*get_holodisk_laserwindow_size().x) |
|
|
|
translate(cover_pos) |
|
|
|
hull() { |
|
|
|
fwd(cover_plate.y) cube(cover_plate); |
|
|
|
fwd(cover_top.y) up((cover_plate.z-cover_top.z)/2) cube(cover_top); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
color("red") laserwindow_slider_rails(); |
|
|
|
color("red") laserwindow_slider_cover(); |
|
|
|
} |
|
|
|
|
|
|
|
color("SaddleBrown") top_cover(); |
|
|
|
color("grey") walls(); |
|
|
|
color("gold") laserwindow_door(); |
|
|
|