//Last edited on 2019-06-28 16:45:03 by jstolfi #include "fume_hood_frame.inc" #include "fume_hood_plates.inc" #include "fume_hood_counter.inc" #include "fume_hood_iron.inc" #include "fume_hood_drawers.inc" #macro fume_hood(show_drawers, show_plates) // A fume hood with drawers etc. // The counter with metal frame, and its dimensions: #local counter = object{ fume_hood_counter(1) } #local counter_dim = fume_hood_counter(0); #local counter_topz = 900; // Z coordinate of top surface of counter, from bottom of bot plate. #local drawers_botz = 150; // Z coordinate of bot of nominal box of bot drawer, from bot of frame. #local drawers_supp_th = 10; // Y thickness of drawer support boards, from inner surf of frame. // Frame dimensions: #local frame_wkz = counter_topz - plate_th; #local frame = object{ fume_hood_frame(counter_dim, frame_wkz, 0, 1) } #local frame_dim = fume_hood_frame(counter_dim, frame_wkz, 0, 0); // Drawers: #local drawers = fume_hood_drawers(frame_dim,drawers_supp_th, 1) #local drawer_dims = fume_hood_drawers(frame_dim,drawers_supp_th, 0); #local drawers_N = dimension_size(drawer_dims,1); // Number of drawers. // Displacement to position bottom drawer rell to frame: #local ddr = < frame_dim.x, tube_wd, drawers_botz >; // Disp to position counter in frame: #local dct_z = counter_topz - counter_dim.z - plate_th; #local dct = < 0, (frame_dim.y - counter_dim.y)/2, dct_z >; #local bare_hood = union{ object{ frame } object{ counter translate dct } #if (show_drawers = 1) object{ drawers translate ddr } #end } #if (show_plates = 1) // Wall plates: #local plates = object{ fume_hood_plates(frame_dim,counter_topz,drawer_dims,drawers_botz, 1) } #local plates_dim = fume_hood_plates(frame_dim,counter_topz,drawer_dims,drawers_botz, 0); // Frame disp to center the frame in the plates, assumed all around: #local dfr = 0.5*(plates_dim - frame_dim); union{ object{ bare_hood translate dfr } object{ plates } } #else object{ bare_hood } #end #end