import os import importlib as ir from cadquery import exporters as et root_dir = r'C:\\Users\\TheBears\\Seafile\\Designs\\Projects\\kickdrawers\\cadfree\\code' os.chdir(root_dir) import items as it import math import util as u import cadquery as cq ir.reload(it) ir.reload(u) objs = list() # Base parameters add_the_fingers = False r_hole = 4.6/2 add_holes = True t_large = 3.175 box_height = 1 * 25.4 box_depth = 22*25.4 box_width = 10 * 25.4 slider_thickness = 13.28 cabinet_height = 20 * 25.4 cabinet_hole_spacing = 4.5*25.4 back_depth = 25 settings = {'w':box_width, 'd':box_depth, 'h':box_height, 't_large':t_large, 'add_holes':add_holes, 'r_hole':r_hole, 'add_fingers':add_the_fingers, 'slide_flavor':'24inch', 'slide_on_bottom': True, 'front_pts': False} yz_wp = lambda: cq.Workplane('YZ') xz_wp = lambda: cq.Workplane('XZ') # Make drawers drawer_1 = it.create_drawer(**settings ).add_tag('drawer_1'); for idx, ed in enumerate(drawer_1): drawer_1[idx] = ed.translate((t_large+slider_thickness,0,0)) objs.append(drawer_1) panel_depth = box_depth + back_depth ar1 = u.add_rect(yz_wp(), panel_depth, cabinet_height).extrude(t_large).translate((0,0,0)) ar2 = u.add_rect(yz_wp(), panel_depth, cabinet_height).extrude(t_large).translate((box_width+ 2* slider_thickness + t_large ,0,0)) ar3 = u.add_rect(xz_wp(), box_width+2*slider_thickness + 2*t_large, cabinet_height).extrude(t_large).translate((0,box_depth+back_depth,0)) for i in range(math.floor(cabinet_height/cabinet_hole_spacing)): pts_f = u.slide_pts(panel_depth, cabinet_hole_spacing/2, offset_from_back=47+2, spacing=(64, 351, 64)) extr = yz_wp().pushPoints(pts_f).slot2D(10, r_hole*2).extrude(box_depth + 2*slider_thickness + 2*t_large).translate((0,0,i*cabinet_hole_spacing)) ar1 = ar1.cut(extr) ar2 = ar2.cut(extr) objs.append([ar1,ar2, ar3]) for x in objs: for o in x: show_object(o)