// Last edited on 2020-04-05 23:28:13 by jstolfi #include "tube_stool_leg.inc" #macro tube_stool_frame( tagg, frame_ht, feet_wd, arms_wd, holes_wd, tube_wd ) // The steel tube frame of the stool. // // {tagg} Prefix for piece names. // {frame_ht} Height of frame. // {feet_wd} Width of bottom of frame between tips of opposite feet. // {arms_wd} Width of top of frame between tips of opposite arms. // {holes_wd} Distance between centers of holes in opposite arms. // {tube_wd} Outer diameter of tubes. #local tx_metal = texture_brushed_metal( < 1.000, 1.000, 0.980 > ) // Legs with low and high connecting strap: #local leg_0 = object{ tube_stool_leg( tagg, frame_ht, feet_wd, arms_wd, holes_wd, tube_wd, 0 ) } #local leg_1 = object{ tube_stool_leg( tagg, frame_ht, feet_wd, arms_wd, holes_wd, tube_wd, 1 ) } // Pairs of opposite legs: #local leg_pair_0 = union{ object{ leg_0 } object{ leg_0 scale < -1, +1, +1 > } translate xplode*0.10*frame_ht*z } #local leg_pair_1 = union{ object{ leg_1 } object{ leg_1 scale < -1, +1, +1 > } rotate 90*z translate xplode*1.20*frame_ht*z } // The whole frame: #local frame = union{ object{ leg_pair_0 } object{ leg_pair_1 } texture{ tx_metal } } frame #end