From ba2b701a7aa83d5bde5d587927dc2e9e91fc4098 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Fri, 15 Oct 2021 12:12:36 -0400 Subject: [PATCH] Created a new branch to explore creating a method of stacking 4 or more spirals. In theory. Potentially. First attempt misused the single spiral diameter thread. The number of parts means two things: improve the documentation and potentially add identifying features to the different parts. --- README.md | 4 +- scad/50ft_v3/gnal_50ft.scad | 97 +++++++++++++++++++++++++++++++- scad/libraries/gnal_v3.scad | 108 +++++++++++++++++++++++------------- 3 files changed, 164 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 977da52..6f5c1de 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ If your prints are warping, there are a few things to look at: 3. Slicer settings The first thing to consider when your prints are coming out warped off the print bed is whether or not your **material** is appropriate for this model. -Check the [material](#material) section of this README for more information, but theres a chance if you are using PLA or ABS that large flat prints of this size are warping due to limitations with the material you are using. PETG has proven to warp far less in my own anecdotal experience and is the recommended material for this project. +Check the [material](#material) section of this README for more information, but there's a chance if you are using PLA or ABS that large flat prints of this size are warping due to limitations with the material you are using. PETG has proven to warp far less in my own anecdotal experience and is the recommended material for this project. The thermal properties of the material you're printing with are what causes warping, so check if your printer is being set to the recommended **temperatures** on both the bed and extruder for the material and printer you are using. Warping occurs consistently when a section of a part cools too quickly and contracts while the rest of it is still being printed. @@ -222,7 +222,7 @@ Had issues or success printing this? Interested in getting in contact? MIT License -Copyright (c) 2020 Matt McWilliams +Copyright (c) 2021 Matt McWilliams Permission is hereby granted, free of charge, to any person obtaining a copy of this hardware, software, and associated documentation files (the "Product"), to deal in the Product without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Product, and to permit persons to whom the Product is furnished to do so, subject to the following conditions: diff --git a/scad/50ft_v3/gnal_50ft.scad b/scad/50ft_v3/gnal_50ft.scad index 2f92bc4..649556e 100644 --- a/scad/50ft_v3/gnal_50ft.scad +++ b/scad/50ft_v3/gnal_50ft.scad @@ -187,10 +187,92 @@ module film_guide (rotations = 40, id = 45.55 - .5, spacing = 2.075, bottom = -2 spiral(rotations, id, spacing, bottom, $fn); } -PART="quarter_a"; +module gnal_stacking_spindle () { + IN_LEN = 21; + + LEN = 17.1; + ALT_LEN = 27.1; + difference () { + union () { + gnal_spindle_base(); + translate([0, 0, -23.75]) gnal_spacer_solid(); + } + //inner screw negative + translate([0, 0, -30]) union() { + if (DEBUG) { + cylinder(r = OD / 2, h = IN_LEN); + } else { + metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN); + } + translate([0, 0, 0.2]) { + if (DEBUG) { + cylinder(r = OD / 2, h = IN_LEN); + } else { + metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN); + } + } + } + } + + difference () { + outer_screw(LEN - 2); + } +} + +module stacking () { + translate([0, 0, 72 + 72 + 36]) { + color("blue") gnal_spindle_top(); + } + translate([0, 0, 72 + 72]) rotate([0, 180, 0]) intersection () { + gnal_50ft_top(); + cylinder(r = 50 / 2, h = 50, center = true); + } + + translate([0, 0, 72 + 30]) { + color("blue") rotate([0, 180, 0]) gnal_spindle_bottom(); + } + + translate([0, 0, 72 + 36]) difference () { + cylinder(r = 50 / 2, h = 16, center = true); + cylinder(r = 22.5 / 2, h = 16 + 1, center = true); + } + + translate([0, 0, 36 + 30]) { + color("green") rotate([0, 180, 0]) gnal_stacking_spindle(); + } + + translate([0, 0, 72]) difference () { + cylinder(r = 50 / 2, h = 16, center = true); + cylinder(r = 22.5 / 2, h = 16 + 1, center = true); + } + + translate([0, 0, 30]) { + color("green") rotate([0, 180, 0]) gnal_stacking_spindle(); + } + + translate([0, 0, 36]) difference () { + cylinder(r = 50 / 2, h = 16, center = true); + cylinder(r = 22.5 / 2, h = 16 + 1, center = true); + } + + color("blue") translate([0, 0, 12 + 3]) gnal_spacer_16(); + //#1 - bottom spiral + difference () { + cylinder(r = 50 / 2, h = 16, center = true); + cylinder(r = 22.5 / 2, h = 16 + 1, center = true); + translate([0, 0, -8]) spiral_insert_void(); + } + + color("blue") translate([0, 0, -12]) gnal_spiral_bottom_insert_16(); + +} + +PART="stacking"; if (PART == "spiral") { gnal_50ft_spiral(); +} else if (PART == "tank") { + gnal_50ft_tank(); } else if (PART == "quarter_a") { gnal_50ft_spiral_quarter("a"); } else if (PART == "quarter_b") { @@ -201,8 +283,6 @@ if (PART == "spiral") { gnal_50ft_spiral_quarter("d"); } else if (PART == "top") { gnal_50ft_top(); -} else if (PART == "spacer") { - gnal_spacer(); } else if (PART == "insert_s8") { gnal_spiral_bottom_insert_s8(); } else if (PART == "insert_16") { @@ -217,6 +297,9 @@ if (PART == "spiral") { gnal_spindle_bottom(); } else if (PART == "spindle_single") { gnal_spindle_top(); +} else if (PART == "stacking") { + //stacking(); + rotate([0, 180, 0]) gnal_stacking_spindle(); } else if (PART == "spiral_test") { difference () { gnal_50ft_spiral(); @@ -224,3 +307,11 @@ if (PART == "spiral") { rotate([0, 0, 30]) translate([-125, 0, 0]) cube([250, 250, 100], center = true); } } + +if (DEBUG) { + echo("WARNING: DEBUG is enabled"); +} + +echo($vpt); +echo($vpr); +echo($vpd); \ No newline at end of file diff --git a/scad/libraries/gnal_v3.scad b/scad/libraries/gnal_v3.scad index f12c096..47f62fe 100644 --- a/scad/libraries/gnal_v3.scad +++ b/scad/libraries/gnal_v3.scad @@ -17,6 +17,8 @@ include <./Triangles.scad>; * */ +DEBUG = false; + FINE = 200; OD = 10 + .5; @@ -266,7 +268,13 @@ module gnal_spiral_bottom_insert_16 () { } } } - translate([0, 0, -(H / 2) - 2]) metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN + 8); + translate([0, 0, -(H / 2) - 2]) { + if (DEBUG) { + cylinder(r = OD / 2, h = LEN + 8); + } else { + metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN + 8); + } + } translate([0, 0, 8.5]) { for (i = [0: RIDGES - 1]) { rotate([0, 0, i * (360 / RIDGES)]) translate([void_d / 2, 0, 0]) cylinder(r = RIDGE_D / 2, h = 8.1, center = true); @@ -310,7 +318,13 @@ module gnal_spiral_bottom_insert_single () { } } } - translate([0, 0, -LEN / 2]) metric_thread (diameter=SINGLE_THREAD_D, pitch=PITCH, thread_size = THREAD, length = LEN); + translate([0, 0, -LEN / 2]) { + if (DEBUG) { + cylinder(r = SINGLE_THREAD_D / 2, h = LEN); + } else { + metric_thread (diameter=SINGLE_THREAD_D, pitch=PITCH, thread_size = THREAD, length = LEN); + } + } } } @@ -351,33 +365,8 @@ module spacer_outer_ridges () { } } } -module gnal_spacer () { - add = 3.25; - core_d = 29.5; - core_bottom_d = 26.2 + .2; - void_d = 22.5; - h = 8 + add; - translate([0, 0, (add / 2) - 1]) difference () { - union () { - difference () { - cylinder(r = core_d / 2, h = h, center = true, $fn = 200); - translate([0, 0, 8]) cylinder(r = core_bottom_d / 2, h = h, center = true, $fn = 200); - cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200); - } - translate([0, 0, 0]) spacer_ridges_loose(); - spacer_outer_ridges(); - } - //trim top - translate([0, 0, h - 0.1]) cylinder(r = (core_d + 1) / 2, h = h, center = true, $fn = 200); - //trim bottom - translate([0, 0, -h + 0.9]) cylinder(r = (core_d + 1) / 2, h = h, center = true, $fn = 200); - //finger grips - //translate([0, 24, 0]) rotate([-6, 0, 0]) cylinder(r = 10, h = 6, center = true, $fn = 100); - //translate([0, -24, 0]) rotate([6, 0, 0]) cylinder(r = 10, h = 6, center = true, $fn = 100); - } -} -module gnal_spacer_16 () { +module gnal_spacer_solid () { core_d = 29.5; core_bottom_d = 26.2 + .2; void_d = 18; @@ -389,11 +378,24 @@ module gnal_spacer_16 () { union () { difference () { cylinder(r = core_d / 2, h = h, center = true, $fn = 200); - cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200); } translate([0, 0, -.75]) rotate([0, 180, 0]) spacer_outer_ridges(); } } +} + +module gnal_spacer_16 () { + core_d = 29.5; + core_bottom_d = 26.2 + .2; + void_d = 18.3; + h = 8; + + RIDGES = 8; + RIDGE_D = 3; + difference () { + gnal_spacer_solid(); + cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200); + } translate([0, 0, 0]) { for (i = [0: RIDGES - 1]) { rotate([0, 0, i * (360 / RIDGES)]) translate([void_d / 2, 0, 0]) cylinder(r = RIDGE_D / 2, h = 8, center = true); @@ -405,9 +407,17 @@ module gnal_spacer_16 () { * Spindles **/ -module gnal_spindle_bottom_base ( HEX = false) { +module gnal_spindle_base ( ) { D = 8.45 * 2; H = 20; + union() { + translate([0, 0, -15]) { + cylinder(r = D / 2, h = H, center = true, $fn = FINE); + } + } +} + +module gnal_spindle_bottom_base ( HEX = false) { //for grip BUMP = 2; //diameter BUMPS = 6; @@ -416,9 +426,7 @@ module gnal_spindle_bottom_base ( HEX = false) { TOP_OFFSET = -24.5; union() { - translate([0, 0, -15]) { - cylinder(r = D / 2, h = H, center = true, $fn = FINE); - } + gnal_spindle_base(); //hex version if (HEX) { translate([0, 0, TOP_OFFSET]) { @@ -445,7 +453,13 @@ module outer_screw (LEN) { THREAD = 1.6; difference () { - translate([0, 0, -7.1]) metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN); + translate([0, 0, -7.1]) { + if (DEBUG) { + cylinder(r = OD / 2, h = LEN); + } else { + metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN); + } + } //bevel top of screw translate([0, 0, LEN - 8]) difference() { cylinder(r = 8, h = 3, center = true, $fn = FINE); @@ -466,10 +480,18 @@ module gnal_spindle_bottom (ALT = false, HEX = false) { gnal_spindle_bottom_base(HEX); //inner screw negative translate([0, 0, -30]) union() { - metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN); - translate([0, 0, 0.2]) { + if (DEBUG) { + cylinder(r = OD / 2, h = IN_LEN); + } else { metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN); } + translate([0, 0, 0.2]) { + if (DEBUG) { + cylinder(r = OD / 2, h = IN_LEN); + } else { + metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN); + } + } } } @@ -480,8 +502,6 @@ module gnal_spindle_bottom (ALT = false, HEX = false) { } else { outer_screw(LEN); } - //hollow center - cylinder(r = 3.8 / 2, h = 100, center = true, $fn = 60); } } @@ -583,7 +603,11 @@ module gnal_spindle_top () { } //screw translate([0, 0, -37.5]) { - metric_thread (diameter=13.6, pitch = PITCH, thread_size = THREAD, length = 21); + if (DEBUG) { + cylinder(r = 13.6 / 2, h = 21); + } else { + metric_thread (diameter=13.6, pitch = PITCH, thread_size = THREAD, length = 21); + } } //cylinder plug translate([0, 0, -37.5 + (21 / 2) - 1]) { @@ -689,7 +713,11 @@ module gnal_spindle_single () { } //screw translate([0, 0, -37.5 - SINGLE_INSERT]) { - metric_thread (diameter=SINGLE_THREAD_D, pitch = PITCH, thread_size = THREAD, length = 21); + if (DEBUG) { + cylinder(r = SINGLE_THREAD_D / 2, h = 21); + } else { + metric_thread (diameter=SINGLE_THREAD_D, pitch = PITCH, thread_size = THREAD, length = 21); + } } //cylinder plug translate([0, 0, -37.5 - SINGLE_INSERT + (21 / 2) - 1]) {