From fd31e966230c1e6776425fdb2c43ecfd50bb4a21 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 11:57:47 -0300 Subject: [PATCH] Lower arm model --- monitor/lower_arm.py | 53 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 monitor/lower_arm.py diff --git a/monitor/lower_arm.py b/monitor/lower_arm.py new file mode 100644 index 0000000..cab6c99 --- /dev/null +++ b/monitor/lower_arm.py @@ -0,0 +1,53 @@ +# This is the arm from the tripod to the "elbow" + +import cadquery2 as cq +from cadquery2 import exporters + +from hinge import hinge_gap, hinge_w + +# monitor hinge dimensions +inner_monitor_hinge = 3.2 / 2 +outer_monitor_hinge = hinge_w / 2 + +# tripod hinge dimensions +inner_tripod_hinge = 7.5 / 2 +outer_tripod_hinge = 17.5 / 2 +tripod_hinge_width = 5.5 + + +monitor_hinge_shape = ( + cq.Sketch().circle(outer_monitor_hinge).circle(inner_monitor_hinge, mode="s") +) + +tripod_hinge_shape = ( + cq.Sketch().circle(outer_tripod_hinge).circle(inner_tripod_hinge, mode="s") +) + +arm_width = min(tripod_hinge_width, hinge_gap) +arm_length = 150 + +lower_arm = ( + cq.Workplane("XY") + .rect(arm_width, arm_width) + .extrude(arm_length) + .edges("|Z or Z") + .fillet(0.25) + .faces(">Y") + # Add hinge that connects to the monitor + .workplane( + centerOption="CenterOfBoundBox", offset=(hinge_gap - arm_width) / 2 + ) + .center(0, arm_length / 2 + (outer_monitor_hinge - inner_monitor_hinge)) + .placeSketch(monitor_hinge_shape) + .extrude(-hinge_gap) + .center(0, -(arm_length + outer_tripod_hinge)) + # Undo previous offset + new offset + .workplane( + offset=-(hinge_gap - arm_width - tripod_hinge_width + arm_width) / 2 + ) + # Add hinge that connects to the tripod + .placeSketch(tripod_hinge_shape) + .extrude(-tripod_hinge_width) +) + +exporters.export(lower_arm, "lower_arm.stl")