36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
# /// script
|
|
# requires-python = ">=3.14"
|
|
# dependencies = ["ocp_vscode", "build123d"]
|
|
# ///
|
|
|
|
from build123d import *
|
|
from ocp_vscode import *
|
|
|
|
### Dimensions ###
|
|
diameter_at_hole = 5.5 * MM
|
|
ptfe_length = 5 * MM
|
|
filament_length = 5 * MM
|
|
diameter_at_filament = 3 * MM
|
|
washer_thickness = 2 * MM
|
|
###################
|
|
|
|
with BuildPart() as stopper:
|
|
with BuildSketch() as sketch:
|
|
Circle(diameter_at_hole / 2.0 + 2 * MM)
|
|
Circle(diameter_at_hole / 2.0, mode=Mode.SUBTRACT)
|
|
extrude(amount=washer_thickness)
|
|
with BuildSketch(Plane.XY.offset(washer_thickness)) as sketch:
|
|
Circle(diameter_at_hole / 2.0 + 0.5 * MM)
|
|
Circle(diameter_at_hole / 2.0, mode=Mode.SUBTRACT)
|
|
extrude(amount=ptfe_length)
|
|
offset = ptfe_length + washer_thickness
|
|
with BuildSketch(Plane.XY.offset(offset)) as sketch:
|
|
Circle(diameter_at_hole / 2.0 + 0.5 * MM)
|
|
Circle(diameter_at_hole / 2.0, mode=Mode.SUBTRACT)
|
|
offset += filament_length
|
|
with BuildSketch(Plane.XY.offset(offset)) as sketch:
|
|
Circle(diameter_at_filament / 2.0 + 0.5 * MM)
|
|
Circle(diameter_at_filament / 2.0, mode=Mode.SUBTRACT)
|
|
loft()
|
|
show(stopper)
|
|
export_stl(stopper.part, "stopper.stl")
|