From 171eff19e062736f6928cc380e887dc14320ad5e Mon Sep 17 00:00:00 2001 From: Dejvino Date: Wed, 23 Dec 2020 20:42:26 +0100 Subject: [PATCH] Add laserwindow cover --- holodisk.scad | 54 +++++++++++++++++++++++++++++++++++++++++++--- holodisk_spec.scad | 6 ++++++ 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/holodisk.scad b/holodisk.scad index 371b1fa..3745bd1 100755 --- a/holodisk.scad +++ b/holodisk.scad @@ -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(); diff --git a/holodisk_spec.scad b/holodisk_spec.scad index b438b98..fcad369 100644 --- a/holodisk_spec.scad +++ b/holodisk_spec.scad @@ -48,6 +48,12 @@ function get_holodisk_laser_cutout_pos_center() = [ // -- laser-window -- +function get_holodisk_laserwindow_pos() = [ + get_holodisk_laserwindow_pos_center().x - get_holodisk_laserwindow_size().x/2, + get_holodisk_laserwindow_pos_center().y - get_holodisk_laserwindow_size().y/2, + get_holodisk_laserwindow_pos_center().z - get_holodisk_laserwindow_size().z/2, + ]; + function get_holodisk_laserwindow_pos_center() = [ get_holodisk_laser_cutout_pos_center().x, 0,