2022-07-23 14:57:47 +00:00
|
|
|
# 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
|
2022-08-05 13:08:17 +00:00
|
|
|
inner_tripod_hinge = 7 / 2
|
2022-07-23 14:57:47 +00:00
|
|
|
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)
|
2022-08-05 13:08:17 +00:00
|
|
|
arm_length = 130
|
2022-07-23 14:57:47 +00:00
|
|
|
|
|
|
|
lower_arm = (
|
|
|
|
cq.Workplane("XY")
|
|
|
|
.rect(arm_width, arm_width)
|
|
|
|
.extrude(arm_length)
|
|
|
|
.edges("|Z or <Z or >Z")
|
|
|
|
.fillet(0.25)
|
|
|
|
.faces(">Y")
|
|
|
|
# Add hinge that connects to the monitor
|
2022-07-23 19:12:56 +00:00
|
|
|
.workplane(centerOption="CenterOfBoundBox", offset=(hinge_gap - arm_width) / 2)
|
2022-07-23 14:57:47 +00:00
|
|
|
.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
|
2022-07-23 19:12:56 +00:00
|
|
|
.workplane(offset=-(hinge_gap - arm_width - tripod_hinge_width + arm_width) / 2)
|
2022-07-23 14:57:47 +00:00
|
|
|
# Add hinge that connects to the tripod
|
|
|
|
.placeSketch(tripod_hinge_shape)
|
|
|
|
.extrude(-tripod_hinge_width)
|
|
|
|
)
|
|
|
|
|
2022-08-05 13:08:17 +00:00
|
|
|
exporters.export(lower_arm, "lower_arm.svg")
|