yacwc
This commit is contained in:
130
spool_holder.py
Normal file
130
spool_holder.py
Normal file
@@ -0,0 +1,130 @@
|
||||
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')
|
||||
Reference in New Issue
Block a user