cad_models/space_pi_se_PTFE_guide.py

74 lines
2.1 KiB
Python
Raw Normal View History

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