From 246338fc18fec52771b4650c460ee35f219da5d5 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 10:07:56 -0300 Subject: [PATCH 01/10] Start integrating the hinge --- monitor/hinge.py | 7 ++----- monitor/rear_mount.py | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/monitor/hinge.py b/monitor/hinge.py index aceb53a..0d184a4 100644 --- a/monitor/hinge.py +++ b/monitor/hinge.py @@ -11,9 +11,9 @@ screw_head_radius = 3.5 screw_radius = 1.5 hinge_s = 7.5 -hinge_t = 5 +hinge_t = ti_depth - 1 hinge_gap = screw_shaft - 2 * hinge_t - +# The side of the screw head hinge_profile_1 = ( cq.Sketch() .segment((0, 0), (0, hinge_s)) @@ -34,9 +34,6 @@ hinge_profile_2 = ( .assemble() ) -# TODO countersink -# TODO proper threaded insert depth sizing - hinge = ( cq.Workplane("bottom") .placeSketch(hinge_profile_1) diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index a171641..b2a4d42 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -10,6 +10,7 @@ screw_head_h = 2.5 screw_head_radius = 3.5 screw_radius = 1.5 +from hinge import hinge_profile_1, hinge_profile_2, hinge_t, hinge_gap, hinge_s reinforcement_height = 1 + 1 + ti_depth - shell_t @@ -29,16 +30,21 @@ back_reinforcement_outer = ( .fillet(2) ) +# FIXME: use counterbore holes function instead + screw_holes = cq.Sketch().rarray(width / 8, 0, 4, 1).circle(screw_radius, mode="a") screw_countersinks = ( cq.Sketch().rarray(width / 8, 0, 4, 1).circle(screw_head_radius, mode="a") ) +rear_mount_thickness = reinforcement_height + screw_head_h + shell_t + + rear_mount = ( # Basic filleted box shape cq.Workplane("bottom") .placeSketch(back_reinforcement_outer) - .extrude(reinforcement_height + screw_head_h + shell_t) + .extrude(rear_mount_thickness) .faces(">Y") .workplane(centerOption="CenterOfBoundBox") .placeSketch(back_reinforcement_cutout) @@ -51,6 +57,13 @@ rear_mount = ( .workplane(centerOption="CenterOfBoundBox") .placeSketch(screw_countersinks) .cutBlind(-screw_head_h) + # Hinge integration + .faces(">X") + .workplane(centerOption="CenterOfBoundBox") + .transformed(rotate=cq.Vector(0, 0, 90)) + .center(-hinge_s / 2, rear_mount_thickness / 2) + .placeSketch(hinge_profile_1) + .extrude(-hinge_t) ) exporters.export(rear_mount, "rear_mount.stl") From 10bac1c4ed3b98182d06124224d0cdd8cf99f29e Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 10:13:27 -0300 Subject: [PATCH 02/10] Start integrating the hinge (buggy) --- monitor/rear_mount.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index b2a4d42..a5a6e4f 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -14,6 +14,9 @@ from hinge import hinge_profile_1, hinge_profile_2, hinge_t, hinge_gap, hinge_s reinforcement_height = 1 + 1 + ti_depth - shell_t +rear_mount_thickness = reinforcement_height + screw_head_h + shell_t +rear_mount_width = width / 2 + 2 * shell_t + back_reinforcement_cutout = ( cq.Sketch() .trapezoid(width / 2 + 1, 15 + 1, 90, mode="a") @@ -24,7 +27,7 @@ back_reinforcement_cutout = ( back_reinforcement_outer = ( cq.Sketch() - .trapezoid(width / 2 + 2 * shell_t, 15 + 2 * shell_t, 90, mode="a") + .trapezoid(rear_mount_width, 15 + 2 * shell_t, 90, mode="a") .reset() .vertices() .fillet(2) @@ -37,8 +40,6 @@ screw_countersinks = ( cq.Sketch().rarray(width / 8, 0, 4, 1).circle(screw_head_radius, mode="a") ) -rear_mount_thickness = reinforcement_height + screw_head_h + shell_t - rear_mount = ( # Basic filleted box shape @@ -59,11 +60,13 @@ rear_mount = ( .cutBlind(-screw_head_h) # Hinge integration .faces(">X") - .workplane(centerOption="CenterOfBoundBox") + .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-22)/2) .transformed(rotate=cq.Vector(0, 0, 90)) .center(-hinge_s / 2, rear_mount_thickness / 2) .placeSketch(hinge_profile_1) .extrude(-hinge_t) -) + .workplane(offset=-hinge_gap) + .placeSketch(hinge_profile_2) + .extrude(hinge_t)) exporters.export(rear_mount, "rear_mount.stl") From e19a2f7aff9b2806cfc313f9e42fefdc4086a1df Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 10:16:47 -0300 Subject: [PATCH 03/10] Start integrating the hinge (still buggy) --- monitor/rear_mount.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index a5a6e4f..f84088a 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -60,7 +60,7 @@ rear_mount = ( .cutBlind(-screw_head_h) # Hinge integration .faces(">X") - .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-22)/2) + .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-20)/2) .transformed(rotate=cq.Vector(0, 0, 90)) .center(-hinge_s / 2, rear_mount_thickness / 2) .placeSketch(hinge_profile_1) From 1aef3f05cb7ab49f9ed32d4fd9875c14d82bb630 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 10:24:08 -0300 Subject: [PATCH 04/10] Hinge in place --- monitor/rear_mount.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index f84088a..81850da 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -62,11 +62,12 @@ rear_mount = ( .faces(">X") .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-20)/2) .transformed(rotate=cq.Vector(0, 0, 90)) - .center(-hinge_s / 2, rear_mount_thickness / 2) + .center(-hinge_s / 2, rear_mount_thickness / 2).tag("hingeplane") .placeSketch(hinge_profile_1) .extrude(-hinge_t) - .workplane(offset=-hinge_gap) + .workplaneFromTagged("hingeplane") + .workplane(offset=-hinge_t - hinge_gap) .placeSketch(hinge_profile_2) - .extrude(hinge_t)) + .extrude(-hinge_t)) -exporters.export(rear_mount, "rear_mount.stl") +exporters.export(rear_mount, "rear_mount.stl") \ No newline at end of file From a5f39d740e03fd0ad543f374a7694aa7dbe07f2b Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 11:26:55 -0300 Subject: [PATCH 05/10] Make hinge not-square --- monitor/hinge.py | 19 ++++++++++--------- monitor/rear_mount.py | 6 +++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/monitor/hinge.py b/monitor/hinge.py index 0d184a4..1c7487b 100644 --- a/monitor/hinge.py +++ b/monitor/hinge.py @@ -10,27 +10,28 @@ screw_head_h = 2.5 screw_head_radius = 3.5 screw_radius = 1.5 -hinge_s = 7.5 +hinge_w = 7.5 +hinge_h = 15 hinge_t = ti_depth - 1 hinge_gap = screw_shaft - 2 * hinge_t # The side of the screw head hinge_profile_1 = ( cq.Sketch() - .segment((0, 0), (0, hinge_s)) - .arc((0, hinge_s), (hinge_s / 2, 1.5 * hinge_s), (hinge_s, hinge_s)) - .segment((hinge_s, 0)) + .segment((0, 0), (0, hinge_h)) + .arc((0, hinge_h), (hinge_w / 2, hinge_h + hinge_w/2), (hinge_w, hinge_h)) + .segment((hinge_w, 0)) .close() - .arc((hinge_s / 2, hinge_s), screw_radius, 0, 360) + .arc((hinge_w / 2, hinge_h), screw_radius, 0, 360) .assemble() ) hinge_profile_2 = ( cq.Sketch() - .segment((0, 0), (0, hinge_s)) - .arc((0, hinge_s), (hinge_s / 2, 1.5 * hinge_s), (hinge_s, hinge_s)) - .segment((hinge_s, 0)) + .segment((0, 0), (0, hinge_h)) + .arc((0, hinge_h), (hinge_w / 2, hinge_h + hinge_w/2), (hinge_w, hinge_h)) + .segment((hinge_w, 0)) .close() - .arc((hinge_s / 2, hinge_s), ti_radius, 0, 360) + .arc((hinge_w / 2, hinge_h), ti_radius, 0, 360) .assemble() ) diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index 81850da..4e3e732 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -10,7 +10,7 @@ screw_head_h = 2.5 screw_head_radius = 3.5 screw_radius = 1.5 -from hinge import hinge_profile_1, hinge_profile_2, hinge_t, hinge_gap, hinge_s +from hinge import hinge_profile_1, hinge_profile_2, hinge_t, hinge_gap, hinge_w reinforcement_height = 1 + 1 + ti_depth - shell_t @@ -62,11 +62,11 @@ rear_mount = ( .faces(">X") .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-20)/2) .transformed(rotate=cq.Vector(0, 0, 90)) - .center(-hinge_s / 2, rear_mount_thickness / 2).tag("hingeplane") + .center(-hinge_w / 2, rear_mount_thickness / 2).tag("hingeplane") .placeSketch(hinge_profile_1) .extrude(-hinge_t) .workplaneFromTagged("hingeplane") - .workplane(offset=-hinge_t - hinge_gap) + .workplane(offset=-hinge_t - hinge_w) .placeSketch(hinge_profile_2) .extrude(-hinge_t)) From fd31e966230c1e6776425fdb2c43ecfd50bb4a21 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 11:57:47 -0300 Subject: [PATCH 06/10] 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") From 84cb4ee0ed622363d69e566c1c3cfe776c63be28 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 12:57:54 -0300 Subject: [PATCH 07/10] Initial upper arm (buggy) --- monitor/rear_mount.py | 4 +-- monitor/upper_arm.py | 60 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 monitor/upper_arm.py diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index 4e3e732..8017de2 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -62,11 +62,11 @@ rear_mount = ( .faces(">X") .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-20)/2) .transformed(rotate=cq.Vector(0, 0, 90)) - .center(-hinge_w / 2, rear_mount_thickness / 2).tag("hingeplane") + .center(-hinge_s / 2, rear_mount_thickness / 2).tag("hingeplane") .placeSketch(hinge_profile_1) .extrude(-hinge_t) .workplaneFromTagged("hingeplane") - .workplane(offset=-hinge_t - hinge_w) + .workplane(offset=-hinge_t - hinge_) .placeSketch(hinge_profile_2) .extrude(-hinge_t)) diff --git a/monitor/upper_arm.py b/monitor/upper_arm.py new file mode 100644 index 0000000..e3208f3 --- /dev/null +++ b/monitor/upper_arm.py @@ -0,0 +1,60 @@ +# 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, hinge_profile_1, hinge_profile_2, hinge_t + +# 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 + # Hinge integration + .transformed(rotate=cq.Vector(0, 0, 90)) + .center(-hinge_w / 2, 0).tag("hingeplane") + .placeSketch(hinge_profile_1) + .extrude(-hinge_t) + .workplaneFromTagged("hingeplane") + .workplane(offset=-hinge_t - hinge_w) + .placeSketch(hinge_profile_2) + .extrude(-hinge_t) +) + +exporters.export(lower_arm, "upper_arm.stl") From e61be357ee15f2fdf791676cddafc6251a25c92e Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 14:05:21 -0300 Subject: [PATCH 08/10] Good upper arm --- monitor/upper_arm.py | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/monitor/upper_arm.py b/monitor/upper_arm.py index e3208f3..89b8152 100644 --- a/monitor/upper_arm.py +++ b/monitor/upper_arm.py @@ -1,4 +1,4 @@ -# This is the arm from the tripod to the "elbow" +# This is the arm from the monitor to the "elbow" import cadquery2 as cq from cadquery2 import exporters @@ -9,52 +9,46 @@ from hinge import hinge_gap, hinge_w, hinge_profile_1, hinge_profile_2, hinge_t 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") +# Both hinges are the same shape, just one is outer and the other inner +elbow_hinge_shape = ( + cq.Sketch().circle(outer_monitor_hinge).circle(inner_monitor_hinge, mode="s") ) -arm_width = min(tripod_hinge_width, hinge_gap) arm_length = 150 +arm_width = hinge_gap lower_arm = ( cq.Workplane("XY") - .rect(arm_width, arm_width) + .rect(hinge_w, hinge_gap) .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 - ) + .workplane(centerOption="CenterOfBoundBox") .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 - # Hinge integration - .transformed(rotate=cq.Vector(0, 0, 90)) - .center(-hinge_w / 2, 0).tag("hingeplane") + .center(0, -(arm_length + outer_monitor_hinge)) + # Add hinge that connects to the elbow + .transformed(rotate=cq.Vector(0, 0, 180)) + .workplane(offset=(20 - arm_width) / 2) + .center(-hinge_w / 2, 0) + .tag("hingeplane") .placeSketch(hinge_profile_1) .extrude(-hinge_t) .workplaneFromTagged("hingeplane") - .workplane(offset=-hinge_t - hinge_w) + .workplane(offset=-hinge_t - hinge_gap) .placeSketch(hinge_profile_2) .extrude(-hinge_t) + .workplaneFromTagged("hingeplane") + .center(+hinge_w / 2, 0) + .rect(hinge_w, hinge_w + 6) + .extrude(-(2 * hinge_t + hinge_gap)) ) exporters.export(lower_arm, "upper_arm.stl") From 027276c4eb205938b839be7e86eaa57878bc0f83 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 14:11:30 -0300 Subject: [PATCH 09/10] Fix rear mount --- monitor/hinge.py | 2 +- monitor/rear_mount.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/monitor/hinge.py b/monitor/hinge.py index 1c7487b..e5796d2 100644 --- a/monitor/hinge.py +++ b/monitor/hinge.py @@ -44,4 +44,4 @@ hinge = ( .extrude(hinge_t) ) -exporters.export(hinge, "hinge.stl") +#exporters.export(hinge, "hinge.stl") diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index 8017de2..3a76785 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -62,11 +62,11 @@ rear_mount = ( .faces(">X") .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-20)/2) .transformed(rotate=cq.Vector(0, 0, 90)) - .center(-hinge_s / 2, rear_mount_thickness / 2).tag("hingeplane") + .center(-hinge_w / 2, rear_mount_thickness / 2).tag("hingeplane") .placeSketch(hinge_profile_1) .extrude(-hinge_t) .workplaneFromTagged("hingeplane") - .workplane(offset=-hinge_t - hinge_) + .workplane(offset=-hinge_t - hinge_gap) .placeSketch(hinge_profile_2) .extrude(-hinge_t)) From 5dd7b5578fa787b01405995657d4f18267162dc4 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 23 Jul 2022 16:12:56 -0300 Subject: [PATCH 10/10] tweaks --- monitor/case.py | 4 +--- monitor/hinge.py | 6 +++--- monitor/lower_arm.py | 8 ++------ monitor/rear_mount.py | 10 ++++++---- monitor/upper_arm.py | 4 ++-- 5 files changed, 14 insertions(+), 18 deletions(-) diff --git a/monitor/case.py b/monitor/case.py index 905ad19..609cb76 100644 --- a/monitor/case.py +++ b/monitor/case.py @@ -11,9 +11,7 @@ board_cutout = ( cq.Sketch().trapezoid(55, 50, 90, mode="a").reset().vertices("Y") # Add hinge that connects to the monitor - .workplane( - centerOption="CenterOfBoundBox", offset=(hinge_gap - arm_width) / 2 - ) + .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 - ) + .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) diff --git a/monitor/rear_mount.py b/monitor/rear_mount.py index 3a76785..76ce802 100644 --- a/monitor/rear_mount.py +++ b/monitor/rear_mount.py @@ -60,14 +60,16 @@ rear_mount = ( .cutBlind(-screw_head_h) # Hinge integration .faces(">X") - .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width-20)/2) + .workplane(centerOption="CenterOfBoundBox", offset=-(rear_mount_width - 20) / 2) .transformed(rotate=cq.Vector(0, 0, 90)) - .center(-hinge_w / 2, rear_mount_thickness / 2).tag("hingeplane") + .center(-hinge_w / 2, rear_mount_thickness / 2) + .tag("hingeplane") .placeSketch(hinge_profile_1) .extrude(-hinge_t) .workplaneFromTagged("hingeplane") .workplane(offset=-hinge_t - hinge_gap) .placeSketch(hinge_profile_2) - .extrude(-hinge_t)) + .extrude(-hinge_t) +) -exporters.export(rear_mount, "rear_mount.stl") \ No newline at end of file +exporters.export(rear_mount, "rear_mount.stl") diff --git a/monitor/upper_arm.py b/monitor/upper_arm.py index 89b8152..012cfda 100644 --- a/monitor/upper_arm.py +++ b/monitor/upper_arm.py @@ -21,7 +21,7 @@ elbow_hinge_shape = ( arm_length = 150 arm_width = hinge_gap -lower_arm = ( +upper_arm = ( cq.Workplane("XY") .rect(hinge_w, hinge_gap) .extrude(arm_length) @@ -51,4 +51,4 @@ lower_arm = ( .extrude(-(2 * hinge_t + hinge_gap)) ) -exporters.export(lower_arm, "upper_arm.stl") +exporters.export(upper_arm, "upper_arm.stl")