115 lines
4.6 KiB
Python
115 lines
4.6 KiB
Python
"""Auto-converted from x-carriage-back.scad — cadbuildr.foundation port."""
|
|
from cadbuildr.foundation import (
|
|
Part, Sketch, Point,
|
|
Square, Rectangle, Circle, RegularPolygon, RectangleRounded,
|
|
Extrusion, Lathe, Hole,
|
|
Cylinder, Box, Sphere, Cone,
|
|
show,
|
|
)
|
|
|
|
class XCarriageBack(Part):
|
|
def __init__(self):
|
|
super().__init__()
|
|
sketch = self._sketch = Sketch(self.xy())
|
|
|
|
# === x_carriage_back() base ===
|
|
self._add_box(-16 + 33/2, -40.0 + 73/2, 15.1 + 8/2, 33, 73, 8)
|
|
self._add_box(-25.5 + 52/2, 4 + 30.5/2, 15.1 + 8/2, 52, 30.5, 8)
|
|
|
|
# === cuts ===
|
|
# lower bearing cut
|
|
self._add_box(-17 + 35/2, -22 + 4/2, 7.5 + 10/2, 35, 4, 10, cut=True)
|
|
|
|
# cables opening
|
|
self._add_box(-4.5 + 10/2, -18 + 4/2, 15 + 10/2, 10, 4, 10, cut=True)
|
|
self._add_cyl(0.5, -18, 10, 5, 32, cut=True)
|
|
self._add_cyl(0.5, -14, 10, 5, 32, cut=True)
|
|
self._add_box(-20 + 50/2, -19.5 + 7.5/2, 9 + 10/2, 50, 7.5, 10, cut=True)
|
|
|
|
# bearing holes (along X — approx as horizontal box cuts)
|
|
self._add_box(-15 + 31/2, -25, 11.75, 31, 7.6*2, 7.6*2, cut=True)
|
|
self._add_box(-30 + 60/2, 20, 11.75, 60, 7.6*2, 7.6*2, cut=True)
|
|
|
|
# bearing retainer slots
|
|
self._add_box(-15 + 30/2, -25 - 2 + 4/2, 18 + 2/2, 30, 4, 2, cut=True)
|
|
self._add_box(-30 + 60/2, 20 - 2 + 4/2, 18 + 2/2, 60, 4, 2, cut=True)
|
|
|
|
# hold together screws
|
|
self._add_cyl(-5, -36, 10, 1.65, 50, cut=True)
|
|
self._add_cyl(1, 4, 10, 1.65, 50, cut=True)
|
|
self._add_cyl(13, 31, 10, 1.65, 50, cut=True)
|
|
self._add_cyl(-10.5, 31, 10, 1.65, 50, cut=True)
|
|
self._add_cyl(13, 31, 19, 3.1, 50, cut=True)
|
|
self._add_cyl(-10.5, 31, 19, 3.1, 50, cut=True)
|
|
|
|
# lower screw heads
|
|
self._add_cyl(-5, -36, 19, 3.1, 6, cut=True)
|
|
self._add_box(-8.1 + 6.2/2, -46 + 10/2, 18 + 10/2, 6.2, 10, 10, cut=True)
|
|
|
|
# center screw head
|
|
self._add_cyl(1, 4, 18, 3.1, 7, cut=True)
|
|
|
|
# heat cable cuts
|
|
self._add_cyl(10.15, -37, 4, 3, 40, cut=True)
|
|
self._add_box(10.15 - 3, -37 - 10, 4 + 40/2, 6, 10, 40, cut=True)
|
|
self._add_cyl(5.85, -37, 4, 3, 40, cut=True)
|
|
self._add_box(5.85 - 3, -37 - 10, 4 + 40/2, 6, 10, 40, cut=True)
|
|
|
|
# cable holder screw (along Y)
|
|
self._add_cyl(0.5, -27, 11, 1.6, 40, cut=True)
|
|
|
|
# x-carriage screw in belt holders
|
|
self._add_cyl(-11.5, -0.5, 10, 3, 40, cut=True)
|
|
|
|
# side panel cuts
|
|
self._add_box(28 + 22/2, -4 + 10/2, 10 + 15/2, 22, 10, 15, cut=True)
|
|
self._add_box(-4 + 22/2, -4 + 10/2, 10 + 15/2, 22, 10, 15, cut=True)
|
|
|
|
# corner edge cuts
|
|
self._add_box(-20.8 + 10/2, -47.1 + 10/2, 10 + 15/2, 10, 10, 15, cut=True)
|
|
self._add_box(21.8 + 10/2, -47.1 + 10/2, 10 + 15/2, 10, 10, 15, cut=True)
|
|
self._add_box(-24.4 + 14/2, 15.2 + 10/2, 10 + 15/2, 14, 10, 15, cut=True)
|
|
self._add_box(26.9 + 10/2, 15.2 + 14/2, 10 + 15/2, 10, 14, 15, cut=True)
|
|
self._add_box(-19.55 + 10/2, 28 + 10/2, 10 + 15/2, 10, 10, 15, cut=True)
|
|
self._add_box(22.05 + 10/2, 28 + 10/2, 10 + 15/2, 10, 10, 15, cut=True)
|
|
|
|
# top edge cuts
|
|
self._add_box(-22 + 44/2, 35 + 10/2, 21 + 10/2, 44, 10, 10, cut=True)
|
|
|
|
# upper side cuts
|
|
self._add_box(17 + 10/2, 25 + 10/2, 10 + 15/2, 10, 10, 15, cut=True)
|
|
self._add_box(-29.5 + 15/2, 25 + 15/2, 10 + 15/2, 15, 15, 15, cut=True)
|
|
|
|
# side edge cuts
|
|
self._add_box(27 + 10/2, -20 + 50/2, 16 + 10/2, 10, 50, 10, cut=True)
|
|
self._add_box(-34.2 + 10/2, -20 + 50/2, 21 + 10/2, 10, 50, 10, cut=True)
|
|
|
|
# ziptie cutouts (approx as cylinders)
|
|
self._add_cyl(-21.5 + 1, 20, 12, 8.5, 4, cut=True)
|
|
self._add_cyl(19 + 0.5, 20, 12, 8.5, 4, cut=True)
|
|
|
|
# upper corner cleanup
|
|
self._add_box(-20.8 + 50/2, -40.5 + 20/2, 16 + 10/2, 50, 20, 10, cut=True)
|
|
|
|
def _pt(self, x, y):
|
|
return Point(self._sketch, x, y)
|
|
|
|
def _add_box(self, x, y, z, w, d, h, cut=False):
|
|
self.add_operation(Box(self._pt(x, y), w, d, h, cut=cut))
|
|
|
|
def _add_cyl(self, x, y, z, radius, height, cut=False):
|
|
self.add_operation(Cylinder(self._pt(x, y), radius, height, cut=cut))
|
|
|
|
def _add_cone(self, x, y, z, r1, r2, height):
|
|
self.add_operation(Cone(self._pt(x, y), r1, r2, height))
|
|
|
|
def _add_sphere(self, x, y, z, radius, cut=False):
|
|
self.add_operation(Sphere(self._pt(x, y), radius, cut=cut))
|
|
|
|
def _add_extrusion(self, shape, end, start=0, cut=False):
|
|
self.add_operation(Extrusion(shape, end=end, start=start, cut=cut))
|
|
|
|
|
|
part = XCarriageBack()
|
|
show(part)
|