Import CAD projects and cad-router v1
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from build123d import Align, Box, BuildPart, Cylinder, Location, Locations, Mode
|
||||
|
||||
from benchmark_common import circular_edges, safe_chamfer
|
||||
|
||||
|
||||
TOTAL_LENGTH = 120.0
|
||||
LEFT_LENGTH = 30.0
|
||||
MIDDLE_LENGTH = 60.0
|
||||
RIGHT_LENGTH = 30.0
|
||||
SMALL_DIAMETER = 20.0
|
||||
MIDDLE_DIAMETER = 30.0
|
||||
END_CHAMFER = 1.0
|
||||
|
||||
KEYWAY_X_START = 40.0
|
||||
KEYWAY_X_END = 80.0
|
||||
KEYWAY_WIDTH = 6.0
|
||||
KEYWAY_DEPTH = 3.0
|
||||
|
||||
|
||||
def _add_shaft_section(x_start: float, x_end: float, diameter: float):
|
||||
with Locations(Location(((x_start + x_end) / 2.0, 0.0, 0.0))):
|
||||
Cylinder(
|
||||
radius=diameter / 2.0,
|
||||
height=x_end - x_start,
|
||||
rotation=(0.0, 90.0, 0.0),
|
||||
align=(Align.CENTER, Align.CENTER, Align.CENTER),
|
||||
mode=Mode.ADD,
|
||||
)
|
||||
|
||||
|
||||
def gen_step():
|
||||
"""Return the stepped shaft with keyway benchmark model in millimeters."""
|
||||
with BuildPart() as shaft:
|
||||
_add_shaft_section(0.0, LEFT_LENGTH, SMALL_DIAMETER)
|
||||
_add_shaft_section(LEFT_LENGTH, LEFT_LENGTH + MIDDLE_LENGTH, MIDDLE_DIAMETER)
|
||||
_add_shaft_section(LEFT_LENGTH + MIDDLE_LENGTH, TOTAL_LENGTH, SMALL_DIAMETER)
|
||||
|
||||
with Locations(Location(((KEYWAY_X_START + KEYWAY_X_END) / 2.0, 0.0, MIDDLE_DIAMETER / 2.0 - KEYWAY_DEPTH))):
|
||||
Box(
|
||||
KEYWAY_X_END - KEYWAY_X_START,
|
||||
KEYWAY_WIDTH,
|
||||
KEYWAY_DEPTH + 2.0,
|
||||
align=(Align.CENTER, Align.CENTER, Align.MIN),
|
||||
mode=Mode.SUBTRACT,
|
||||
)
|
||||
|
||||
part = shaft.part
|
||||
end_edges = []
|
||||
end_edges.extend(circular_edges(part, radius=SMALL_DIAMETER / 2.0, axis="x", coordinate=0.0))
|
||||
end_edges.extend(circular_edges(part, radius=SMALL_DIAMETER / 2.0, axis="x", coordinate=TOTAL_LENGTH))
|
||||
part = safe_chamfer(part, end_edges, length=END_CHAMFER)
|
||||
part.label = "benchmark_04_stepped_shaft_keyway"
|
||||
return part
|
||||
Reference in New Issue
Block a user