import os import datetime as dt print(str(dt.datetime.now())) import importlib as ir from cadquery import exporters as et try: try: root_dir = r'C:\\Users\\TheBears\\Seafile\\Designs\\Projects\\kickdrawers\\cadfree\\code\\' os.chdir(root_dir) except: root_dir = r'C:\\Users\\Ishan\\Seafile\\Designs\\Projects\\kickdrawers\\cadfree\\code\\' os.chdir(root_dir) except: root_dir = r'/home/thebears/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) def xy_wp(): return cq.Workplane('XY') def xz_wp(): return cq.Workplane('XZ') def yz_wp(): return cq.Workplane('YZ') objs = list() t1 = 3.175 rod_r = 23/2 + 1 spool_diameter = 75 + t1*2 spool_width = 25 total_width = spool_width*6 + 2*t1 wire_friction_width = 20 pt_r = 2/2 pt_spacing = 5 off_edge = 9 fast_mode = False n_repl = 6 front_height = spool_diameter - wire_friction_width oxb = u.add_rect(xz_wp(),total_width+t1+2*t1, n_repl*spool_diameter).extrude(t1).translate((-t1,spool_diameter,0)) oxr = u.add_rect(yz_wp(), spool_diameter, n_repl*spool_diameter).extrude(t1) oxl = u.add_rect(yz_wp(), spool_diameter, n_repl*spool_diameter).extrude(t1).translate((total_width,0,0)) rod_pts = list() for i in range(n_repl): rod_pts.append( [spool_diameter/2, spool_diameter/2 + i*spool_diameter]) ox_cyl = yz_wp().pushPoints(rod_pts).circle(rod_r).extrude(total_width+t1) oxf = u.add_rect(xz_wp(), total_width+t1+2*t1, wire_friction_width).extrude(-t1).translate((-t1,0,front_height ))#spool_diameter/2 - wire_friction_width/2)) n_pts = int(total_width / (2*pt_spacing)) - 1 all_pts = list() center = (total_width + t1)/2 for t in range(-n_pts, n_pts+1): all_pts.append((t*pt_spacing + center,0)) pts_h = xz_wp().pushPoints(all_pts).circle(pt_r).extrude(-t1*3).translate((0,0,front_height + wire_friction_width/2)) oxf = oxf.cut(pts_h) oxfs = list() for i in range(n_repl): oxfs.append( u.copy(oxf).translate((0,0,i*spool_diameter)) ) # objs.extend(oxfs) oxl = oxl.cut(ox_cyl) oxr = oxr.cut(ox_cyl) # oxb = u.add_rect(xz_wp(),total_width+t1+2*t1, n_repl*spool_diameter).extrude(t1).translate((-t1,spool_diameter,0)) pts_holes_back = list() for i in range(n_repl): pts_holes_back.append( [ 0 + 20, i*spool_diameter + spool_diameter - off_edge] ) pts_holes_back.append( [ total_width + 2.5 - 20 , i*spool_diameter + spool_diameter - off_edge] ) pts_holes_back.append( [ (total_width + 2.5)/2 , i*spool_diameter + spool_diameter - off_edge] ) obj_c = xz_wp().pushPoints(pts_holes_back).circle(2.5).extrude(-total_width+t1) # objs.append(obj_c) oxb = oxb.cut(obj_c) if not fast_mode: for i in range(n_repl): oxl, oxfs[i] = u.make_fingers(oxl, oxfs[i], skip_nut_slots_B = True) oxr, oxfs[i] = u.make_fingers(oxr, oxfs[i], skip_nut_slots_B = True) oxb, oxr = u.make_fingers(oxb, oxr, num_tabs = 11, skip_nut_slots_A = True, swap_ab = True) oxb, oxl = u.make_fingers(oxb, oxl, num_tabs = 11, skip_nut_slots_A = True, swap_ab = True) pts_holes = list() for i in range(n_repl): pts_holes.append( [spool_diameter/2,spool_diameter/2 - rod_r - 8 + i*spool_diameter] ) pts_holes.append( [spool_diameter/2,spool_diameter/2 + rod_r + 8 + i*spool_diameter] ) # pts_holes.append( [ off_edge, off_edge] ) # pts_holes.append( [ off_edge, spool_diameter - off_edge] ) # pts_holes.append( [spool_diameter - off_edge, off_edge] ) # pts_holes.append( [spool_diameter - off_edge, spool_diameter - off_edge] ) obj_c = yz_wp().pushPoints(pts_holes).circle(2.5).extrude(total_width+t1) oxr = oxr.cut(obj_c) oxl = oxl.cut(obj_c) objs.extend(oxfs) objs.append(oxl) objs.append(oxr) objs.append(oxf) objs.append(oxb) for x in objs: show_object(x) if not fast_mode: u.save_stls([objs], os.path.join(root_dir,'spool_holder_extended'), 'spool')