Generate DXFs for all the laser cut parts
This commit is contained in:
parent
ad93f7a995
commit
e892caaf41
|
@ -0,0 +1,25 @@
|
|||
import cadquery as cq
|
||||
from cadquery import exporters
|
||||
|
||||
import gantry
|
||||
|
||||
parts = [
|
||||
(gantry.g.upper_front_plate, "gantry_upper_front", gantry.plate_z),
|
||||
(gantry.g.upper_back_plate, "gantry_upper_back", gantry.plate_z),
|
||||
(gantry.g.lower_front_plate, "gantry_lower_front", gantry.plate_z),
|
||||
(gantry.g.lower_back_plate, "gantry_lower_back", gantry.plate_z),
|
||||
(gantry.g.right_bearing_mount, "gantry_fixed_bearing_mount", gantry.x_mount_z),
|
||||
(gantry.g.left_bearing_mount, "gantry_floating_bearing_mount", gantry.x_mount_z),
|
||||
(gantry.g.stepper_mount, "gantry_stepper_mount", gantry.stepper_mount_z),
|
||||
(gantry.c.plate, "carriage", gantry.plate_z2),
|
||||
(gantry.ca.plate, "carrier", gantry.carrier_plate_z),
|
||||
(gantry.ca.left_spacer, "carrier_left_spacer", gantry.z_spacer_z),
|
||||
(gantry.ca.right_spacer, "carrier_right_spacer", gantry.z_spacer_z),
|
||||
(gantry.ca.stepper_mount, "carrier_stepper_mount", gantry.stepper_mount_z),
|
||||
]
|
||||
|
||||
for part, path, thickness in parts:
|
||||
exporters.exportDXF(
|
||||
part.workplaneFromTagged("base").section(),
|
||||
"dxfs/{}-{:.2f}mm.dxf".format(path, thickness),
|
||||
)
|
53
gantry.py
53
gantry.py
|
@ -1,5 +1,7 @@
|
|||
import cadquery as cq
|
||||
from ocp_vscode import *
|
||||
|
||||
if __name__ == "__main__":
|
||||
from ocp_vscode import *
|
||||
from utils import *
|
||||
|
||||
import localselectors
|
||||
|
@ -13,6 +15,9 @@ plate_z = 2.54
|
|||
plate_z2 = 10
|
||||
|
||||
x_mount_z = 5
|
||||
stepper_mount_z = 5
|
||||
|
||||
carrier_plate_z = 10
|
||||
|
||||
ballscrew_x_offset = 4
|
||||
|
||||
|
@ -77,22 +82,38 @@ class Gantry:
|
|||
column_spacing + tube_w,
|
||||
)
|
||||
self.upper_front_plate = (
|
||||
cq.Workplane()
|
||||
.copyWorkplane(
|
||||
w.transformed(offset=(0, tube_h / 2, upper_center), rotate=(-90, 0, 0))
|
||||
)
|
||||
.tag("base")
|
||||
.rect(column_spacing + tube_w, tube_w)
|
||||
.extrude(plate_z)
|
||||
)
|
||||
self.lower_front_plate = (
|
||||
cq.Workplane()
|
||||
.copyWorkplane(
|
||||
w.transformed(offset=(0, tube_h / 2, lower_center), rotate=(-90, 0, 0))
|
||||
)
|
||||
.tag("base")
|
||||
.rect(column_spacing + tube_w, tube_w)
|
||||
.extrude(plate_z)
|
||||
)
|
||||
self.upper_back_plate = (
|
||||
cq.Workplane()
|
||||
.copyWorkplane(
|
||||
w.transformed(offset=(0, -tube_h / 2, upper_center), rotate=(90, 0, 0))
|
||||
)
|
||||
.tag("base")
|
||||
.rect(column_spacing + tube_w, tube_w)
|
||||
.extrude(plate_z)
|
||||
)
|
||||
self.lower_back_plate = (
|
||||
cq.Workplane()
|
||||
.copyWorkplane(
|
||||
w.transformed(offset=(0, -tube_h / 2, lower_center), rotate=(90, 0, 0))
|
||||
)
|
||||
.tag("base")
|
||||
.rect(column_spacing + tube_w, tube_w)
|
||||
.extrude(plate_z)
|
||||
)
|
||||
|
@ -143,7 +164,9 @@ class Gantry:
|
|||
)
|
||||
|
||||
self.right_bearing_mount = (
|
||||
w.copyWorkplane(right_bearing_base)
|
||||
cq.Workplane()
|
||||
.copyWorkplane(right_bearing_base)
|
||||
.tag("base")
|
||||
.rect(tube_h, x_rail_spacing - tube_w)
|
||||
.extrude(x_mount_z)
|
||||
.center(-ballscrew_x_offset, 0)
|
||||
|
@ -174,6 +197,7 @@ class Gantry:
|
|||
)
|
||||
self.left_bearing_mount = (
|
||||
w.copyWorkplane(self.floating_mount_w)
|
||||
.tag("base")
|
||||
.transformed(offset=(0, ballscrew_x_offset, 0), rotate=(0, 0, 90))
|
||||
.rect(tube_h, x_rail_spacing - tube_w)
|
||||
.extrude(x_mount_z)
|
||||
|
@ -217,13 +241,14 @@ class Gantry:
|
|||
.copyWorkplane(
|
||||
stepper_mount_w.transformed(offset=(0, 0, 0), rotate=(0, 0, 45))
|
||||
)
|
||||
.tag("base")
|
||||
.rect(58.4, 58.4)
|
||||
.extrude(5)
|
||||
.extrude(stepper_mount_z)
|
||||
.copyWorkplane(
|
||||
stepper_mount_w.transformed(offset=(0, -ballscrew_x_offset, 0))
|
||||
)
|
||||
.rect(88, tube_h)
|
||||
.extrude(5)
|
||||
.extrude(stepper_mount_z)
|
||||
.copyWorkplane(
|
||||
stepper_mount_w.transformed(offset=(0, 0, 0), rotate=(180, 0, 45))
|
||||
)
|
||||
|
@ -307,6 +332,7 @@ class Carriage:
|
|||
cq.Workplane()
|
||||
.copyWorkplane(back)
|
||||
.center(-x - HGR20.L - x_carriage_spacing / 2, -x_rail_spacing / 2)
|
||||
.tag("base")
|
||||
# .rect(HGR20.L+x_carriage_spacing, HGR20.W+x_rail_spacing)
|
||||
.rect(carriage_w, carriage_h)
|
||||
.extrude(plate_z2)
|
||||
|
@ -466,6 +492,7 @@ class Carrier:
|
|||
cq.Workplane()
|
||||
.copyWorkplane(self.plane)
|
||||
.transformed(offset=(z_rail_spacing / 2, 0, 0))
|
||||
.tag("base")
|
||||
.rect(z_spacer_w, z_rail_len)
|
||||
.extrude(z_spacer_z)
|
||||
)
|
||||
|
@ -473,6 +500,7 @@ class Carrier:
|
|||
cq.Workplane()
|
||||
.copyWorkplane(self.plane)
|
||||
.transformed(offset=(-z_rail_spacing / 2, 0, 0))
|
||||
.tag("base")
|
||||
.rect(z_spacer_w, z_rail_len)
|
||||
.extrude(z_spacer_z)
|
||||
)
|
||||
|
@ -481,8 +509,9 @@ class Carrier:
|
|||
cq.Workplane()
|
||||
.copyWorkplane(self.plane)
|
||||
.transformed(offset=(0, 0, z_spacer_z))
|
||||
.tag("base")
|
||||
.rect(200, z_rail_len)
|
||||
.extrude(10)
|
||||
.extrude(carrier_plate_z)
|
||||
.copyWorkplane(self.plane)
|
||||
.center(0, z_rail_len / 2 - 40 / 2)
|
||||
.rect(68, 40)
|
||||
|
@ -554,9 +583,10 @@ class Carrier:
|
|||
offset=(0, z_rail_len / 2 + 10, 0), rotate=(-90, 0, 0)
|
||||
)
|
||||
)
|
||||
.tag("base")
|
||||
.tag("flange_center")
|
||||
.rect(100, 50)
|
||||
.extrude(5)
|
||||
.extrude(stepper_mount_z)
|
||||
.workplaneFromTagged("flange_center")
|
||||
.transformed(rotate=(180, 0, 0))
|
||||
.rect(90, 25, forConstruction=True)
|
||||
|
@ -569,7 +599,7 @@ class Carrier:
|
|||
)
|
||||
.tag("stepper_center")
|
||||
.rect(58.4, 58.4)
|
||||
.extrude(5)
|
||||
.extrude(stepper_mount_z)
|
||||
.workplaneFromTagged("stepper_center")
|
||||
.transformed(rotate=(180, 0, 0))
|
||||
.rect(47.41, 47.41, forConstruction=True)
|
||||
|
@ -742,7 +772,8 @@ full_assembly = (
|
|||
.add(m.assembly(), name="spindle mount")
|
||||
)
|
||||
|
||||
show_object(full_assembly)
|
||||
# show_object(ca.assembly())
|
||||
# show_object(c.assembly())
|
||||
# show_object(g.assembly())
|
||||
if __name__ == "__main__":
|
||||
show_object(full_assembly)
|
||||
# show_object(ca.assembly())
|
||||
# show_object(c.assembly())
|
||||
# show_object(g.assembly())
|
||||
|
|
23
utils.py
23
utils.py
|
@ -8,7 +8,7 @@ import localselectors
|
|||
|
||||
class SFU1204:
|
||||
def __init__(self, base, l):
|
||||
self.w = base.workplane()
|
||||
self.w = cq.Workplane().copyWorkplane(base.workplane())
|
||||
self.len = l
|
||||
|
||||
def ballscrew(self):
|
||||
|
@ -25,14 +25,16 @@ class SFU1204:
|
|||
(self.len, 8 / 2),
|
||||
(self.len, 0),
|
||||
]
|
||||
w = self.w.moveTo(0, 0)
|
||||
w = cq.Workplane().copyWorkplane(self.w).moveTo(0, 0)
|
||||
for v in profile[1:]:
|
||||
w = w.lineTo(v[1], v[0])
|
||||
w = w.close()
|
||||
return w.revolve()
|
||||
|
||||
def nut(self, x):
|
||||
w = self.w.transformed(offset=(0, x, 0), rotate=(90, 0, 0))
|
||||
w = cq.Workplane().copyWorkplane(
|
||||
self.w.transformed(offset=(0, x, 0), rotate=(90, 0, 0))
|
||||
)
|
||||
n = (
|
||||
w.sketch()
|
||||
.circle(40 / 2)
|
||||
|
@ -62,7 +64,11 @@ class SFU1204:
|
|||
return n
|
||||
|
||||
def nutHoles(self, solid, x):
|
||||
w = self.w.transformed(offset=(0, x, 0), rotate=(90, 0, 0))
|
||||
w = (
|
||||
cq.Workplane()
|
||||
.copyWorkplane(self.w)
|
||||
.transformed(offset=(0, x, 0), rotate=(90, 0, 0))
|
||||
)
|
||||
hole_r = 32 / 2
|
||||
hole_pts = [
|
||||
(
|
||||
|
@ -403,9 +409,12 @@ def inch(x):
|
|||
|
||||
|
||||
def tubing(l, x, y, w, workplane):
|
||||
return workplane.placeSketch(
|
||||
cq.Sketch().rect(x, y).rect(x - 2 * w, y - 2 * w, mode="s")
|
||||
).extrude(l)
|
||||
return (
|
||||
cq.Workplane()
|
||||
.copyWorkplane(workplane)
|
||||
.placeSketch(cq.Sketch().rect(x, y).rect(x - 2 * w, y - 2 * w, mode="s"))
|
||||
.extrude(l)
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Reference in New Issue