import os import importlib as ir from cadquery import exporters as et from util import intersect, add_rect, do_fingers import util as u import numpy as np from pathlib import Path import random home = str(Path.home()) root_dir = home+'\\Seafile\\Designs\\Projects\\kickdrawers\\cadfree\\code' os.chdir(root_dir) import items as it import util as u import cadquery as cq ir.reload(it) ir.reload(u) print('hello') print('hello2f') objs = list() # Base parameters add_the_fingers = False force_tab_width = False # r_hole = 4.6/2 r_hole = 3.5/2 nut_depth = 10 nut_width = 5.5 nut_thickness = 2.5 m_length = 15 full_width = 1012 slider_thickness = 14 t_small = 3.175 t_large = t_small*1 back_padding = 14 box_width = 226 box_depth = 433 box_height = 90 prefix = 'dividers' #120 box_clearance_depth = box_depth - 2*t_large n_bins_depth = 7 n_space_depth = box_clearance_depth / n_bins_depth box_clearance_width = box_width - 2*t_large n_bins_width = 4 n_space_width = box_clearance_width / n_bins_width tab_width =52 xy_wp = lambda: cq.Workplane('XY') xz_wp = lambda: cq.Workplane('XZ') yz_wp = lambda: cq.Workplane('YZ') bottom = u.add_rect(xy_wp(), box_width, box_depth).extrude(t_large) b_side = u.add_rect(xz_wp(), box_width, box_height).extrude(-t_large) f_side = u.add_rect(xz_wp(), box_width, box_height).extrude(t_large).translate((0,box_depth, 0)) l_side = u.add_rect(yz_wp(), box_depth, box_height).extrude(t_large) r_side = u.add_rect(yz_wp(), box_depth, box_height).extrude(-t_large).translate((box_width, 0, 0)) print('hellod') pnx = list() if True: for i in range(1,n_bins_depth): #n_bins_depth for iw in range(0, n_bins_width): #n_bins_width if len(pnx) > 1: continue pnx.append( u.add_rect(xz_wp(), tab_width, box_height).extrude(t_large).translate((t_large + iw*n_space_width + n_space_width/2 - tab_width/2,t_large + i* box_clearance_depth/n_bins_depth,0)) ) # for i in range(1,n_bins_width): for idd in range(0,n_bins_depth): if len(pnx) > 1: continue a_panel = u.add_rect(yz_wp(), tab_width, box_height).extrude(t_large).translate(( t_large/2 + i* box_clearance_width /n_bins_width, t_large/2 + (idd+.5)*n_space_depth -tab_width/2,0)) pnx.append(a_panel) # for idx in range(len(pnx)): # if random.random() < 0.05: if True: bottom,pnx[idx], _ = do_fingers( bottom,pnx[idx],num_tabs = 3, cut=True, skip_bolt_1= True) bottom, b_side, _ = u.do_fingers(bottom, b_side, num_tabs = 7, skip_bolt_1= True, skip_bolt_2=True) bottom, f_side, _ = u.do_fingers(bottom, f_side, num_tabs = 7, skip_bolt_1= True, skip_bolt_2=True) bottom, l_side, _ = u.do_fingers(bottom, l_side, num_tabs = 7, skip_bolt_1= True, skip_bolt_2=True) bottom, r_side, _ = u.do_fingers(bottom, r_side, num_tabs = 7, skip_bolt_1= True, skip_bolt_2=True) l_side, b_side, _ = u.do_fingers(l_side, b_side, num_tabs = 5, skip_bolt_1= True, skip_bolt_2=True) l_side, f_side, _ = u.do_fingers(l_side, f_side, num_tabs = 5, skip_bolt_1= True, skip_bolt_2=True) r_side, b_side, _ = u.do_fingers(r_side, b_side, num_tabs = 5, skip_bolt_1= True, skip_bolt_2=True) r_side, f_side, _ = u.do_fingers(r_side, f_side, num_tabs = 5, skip_bolt_1= True, skip_bolt_2=True) il = it.item_list([bottom, b_side, l_side, r_side, f_side, *pnx]); cm = os.path.join(root_dir,'divider_newstl') try: os.mkdir(cm) except: pass u.save_stls([il], cm, 'dividers') np.random.seed(20)# cold = lambda: tuple([int(x) for x in np.random.randint(0,255, size=(3,1), dtype=int).squeeze()]) for f, itx in list(globals().items()): if isinstance(it, list): for p in it: if isinstance(p, cq.Workplane): cold = tuple([int(x) for x in np.random.randint(0,255, size=(3,1), dtype=int).squeeze()]) show_object(p, options=dict(alpha=0.0, color=cold )) if isinstance(itx, cq.Workplane): show_object(itx)#, options=dict(alpha=0.0, color=cold() )) for s in pnx: show_object(s)#, options=dict(alpha=0.0, color=cold() )) # show_object(a_panel, options=dict(alpha=0.5,color=cold )) # objs.append(bottom) # objs.append(b_side) # objs.append(f_side) # objs.append(l_side) # objs.append(r_side) # for x in objs: # show_object(x)