Add laserwindow cover
This commit is contained in:
		
							parent
							
								
									d834467849
								
							
						
					
					
						commit
						171eff19e0
					
				| @ -55,6 +55,8 @@ module frame(size) { | |||||||
|     fbd=front_body_depth; |     fbd=front_body_depth; | ||||||
|     bbr=back_bumpers_radius; |     bbr=back_bumpers_radius; | ||||||
|      |      | ||||||
|  |     walls_height=height-plate*2; | ||||||
|  |      | ||||||
|     module back_bumpers() { |     module back_bumpers() { | ||||||
|         module bumper() { back_half() circle(r=bbr); } |         module bumper() { back_half() circle(r=bbr); } | ||||||
|         back(depth) { |         back(depth) { | ||||||
| @ -111,7 +113,6 @@ module frame(size) { | |||||||
|     } |     } | ||||||
|      |      | ||||||
|     module walls() { |     module walls() { | ||||||
|         walls_height=height-plate*2; |  | ||||||
|         difference() { |         difference() { | ||||||
|             up(plate) linear_extrude(height=walls_height) { |             up(plate) linear_extrude(height=walls_height) { | ||||||
|                 //back_bumpers(); |                 //back_bumpers(); | ||||||
| @ -129,10 +130,10 @@ module frame(size) { | |||||||
|         offset=4.5; |         offset=4.5; | ||||||
|         plate_len_side=slide_pos.y - offset/2; |         plate_len_side=slide_pos.y - offset/2; | ||||||
|         plate_len_left=plate_len_side/2; |         plate_len_left=plate_len_side/2; | ||||||
|         plate_len_right=plate_len_left*3; |         plate_len_right=plate_len_side + 5; | ||||||
|         // front |         // front | ||||||
|         fwd(th) left(th) up(offset) { |         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) { |         fwd(th) right(width-plate_len_right-th) up(offset) { | ||||||
|             cube([plate_len_right + th*2, th, height - offset*2]); |             cube([plate_len_right + th*2, th, height - offset*2]); | ||||||
| @ -180,6 +181,12 @@ module frame(size) { | |||||||
|             slide(); |             slide(); | ||||||
|             slider(); |             slider(); | ||||||
|         } |         } | ||||||
|  |          | ||||||
|  |         right(get_holodisk_laserwindow_pos_center().x) zrot(-90) { | ||||||
|  |            scale([1, 0.7, 1]) { | ||||||
|  |               slider(); | ||||||
|  |            } | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     module laserwindow_door() { |     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("SaddleBrown") top_cover(); | ||||||
|     color("grey") walls(); |     color("grey") walls(); | ||||||
|     color("gold") laserwindow_door(); |     color("gold") laserwindow_door(); | ||||||
|  | |||||||
| @ -48,6 +48,12 @@ function get_holodisk_laser_cutout_pos_center() = [ | |||||||
| 
 | 
 | ||||||
| // -- laser-window -- | // -- 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() = [ | function get_holodisk_laserwindow_pos_center() = [ | ||||||
|     get_holodisk_laser_cutout_pos_center().x, |     get_holodisk_laser_cutout_pos_center().x, | ||||||
|     0, |     0, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user