74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
|
|
# /// script
|
||
|
|
# requires-python = ">=3.14"
|
||
|
|
# dependencies = ["ocp_vscode", "build123d"]
|
||
|
|
# ///
|
||
|
|
|
||
|
|
from build123d import *
|
||
|
|
from ocp_vscode import *
|
||
|
|
|
||
|
|
### Dimensions ###
|
||
|
|
bolt_spacing = 17 * MM
|
||
|
|
bolt_hole_diameter = 4 * MM
|
||
|
|
z_rod_diameter = 10 * MM
|
||
|
|
buffer = 4 * MM
|
||
|
|
bolt_to_PTFE_offset = 2 * MM
|
||
|
|
base_length = 30 * MM
|
||
|
|
bolt_to_holder_offset = 20 * MM
|
||
|
|
wall_thickness = 2 * MM
|
||
|
|
PTFE_radius = 2.5 * MM
|
||
|
|
holder_length = 14 * MM
|
||
|
|
|
||
|
|
###################
|
||
|
|
|
||
|
|
with BuildPart() as guide:
|
||
|
|
with BuildSketch() as sketch:
|
||
|
|
Rectangle(
|
||
|
|
2 * buffer + base_length,
|
||
|
|
2 * buffer + bolt_spacing + bolt_hole_diameter,
|
||
|
|
align=(Align.MIN, Align.MIN),
|
||
|
|
)
|
||
|
|
with Locations(
|
||
|
|
(buffer + bolt_hole_diameter / 2.0, buffer + bolt_hole_diameter / 2.0),
|
||
|
|
(
|
||
|
|
buffer + bolt_hole_diameter / 2.0,
|
||
|
|
buffer + bolt_hole_diameter / 2.0 + bolt_spacing,
|
||
|
|
),
|
||
|
|
):
|
||
|
|
Circle(radius=bolt_hole_diameter / 2.0, mode=Mode.SUBTRACT)
|
||
|
|
|
||
|
|
with Locations(
|
||
|
|
(
|
||
|
|
buffer + bolt_hole_diameter / 2.0,
|
||
|
|
buffer + bolt_spacing / 2.0 + bolt_hole_diameter / 2.0,
|
||
|
|
),
|
||
|
|
):
|
||
|
|
Circle(radius=z_rod_diameter / 2.0, mode=Mode.SUBTRACT)
|
||
|
|
Rectangle(
|
||
|
|
z_rod_diameter / 2.0 + buffer,
|
||
|
|
z_rod_diameter,
|
||
|
|
mode=Mode.SUBTRACT,
|
||
|
|
align=(Align.MAX, Align.CENTER),
|
||
|
|
)
|
||
|
|
extrude(amount=wall_thickness)
|
||
|
|
|
||
|
|
with BuildSketch(Plane.YZ.offset(buffer + bolt_to_holder_offset)) as sketch:
|
||
|
|
with Locations(
|
||
|
|
(
|
||
|
|
buffer + bolt_hole_diameter / 2.0 + bolt_to_PTFE_offset,
|
||
|
|
PTFE_radius + wall_thickness,
|
||
|
|
),
|
||
|
|
):
|
||
|
|
Circle(
|
||
|
|
radius=PTFE_radius + wall_thickness, align=(Align.CENTER, Align.CENTER)
|
||
|
|
)
|
||
|
|
Circle(
|
||
|
|
radius=PTFE_radius,
|
||
|
|
align=(Align.CENTER, Align.CENTER),
|
||
|
|
mode=Mode.SUBTRACT,
|
||
|
|
)
|
||
|
|
|
||
|
|
extrude(amount=holder_length)
|
||
|
|
|
||
|
|
show(guide)
|
||
|
|
export_stl(guide.part, "guide.stl")
|