From 1decc44cd39f0815cf4caa335b501f83c47cdf4d Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 15:49:04 +0100 Subject: [PATCH 01/16] digispark-with-cable: midbot_registrations Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 9097a13..a9a3a11 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -91,6 +91,7 @@ cover_registration_c_dy = -cover_strap_c_d_y - strap_w/2 - side_wall_th - cover_registration_sz_y/2; midbot_registration_sz_y = cover_registration_sz_y; +midbot_registration_sz_z = cover_registration_sz_z; midbot_registration_y_min = total_y_min + side_wall_th*2; midbot_registration_y_max = midbot_registration_y_min + midbot_registration_sz_y; @@ -172,6 +173,12 @@ module MiddleMainWallsPlan() { [ +board_w/2 + side_wall_th, total_y_min ]); } +module RegistrationsMinkowski(){ + minkowski(){ + cube([ 1, fit_gap_y*2, fit_gap_z*2 ], center=true); + children(); + } +} module CoverRegistrations(){ linextr_y_xz(cover_registration_c_dy - strap_w/2, cover_registration_c_dy + strap_w/2) { @@ -186,6 +193,16 @@ module CoverRegistrations(){ } } } +module MidBotRegistrations(){ + linextr_y_xz(midbot_registration_y_min, + midbot_registration_y_max) { + BothSides(){ + rectfromto([ midbot_registration_bottom_x, middle_base_z + 0.1 ], + [ middle_side_wall_x, middle_base_z + - midbot_registration_sz_z ]); + } + } +} module Middle(){ ////toplevel difference(){ @@ -200,6 +217,7 @@ module Middle(){ ////toplevel linextr(cover_wall_bot_z, middle_top_z) rectfromto([ -(board_w/2 + 0.1), total_y_min ], [ -total_side_wall_x, main_y_min - fit_gap_y ]); + MidBotRegistrations(); } for (y_c = [strain_0_y_c, strain_1_y_c]) { @@ -259,10 +277,10 @@ module Bottom(){ ////toplevel } } } - minkowski(){ + RegistrationsMinkowski() CoverRegistrations(); - cube([ 1, fit_gap_y*2, fit_gap_z*2 ], center=true); - } + RegistrationsMinkowski() + MidBotRegistrations(); BottomStrapCutouts(-cover_strap_c_d_y); } } -- 2.30.2 From ebf4156915e89370e20f9e6d5c9ab21a8da22aab Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 15:52:17 +0100 Subject: [PATCH 02/16] digispark-with-cable: fix gap Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index a9a3a11..3b012c7 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -238,7 +238,8 @@ module MiddlePrint(){ ////toplevel } module MiddleElevationForCutout(){ - rectfromto([ -(middle_side_wall_x + side_x_gap), middle_base_z ], + rectfromto([ -(middle_side_wall_x + side_x_gap), + middle_base_z - fit_gap_z ], [ +(middle_side_wall_x + side_x_gap), middle_top_z ]); } module BottomMainElevation(){ -- 2.30.2 From 74ea7fffa72112052e7cf46280b8ed96b5b42bf4 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 15:53:27 +0100 Subject: [PATCH 03/16] digispark-with-cable: tidying Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 3b012c7..47bca64 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -8,8 +8,6 @@ include -//tongue_w = 11.92 + 0.4; - usb_w = 12.01 + 0.19; usb_wall_w = 0.51; usb_tongue_d = 8.97 - 0.2; @@ -28,7 +26,7 @@ sw_to_edge = board_w/2 + 0.1; front_wall_th = 0.75; // egress_w = 8.0; -wall_y_min = -board_l - side_wall_th; // XXXX remove +wall_y_min = -board_l - side_wall_th; ceil_y_min = wall_y_min - 5;; small_walls = [ @@ -123,7 +121,6 @@ module BottomStrapCutouts(y_c){ // XXXX check strap width // XXXX check cable diameter // XXXX need rear strap -// XXXX need bottom-to-middle registration module CoverStrapCutouts(){ BothSides(){ translate([ -total_side_wall_x, -cover_strap_c_d_y, cover_top_z ]) -- 2.30.2 From 7c400d3698fb595f1ba2570d0aba661a7ad0707b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 15:54:14 +0100 Subject: [PATCH 04/16] digispark-with-cable: rename side_wall_th Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 47bca64..379a7e9 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -15,7 +15,7 @@ usb_tongue_w_slop = +0.5; usb_wall_h = 4.54 - 2.04; usb_ceil_th = 0.425; -side_wall_th = 1.5; // XXXX rename wall_th +wall_th = 1.5; // XXXX rename wall_th board_l = 17.56 + 0.2; board_w = 19.14 + 0.2; @@ -26,7 +26,7 @@ sw_to_edge = board_w/2 + 0.1; front_wall_th = 0.75; // egress_w = 8.0; -wall_y_min = -board_l - side_wall_th; +wall_y_min = -board_l - wall_th; ceil_y_min = wall_y_min - 5;; small_walls = [ @@ -60,41 +60,41 @@ side_x_gap = 0.5; cover_ceil_th = 0.9; -cover_strap_sz_x = side_wall_th * 3.5; +cover_strap_sz_x = wall_th * 3.5; // calculated strap_w = strain_w; -cover_strap_cutout_z = side_wall_th; +cover_strap_cutout_z = wall_th; middle_top_z = usb_wall_h; middle_base_z = -board_th; bottom_base_z = middle_base_z - cable_space_z - bottom_floor_th;; front_y_max = front_wall_th; -main_y_min = -board_l - side_wall_th; +main_y_min = -board_l - wall_th; strain_0_y_c = main_y_min - strain_w/2; strain_1_y_c = strain_0_y_c - strain_pitch_along; -total_y_min = strain_1_y_c - strain_w/2 - side_wall_th; +total_y_min = strain_1_y_c - strain_w/2 - wall_th; bottom_wall_top_z = (middle_top_z + middle_base_z) * 0.5 - fit_gap_z/2; cover_wall_bot_z = (middle_top_z + middle_base_z) * 0.5 + fit_gap_z/2; cover_top_z = middle_top_z + cover_ceil_th; -middle_side_wall_x = +board_w/2 + side_wall_th; -total_side_wall_x = middle_side_wall_x + side_wall_th + side_x_gap; +middle_side_wall_x = +board_w/2 + wall_th; +total_side_wall_x = middle_side_wall_x + wall_th + side_x_gap; cover_registration_c_dy = -cover_strap_c_d_y - strap_w/2 - - side_wall_th - cover_registration_sz_y/2; + - wall_th - cover_registration_sz_y/2; midbot_registration_sz_y = cover_registration_sz_y; midbot_registration_sz_z = cover_registration_sz_z; -midbot_registration_y_min = total_y_min + side_wall_th*2; +midbot_registration_y_min = total_y_min + wall_th*2; midbot_registration_y_max = midbot_registration_y_min + midbot_registration_sz_y; midbot_registration_y_around_max = midbot_registration_y_max - + side_wall_th*2; + + wall_th*2; midbot_registration_bottom_x = board_w/2 - midbot_registraton_sz_x; module BothSides(){ @@ -109,7 +109,7 @@ module NormalStrapCutouts(y_c, z, rot){ BothSides(){ translate([ -total_side_wall_x, y_c, z ]) rotate([0, rot, 0]) - cube([ side_wall_th, + cube([ wall_th, strap_w, 10 ], center=true); @@ -133,8 +133,8 @@ module CoverStrapCutouts(){ module FrontWallsPlan(slop) { BothSides(){ - rectfromto([ -board_w/2 - side_wall_th, 0 ], - [ -usb_w/2 - slop, front_wall_th ]); + rectfromto([ -board_w/2 - wall_th, 0 ], + [ -usb_w/2 - slop, front_wall_th ]); } } module MiddleSmallWallsPlan() { @@ -154,20 +154,20 @@ module MiddleCeilPlan() { BothSides(){ rectfromto([ -usb_w/2, -0.01 ], [ 0.1, usb_tongue_d ]); - rectfromto([ -board_w/2 - side_wall_th, 0 ], - [ 0.1, ceil_y_min ]); + rectfromto([ -board_w/2 - wall_th, 0 ], + [ 0.1, ceil_y_min ]); } rectfromto(chip_cutout[0], chip_cutout[1]); } } module MiddleMainWallsPlan() { BothSides(){ - rectfromto([ -board_w/2 - side_wall_th, 0 ], - [ -board_w/2, wall_y_min ]); + rectfromto([ -board_w/2 - wall_th, 0 ], + [ -board_w/2, wall_y_min ]); } FrontWallsPlan(usb_tongue_w_slop); - rectfromto([ -board_w/2 - side_wall_th + 0, - board_l ], - [ +board_w/2 + side_wall_th, total_y_min ]); + rectfromto([ -board_w/2 - wall_th + 0, - board_l ], + [ +board_w/2 + wall_th, total_y_min ]); } module RegistrationsMinkowski(){ @@ -255,18 +255,18 @@ module Bottom(){ ////toplevel } linextr_y_xz(midbot_registration_y_around_max, - front_y_max - side_wall_th) + front_y_max - wall_th) rectfromto([ -board_w/2, bottom_base_z + bottom_floor_th ], [ +board_w/2, 20 ]); - linextr_y_xz(total_y_min + side_wall_th, - front_y_max - side_wall_th) + linextr_y_xz(total_y_min + wall_th, + front_y_max - wall_th) rectfromto([ -midbot_registration_bottom_x, bottom_base_z + bottom_floor_th ], [ +midbot_registration_bottom_x, 20 ]); linextr_y_xz(total_y_min - 1, - total_y_min + side_wall_th + 1){ + total_y_min + wall_th + 1){ translate([ 0, middle_base_z ]){ hull(){ translate([ 0, -cable_dia/2 ]) -- 2.30.2 From 97a7ebfa864a81aaf42d193c87f5b4197dfd1951 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 15:57:15 +0100 Subject: [PATCH 05/16] digispark-with-cable: midbot strap Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 379a7e9..76b905b 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -97,6 +97,8 @@ midbot_registration_y_around_max = midbot_registration_y_max + wall_th*2; midbot_registration_bottom_x = board_w/2 - midbot_registraton_sz_x; +midbot_strap_c_y = 0.5 * (strain_0_y_c + strain_1_y_c); + module BothSides(){ for (m=[0,1]) { mirror([m,0,0]) { @@ -120,7 +122,6 @@ module BottomStrapCutouts(y_c){ } // XXXX check strap width // XXXX check cable diameter -// XXXX need rear strap module CoverStrapCutouts(){ BothSides(){ translate([ -total_side_wall_x, -cover_strap_c_d_y, cover_top_z ]) @@ -228,6 +229,8 @@ module Middle(){ ////toplevel translate([0, middle_base_z]) scale([1, strain_groove_d/strain_groove_w]) circle(strain_groove_w/2, $fn = 8); + NormalStrapCutouts(midbot_strap_c_y, + middle_top_z, 45); } } module MiddlePrint(){ ////toplevel @@ -280,6 +283,7 @@ module Bottom(){ ////toplevel RegistrationsMinkowski() MidBotRegistrations(); BottomStrapCutouts(-cover_strap_c_d_y); + BottomStrapCutouts(midbot_strap_c_y); } } -- 2.30.2 From 836ecc1c3f98690ba975240af773b9fd23f96c36 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 15:59:40 +0100 Subject: [PATCH 06/16] digispark-with-cable: cable width Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 76b905b..3d47ab0 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -43,7 +43,7 @@ strain_t = 1.0 + 0.5; strain_pitch_across = 5; strain_pitch_along = 10; strain_groove_d = 2; -strain_groove_w = 3; +strain_groove_w = 4.5; cover_strap_c_d_y = 5.5; // from front of board cover_registration_sz_y = 2; @@ -51,7 +51,7 @@ cover_registration_sz_z = 3; midbot_registraton_sz_x = 3; cable_space_z = 6; -cable_dia = 5; +cable_dia = 6; bottom_floor_th = 1.5; fit_gap_z = 0.5; @@ -121,7 +121,6 @@ module BottomStrapCutouts(y_c){ NormalStrapCutouts(y_c, bottom_base_z, -45); } // XXXX check strap width -// XXXX check cable diameter module CoverStrapCutouts(){ BothSides(){ translate([ -total_side_wall_x, -cover_strap_c_d_y, cover_top_z ]) -- 2.30.2 From 15ac3be73495ff94efa1d4465790d109f5e1a0d7 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 16:02:45 +0100 Subject: [PATCH 07/16] digispark-with-cable: strap width Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 3d47ab0..477cb86 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -38,7 +38,7 @@ small_walls = [ chip_cutout = [[ -sw_to_edge + 4.20, -3.75 ], [ -sw_to_edge + 11.95, -11.90 ]]; -strain_w = 2.0 + 0.5; +strain_w = 2.5 + 0.5; strain_t = 1.0 + 0.5; strain_pitch_across = 5; strain_pitch_along = 10; -- 2.30.2 From e79de0684c03b570fdcfe698848aae786a8d2008 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 16:03:43 +0100 Subject: [PATCH 08/16] digispark-with-cable: strap width Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 477cb86..23b6c2e 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -38,8 +38,8 @@ small_walls = [ chip_cutout = [[ -sw_to_edge + 4.20, -3.75 ], [ -sw_to_edge + 11.95, -11.90 ]]; -strain_w = 2.5 + 0.5; -strain_t = 1.0 + 0.5; +strain_w = 3.5 + 0.5; +strain_t = 1.5 + 0.5; strain_pitch_across = 5; strain_pitch_along = 10; strain_groove_d = 2; @@ -120,7 +120,6 @@ module NormalStrapCutouts(y_c, z, rot){ module BottomStrapCutouts(y_c){ NormalStrapCutouts(y_c, bottom_base_z, -45); } -// XXXX check strap width module CoverStrapCutouts(){ BothSides(){ translate([ -total_side_wall_x, -cover_strap_c_d_y, cover_top_z ]) -- 2.30.2 From f85a5541a9c0aedd092aedbe1e12fb0ff6dffe21 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 20:34:35 +0100 Subject: [PATCH 09/16] digispark-with-cable: ImpressionDemo Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 23b6c2e..42376b8 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -312,3 +312,8 @@ module BottomDemo(){ ////toplevel %Middle(); translate([0, 0, +0.25]) Cover(); } +module ImpressionDemo(){ ////toplevel + color("black") translate([0, 0, -0.25]) Bottom(); + %Middle(); + %translate([0, 0, +0.25]) Cover(); +} -- 2.30.2 From 23bdf1a340d74666b29991deaad910d724ac8004 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 20:37:24 +0100 Subject: [PATCH 10/16] digispark-with-cable: break out MiddleStrainHoles Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 42376b8..54f7e1c 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -200,6 +200,14 @@ module MidBotRegistrations(){ } } +module MiddleStrainHoles(){ + BothSides(){ + for (y_c = [strain_0_y_c, strain_1_y_c]) { + translate([strain_pitch_across/2, y_c, 0]) + square([ strain_t, strain_w ], center=true); + } + } +} module Middle(){ ////toplevel difference(){ union(){ @@ -216,13 +224,8 @@ module Middle(){ ////toplevel MidBotRegistrations(); } - for (y_c = [strain_0_y_c, strain_1_y_c]) { - for (x_c = [-1,+1] * strain_pitch_across/2) { - translate([x_c, y_c, 0]) - linextr(-20, 20) - square([ strain_t, strain_w ], center=true); - } - } + linextr(-20, 20) + MiddleStrainHoles(); linextr_y_xz(total_y_min-1, main_y_min) translate([0, middle_base_z]) scale([1, strain_groove_d/strain_groove_w]) -- 2.30.2 From f6c4cbfc732cd0f53886007d73d7996b960dc226 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 19 Oct 2023 20:39:44 +0100 Subject: [PATCH 11/16] digispark-with-cable: strain_around Signed-off-by: Ian Jackson --- digispark-with-cable.scad | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/digispark-with-cable.scad b/digispark-with-cable.scad index 54f7e1c..1ad978c 100644 --- a/digispark-with-cable.scad +++ b/digispark-with-cable.scad @@ -44,6 +44,7 @@ strain_pitch_across = 5; strain_pitch_along = 10; strain_groove_d = 2; strain_groove_w = 4.5; +strain_around = [2.25, 2.00]; cover_strap_c_d_y = 5.5; // from front of board cover_registration_sz_y = 2; @@ -304,6 +305,12 @@ module Cover(){ ////toplevel CoverRegistrations(); } CoverStrapCutouts(); + linextr(-20,20) { + minkowski(){ + square(strain_around * 2, center=true); + hull() MiddleStrainHoles(); + } + } } } module CoverPrint(){ ////toplevel -- 2.30.2 From e914f64f1f7e8f0c473f2042eecd8eb41ea06ba5 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 25 Nov 2023 10:41:43 +0000 Subject: [PATCH 12/16] m8-thin-washer: a blivet Signed-off-by: Ian Jackson --- m8-thin-washer.scad | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 m8-thin-washer.scad diff --git a/m8-thin-washer.scad b/m8-thin-washer.scad new file mode 100644 index 0000000..8e1f26f --- /dev/null +++ b/m8-thin-washer.scad @@ -0,0 +1,13 @@ +// -*- C -*- + +include + +$fa = 1; +$fs = 0.1; + +linextr(0, 0.425 + 0.125 * 2) { + difference(){ + circle(r= 15 /2); + circle(r= (8 + 0.5) /2); + } +} -- 2.30.2 From 5b2e7b72fabee1e017872ac1c58aefe358161e1a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 26 Dec 2023 12:45:19 +0000 Subject: [PATCH 13/16] chimney-cable-retainer: wip Signed-off-by: Ian Jackson --- Makefile | 2 +- chimney-cable-retainer.scad | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 chimney-cable-retainer.scad diff --git a/Makefile b/Makefile index b454c3a..f2302b6 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ FILAMENTSPOOL_AUTOS += filamentspool-storarm3 QUACKSES = $(addprefix quacks-ingredients-L, 1 2 3 4 5) QUACKS_SCADS = $(addsuffix .scad, $(QUACKSES)) -USING_AUTOS ?= $(FILAMENTSPOOL_AUTOS) xeno-drivebay-bracket dungeonquest-cone anke-gps-bracket cable-hole-trunking-cover anglepoise-neck crossbar-computer-led-mount wardrobe-hook knifeblock pandemic-counter pattress-boxes-3-cover bike-lipo-box earring-stand bike-stalk-led-mount sewing-table sewing-table-test sewing-table-jig maglite-holder poster-tube-lid poster-tube-lid-coarse fairphone-case fairphone-battery-case fairphone4-case fairphone4-case-coarse lock-inframe-bracket ksafe-base $(QUACKSES) quacks-ingredients-demos mic-table-clamp nook-case nook-case-test scaffold-clamp-common scaffold-clamp-tensioner scaffold-clamp-linear-bracket scaffold-clamp-straphook powerbank-bike-clamp topeak-mtx-tortec-expeditionrack-adapter lipo-flat-mount laptop-sound-cable-hooks digispark-with-cable $(foreach x,500 1000,adafruit-powerboost-$x) +USING_AUTOS ?= $(FILAMENTSPOOL_AUTOS) xeno-drivebay-bracket dungeonquest-cone anke-gps-bracket cable-hole-trunking-cover anglepoise-neck crossbar-computer-led-mount wardrobe-hook knifeblock pandemic-counter pattress-boxes-3-cover bike-lipo-box earring-stand bike-stalk-led-mount sewing-table sewing-table-test sewing-table-jig maglite-holder poster-tube-lid poster-tube-lid-coarse fairphone-case fairphone-battery-case fairphone4-case fairphone4-case-coarse lock-inframe-bracket ksafe-base $(QUACKSES) quacks-ingredients-demos mic-table-clamp nook-case nook-case-test scaffold-clamp-common scaffold-clamp-tensioner scaffold-clamp-linear-bracket scaffold-clamp-straphook powerbank-bike-clamp topeak-mtx-tortec-expeditionrack-adapter lipo-flat-mount laptop-sound-cable-hooks digispark-with-cable chimney-cable-retainer $(foreach x,500 1000,adafruit-powerboost-$x) AUTO_INCS += sealing-box.scad sewing-table.scad nutbox.scad \ powerbank-anker-10000.dxf \ diff --git a/chimney-cable-retainer.scad b/chimney-cable-retainer.scad new file mode 100644 index 0000000..d8b3731 --- /dev/null +++ b/chimney-cable-retainer.scad @@ -0,0 +1,45 @@ +// -*- C -*- + +include + +inrear_d = 15; +general_d = 8; +general_th = 5; +between_cables = 150; +around_cables = 20; +cable_dia = 10; + +total_d = 40; +above_h = 40; + +// calculated + +cable_x = around_cables + cable_dia/2; +total_x = cable_x * 2 + between_cables; + +module CoreElevation(){ + rectfromto([ 0, 0 ], + [ total_d, general_th ]); + rectfromto([ 0, 0 ], + [ general_th, above_h ]); +} + +module Retainer(){ ////toplevel + difference(){ + union(){ + linextr_x_yz(0, total_x) + mirror([1,0]) + CoreElevation(); + } + + for (x = [cable_x, total_x - cable_x]) + translate([x, 0, 0]) + linextr(-100, 100) + hull(){ + translate([ 0, -(general_th + cable_dia/2) ]) + circle(r = cable_dia/2); + translate([ 0, -(total_d + 1)]) + square([ cable_dia, 1], center=true); + } + } +} -- 2.30.2 From f77ee615f5a93e6589263638a25b6feb46d553db Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 26 Dec 2023 12:51:19 +0000 Subject: [PATCH 14/16] chimney-cable-retainer: wip Signed-off-by: Ian Jackson --- chimney-cable-retainer.scad | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/chimney-cable-retainer.scad b/chimney-cable-retainer.scad index d8b3731..0d70ba1 100644 --- a/chimney-cable-retainer.scad +++ b/chimney-cable-retainer.scad @@ -2,12 +2,13 @@ include +inrear_d_real = 20; inrear_d = 15; -general_d = 8; +bar_th = 5; general_th = 5; between_cables = 150; around_cables = 20; -cable_dia = 10; +cable_dia = 15; total_d = 40; above_h = 40; @@ -17,11 +18,19 @@ above_h = 40; cable_x = around_cables + cable_dia/2; total_x = cable_x * 2 + between_cables; +below_h = above_h; + +sit_angle = atan2(inrear_d_real - inrear_d, below_h); + module CoreElevation(){ - rectfromto([ 0, 0 ], - [ total_d, general_th ]); + rotate(-sit_angle) + rectfromto([ 0, 0 ], + [ total_d, general_th ]); rectfromto([ 0, 0 ], [ general_th, above_h ]); + translate([ inrear_d, -above_h ]) + rectfromto([ 0,0 ], + [ -bar_th, -bar_th ]); } module Retainer(){ ////toplevel @@ -34,7 +43,7 @@ module Retainer(){ ////toplevel for (x = [cable_x, total_x - cable_x]) translate([x, 0, 0]) - linextr(-100, 100) + linextr(-below_h/2, 100) hull(){ translate([ 0, -(general_th + cable_dia/2) ]) circle(r = cable_dia/2); -- 2.30.2 From 39bea34f60eee23c8e1ed9bb50bda7483f2b3785 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 26 Dec 2023 12:55:52 +0000 Subject: [PATCH 15/16] chimney-cable-retainer: maybe Signed-off-by: Ian Jackson --- chimney-cable-retainer.scad | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/chimney-cable-retainer.scad b/chimney-cable-retainer.scad index 0d70ba1..2f783d0 100644 --- a/chimney-cable-retainer.scad +++ b/chimney-cable-retainer.scad @@ -30,7 +30,18 @@ module CoreElevation(){ [ general_th, above_h ]); translate([ inrear_d, -above_h ]) rectfromto([ 0,0 ], - [ -bar_th, -bar_th ]); + [ -bar_th, bar_th ]); +} + +module BarMountElevation(){ + hull(){ + rotate(-sit_angle) + rectfromto([ 0, 0 ], + [ inrear_d, general_th ]); + translate([ 0, -below_h ]) + rectfromto([ 0,0 ], + [ inrear_d, bar_th ]); + } } module Retainer(){ ////toplevel @@ -39,6 +50,12 @@ module Retainer(){ ////toplevel linextr_x_yz(0, total_x) mirror([1,0]) CoreElevation(); + + for (x = [0, 0.5, 1] * (total_x - general_th)) + translate([ x, 0,0 ]) + linextr_x_yz(0, general_th) + mirror([1,0]) + BarMountElevation(); } for (x = [cable_x, total_x - cable_x]) -- 2.30.2 From 4ec6a70ebe5c33623d3e01a70ffd6cad8113ba59 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 4 Feb 2024 12:08:24 +0000 Subject: [PATCH 16/16] air-hockey-puck: wip Signed-off-by: Ian Jackson --- air-hockey-puck.scad | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 air-hockey-puck.scad diff --git a/air-hockey-puck.scad b/air-hockey-puck.scad new file mode 100644 index 0000000..bda9e91 --- /dev/null +++ b/air-hockey-puck.scad @@ -0,0 +1,36 @@ +// -*- C -*- + +main_dia = 34.0; +post_base_dia = 14; +post_top_dia = 11; +overall_height = 31; +rim_height = 5; +rim_wall_th = 2; +base_th = 2; + +$fs= 0.1; +$fa = 3; + +module Elevation(){ + hull(){ + translate([0, overall_height - post_top_dia/2]) + circle(r = post_top_dia/2); + square([ post_base_dia/2, 0.1 ]); + } + difference(){ + square([ main_dia/2, rim_height ]); + translate([ -rim_wall_th, base_th ]) + square([ main_dia/2, rim_height ]); + } +} + +module Bat(){ + rotate_extrude(){ + intersection(){ + Elevation(); + square([100, 100]); + } + } +} + +Bat(); -- 2.30.2