"""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)