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),
|
||||||
|
)
|
61
gantry.py
61
gantry.py
|
@ -1,5 +1,7 @@
|
||||||
import cadquery as cq
|
import cadquery as cq
|
||||||
from ocp_vscode import *
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from ocp_vscode import *
|
||||||
from utils import *
|
from utils import *
|
||||||
|
|
||||||
import localselectors
|
import localselectors
|
||||||
|
@ -13,6 +15,9 @@ plate_z = 2.54
|
||||||
plate_z2 = 10
|
plate_z2 = 10
|
||||||
|
|
||||||
x_mount_z = 5
|
x_mount_z = 5
|
||||||
|
stepper_mount_z = 5
|
||||||
|
|
||||||
|
carrier_plate_z = 10
|
||||||
|
|
||||||
ballscrew_x_offset = 4
|
ballscrew_x_offset = 4
|
||||||
|
|
||||||
|
@ -77,22 +82,38 @@ class Gantry:
|
||||||
column_spacing + tube_w,
|
column_spacing + tube_w,
|
||||||
)
|
)
|
||||||
self.upper_front_plate = (
|
self.upper_front_plate = (
|
||||||
w.transformed(offset=(0, tube_h / 2, upper_center), rotate=(-90, 0, 0))
|
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)
|
.rect(column_spacing + tube_w, tube_w)
|
||||||
.extrude(plate_z)
|
.extrude(plate_z)
|
||||||
)
|
)
|
||||||
self.lower_front_plate = (
|
self.lower_front_plate = (
|
||||||
w.transformed(offset=(0, tube_h / 2, lower_center), rotate=(-90, 0, 0))
|
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)
|
.rect(column_spacing + tube_w, tube_w)
|
||||||
.extrude(plate_z)
|
.extrude(plate_z)
|
||||||
)
|
)
|
||||||
self.upper_back_plate = (
|
self.upper_back_plate = (
|
||||||
w.transformed(offset=(0, -tube_h / 2, upper_center), rotate=(90, 0, 0))
|
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)
|
.rect(column_spacing + tube_w, tube_w)
|
||||||
.extrude(plate_z)
|
.extrude(plate_z)
|
||||||
)
|
)
|
||||||
self.lower_back_plate = (
|
self.lower_back_plate = (
|
||||||
w.transformed(offset=(0, -tube_h / 2, lower_center), rotate=(90, 0, 0))
|
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)
|
.rect(column_spacing + tube_w, tube_w)
|
||||||
.extrude(plate_z)
|
.extrude(plate_z)
|
||||||
)
|
)
|
||||||
|
@ -143,7 +164,9 @@ class Gantry:
|
||||||
)
|
)
|
||||||
|
|
||||||
self.right_bearing_mount = (
|
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)
|
.rect(tube_h, x_rail_spacing - tube_w)
|
||||||
.extrude(x_mount_z)
|
.extrude(x_mount_z)
|
||||||
.center(-ballscrew_x_offset, 0)
|
.center(-ballscrew_x_offset, 0)
|
||||||
|
@ -174,6 +197,7 @@ class Gantry:
|
||||||
)
|
)
|
||||||
self.left_bearing_mount = (
|
self.left_bearing_mount = (
|
||||||
w.copyWorkplane(self.floating_mount_w)
|
w.copyWorkplane(self.floating_mount_w)
|
||||||
|
.tag("base")
|
||||||
.transformed(offset=(0, ballscrew_x_offset, 0), rotate=(0, 0, 90))
|
.transformed(offset=(0, ballscrew_x_offset, 0), rotate=(0, 0, 90))
|
||||||
.rect(tube_h, x_rail_spacing - tube_w)
|
.rect(tube_h, x_rail_spacing - tube_w)
|
||||||
.extrude(x_mount_z)
|
.extrude(x_mount_z)
|
||||||
|
@ -217,13 +241,14 @@ class Gantry:
|
||||||
.copyWorkplane(
|
.copyWorkplane(
|
||||||
stepper_mount_w.transformed(offset=(0, 0, 0), rotate=(0, 0, 45))
|
stepper_mount_w.transformed(offset=(0, 0, 0), rotate=(0, 0, 45))
|
||||||
)
|
)
|
||||||
|
.tag("base")
|
||||||
.rect(58.4, 58.4)
|
.rect(58.4, 58.4)
|
||||||
.extrude(5)
|
.extrude(stepper_mount_z)
|
||||||
.copyWorkplane(
|
.copyWorkplane(
|
||||||
stepper_mount_w.transformed(offset=(0, -ballscrew_x_offset, 0))
|
stepper_mount_w.transformed(offset=(0, -ballscrew_x_offset, 0))
|
||||||
)
|
)
|
||||||
.rect(88, tube_h)
|
.rect(88, tube_h)
|
||||||
.extrude(5)
|
.extrude(stepper_mount_z)
|
||||||
.copyWorkplane(
|
.copyWorkplane(
|
||||||
stepper_mount_w.transformed(offset=(0, 0, 0), rotate=(180, 0, 45))
|
stepper_mount_w.transformed(offset=(0, 0, 0), rotate=(180, 0, 45))
|
||||||
)
|
)
|
||||||
|
@ -307,6 +332,7 @@ class Carriage:
|
||||||
cq.Workplane()
|
cq.Workplane()
|
||||||
.copyWorkplane(back)
|
.copyWorkplane(back)
|
||||||
.center(-x - HGR20.L - x_carriage_spacing / 2, -x_rail_spacing / 2)
|
.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(HGR20.L+x_carriage_spacing, HGR20.W+x_rail_spacing)
|
||||||
.rect(carriage_w, carriage_h)
|
.rect(carriage_w, carriage_h)
|
||||||
.extrude(plate_z2)
|
.extrude(plate_z2)
|
||||||
|
@ -466,6 +492,7 @@ class Carrier:
|
||||||
cq.Workplane()
|
cq.Workplane()
|
||||||
.copyWorkplane(self.plane)
|
.copyWorkplane(self.plane)
|
||||||
.transformed(offset=(z_rail_spacing / 2, 0, 0))
|
.transformed(offset=(z_rail_spacing / 2, 0, 0))
|
||||||
|
.tag("base")
|
||||||
.rect(z_spacer_w, z_rail_len)
|
.rect(z_spacer_w, z_rail_len)
|
||||||
.extrude(z_spacer_z)
|
.extrude(z_spacer_z)
|
||||||
)
|
)
|
||||||
|
@ -473,6 +500,7 @@ class Carrier:
|
||||||
cq.Workplane()
|
cq.Workplane()
|
||||||
.copyWorkplane(self.plane)
|
.copyWorkplane(self.plane)
|
||||||
.transformed(offset=(-z_rail_spacing / 2, 0, 0))
|
.transformed(offset=(-z_rail_spacing / 2, 0, 0))
|
||||||
|
.tag("base")
|
||||||
.rect(z_spacer_w, z_rail_len)
|
.rect(z_spacer_w, z_rail_len)
|
||||||
.extrude(z_spacer_z)
|
.extrude(z_spacer_z)
|
||||||
)
|
)
|
||||||
|
@ -481,8 +509,9 @@ class Carrier:
|
||||||
cq.Workplane()
|
cq.Workplane()
|
||||||
.copyWorkplane(self.plane)
|
.copyWorkplane(self.plane)
|
||||||
.transformed(offset=(0, 0, z_spacer_z))
|
.transformed(offset=(0, 0, z_spacer_z))
|
||||||
|
.tag("base")
|
||||||
.rect(200, z_rail_len)
|
.rect(200, z_rail_len)
|
||||||
.extrude(10)
|
.extrude(carrier_plate_z)
|
||||||
.copyWorkplane(self.plane)
|
.copyWorkplane(self.plane)
|
||||||
.center(0, z_rail_len / 2 - 40 / 2)
|
.center(0, z_rail_len / 2 - 40 / 2)
|
||||||
.rect(68, 40)
|
.rect(68, 40)
|
||||||
|
@ -554,9 +583,10 @@ class Carrier:
|
||||||
offset=(0, z_rail_len / 2 + 10, 0), rotate=(-90, 0, 0)
|
offset=(0, z_rail_len / 2 + 10, 0), rotate=(-90, 0, 0)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.tag("base")
|
||||||
.tag("flange_center")
|
.tag("flange_center")
|
||||||
.rect(100, 50)
|
.rect(100, 50)
|
||||||
.extrude(5)
|
.extrude(stepper_mount_z)
|
||||||
.workplaneFromTagged("flange_center")
|
.workplaneFromTagged("flange_center")
|
||||||
.transformed(rotate=(180, 0, 0))
|
.transformed(rotate=(180, 0, 0))
|
||||||
.rect(90, 25, forConstruction=True)
|
.rect(90, 25, forConstruction=True)
|
||||||
|
@ -569,7 +599,7 @@ class Carrier:
|
||||||
)
|
)
|
||||||
.tag("stepper_center")
|
.tag("stepper_center")
|
||||||
.rect(58.4, 58.4)
|
.rect(58.4, 58.4)
|
||||||
.extrude(5)
|
.extrude(stepper_mount_z)
|
||||||
.workplaneFromTagged("stepper_center")
|
.workplaneFromTagged("stepper_center")
|
||||||
.transformed(rotate=(180, 0, 0))
|
.transformed(rotate=(180, 0, 0))
|
||||||
.rect(47.41, 47.41, forConstruction=True)
|
.rect(47.41, 47.41, forConstruction=True)
|
||||||
|
@ -742,7 +772,8 @@ full_assembly = (
|
||||||
.add(m.assembly(), name="spindle mount")
|
.add(m.assembly(), name="spindle mount")
|
||||||
)
|
)
|
||||||
|
|
||||||
show_object(full_assembly)
|
if __name__ == "__main__":
|
||||||
# show_object(ca.assembly())
|
show_object(full_assembly)
|
||||||
# show_object(c.assembly())
|
# show_object(ca.assembly())
|
||||||
# show_object(g.assembly())
|
# show_object(c.assembly())
|
||||||
|
# show_object(g.assembly())
|
||||||
|
|
23
utils.py
23
utils.py
|
@ -8,7 +8,7 @@ import localselectors
|
||||||
|
|
||||||
class SFU1204:
|
class SFU1204:
|
||||||
def __init__(self, base, l):
|
def __init__(self, base, l):
|
||||||
self.w = base.workplane()
|
self.w = cq.Workplane().copyWorkplane(base.workplane())
|
||||||
self.len = l
|
self.len = l
|
||||||
|
|
||||||
def ballscrew(self):
|
def ballscrew(self):
|
||||||
|
@ -25,14 +25,16 @@ class SFU1204:
|
||||||
(self.len, 8 / 2),
|
(self.len, 8 / 2),
|
||||||
(self.len, 0),
|
(self.len, 0),
|
||||||
]
|
]
|
||||||
w = self.w.moveTo(0, 0)
|
w = cq.Workplane().copyWorkplane(self.w).moveTo(0, 0)
|
||||||
for v in profile[1:]:
|
for v in profile[1:]:
|
||||||
w = w.lineTo(v[1], v[0])
|
w = w.lineTo(v[1], v[0])
|
||||||
w = w.close()
|
w = w.close()
|
||||||
return w.revolve()
|
return w.revolve()
|
||||||
|
|
||||||
def nut(self, x):
|
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 = (
|
n = (
|
||||||
w.sketch()
|
w.sketch()
|
||||||
.circle(40 / 2)
|
.circle(40 / 2)
|
||||||
|
@ -62,7 +64,11 @@ class SFU1204:
|
||||||
return n
|
return n
|
||||||
|
|
||||||
def nutHoles(self, solid, x):
|
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_r = 32 / 2
|
||||||
hole_pts = [
|
hole_pts = [
|
||||||
(
|
(
|
||||||
|
@ -403,9 +409,12 @@ def inch(x):
|
||||||
|
|
||||||
|
|
||||||
def tubing(l, x, y, w, workplane):
|
def tubing(l, x, y, w, workplane):
|
||||||
return workplane.placeSketch(
|
return (
|
||||||
cq.Sketch().rect(x, y).rect(x - 2 * w, y - 2 * w, mode="s")
|
cq.Workplane()
|
||||||
).extrude(l)
|
.copyWorkplane(workplane)
|
||||||
|
.placeSketch(cq.Sketch().rect(x, y).rect(x - 2 * w, y - 2 * w, mode="s"))
|
||||||
|
.extrude(l)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in New Issue