Work on quarter models

This commit is contained in:
mmcwilliams 2020-08-16 11:35:18 -04:00
parent 0662dff707
commit f636e4127a
2 changed files with 77 additions and 104 deletions

View File

@ -4,7 +4,7 @@ include <../libraries/gnal_v3.scad>;
SPOKE_COUNT = 24; SPOKE_COUNT = 24;
module gnal_100ft_spiral (spiral_count = 60, od = 298.75) { module gnal_100ft_spiral (spiral_count = 60, od = 298.75, quarter = false) {
outer_d = 299; outer_d = 299;
outer_d_inside = outer_d - 6; outer_d_inside = outer_d - 6;
outer_h = 7.5; outer_h = 7.5;
@ -32,7 +32,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
difference () { difference () {
gnal_spiral_core(); gnal_spiral_core();
//rounded spoke voids //rounded spoke voids
for (i = [0 : SPOKE_COUNT]) { for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) { rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
translate([0, 26.75, 0]) { translate([0, 26.75, 0]) {
cylinder(r = 2, h = 20, center = true, $fn = 40); cylinder(r = 2, h = 20, center = true, $fn = 40);
@ -42,15 +42,19 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
} }
//main spokes //main spokes
for (i = [0 : SPOKE_COUNT]) { for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, i * (360 / SPOKE_COUNT)]) { rotate([0, 0, i * (360 / SPOKE_COUNT)]) {
translate([(spoke_len / 2) + (48 / 2), 0, -3.6]) { translate([(spoke_len / 2) + (48 / 2), 0, -3.6]) {
cube([spoke_len, spoke_w, spoke_h], center = true); if (quarter && i % 3 == 0 && i % 6 != 0) { //phew!
cube([spoke_len, spoke_w * 2, spoke_h], center = true);
} else {
cube([spoke_len, spoke_w, spoke_h], center = true);
}
} }
} }
} }
//secondary spokes //secondary spokes
for (i = [0 : SPOKE_COUNT]) { for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) { rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
translate([(outer_d / 2) - (spoke_2_len / 2) - 2, 0, -3.6]) { translate([(outer_d / 2) - (spoke_2_len / 2) - 2, 0, -3.6]) {
cube([spoke_2_len, spoke_w, spoke_h], center = true); cube([spoke_2_len, spoke_w, spoke_h], center = true);
@ -58,7 +62,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
} }
} }
//spoke cross bars //spoke cross bars
for (i = [0 : SPOKE_COUNT]) { for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) { rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
translate([63, 0, -3.6]) { translate([63, 0, -3.6]) {
rotate([0, 0, 20]) { rotate([0, 0, 20]) {
@ -69,7 +73,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
} }
//second spokes //second spokes
for (i = [0 : SPOKE_COUNT]) { for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) { rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
translate([(outer_d / 2) - (spoke_2_len / 2) - 2, 0, -3.6]) { translate([(outer_d / 2) - (spoke_2_len / 2) - 2, 0, -3.6]) {
cube([spoke_2_len, spoke_w, spoke_h], center = true); cube([spoke_2_len, spoke_w, spoke_h], center = true);
@ -78,7 +82,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
} }
//second spoke cross pieces //second spoke cross pieces
for (i = [0 : SPOKE_COUNT * 2]) { for (i = [0 : (SPOKE_COUNT * 2) - 1]) {
rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 2))]) { rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 2))]) {
translate([spoke_cross_2_d, 0, -3.6]) { translate([spoke_cross_2_d, 0, -3.6]) {
rotate([0, 0, -20]) { rotate([0, 0, -20]) {
@ -89,7 +93,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
} }
//third spokes //third spokes
for (i = [0 : SPOKE_COUNT * 2]) { for (i = [0 : (SPOKE_COUNT * 2) - 1]) {
rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 2))]) { rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 2))]) {
translate([(outer_d / 2) - (spoke_3_len / 2) - 2, 0, -3.6]) { translate([(outer_d / 2) - (spoke_3_len / 2) - 2, 0, -3.6]) {
cube([spoke_3_len, spoke_3_w, spoke_h], center = true); cube([spoke_3_len, spoke_3_w, spoke_h], center = true);
@ -101,17 +105,17 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
rotate([0, 0, -90]) { rotate([0, 0, -90]) {
difference () { difference () {
film_guide(spiral_count); film_guide(spiral_count);
for (i = [0 : SPOKE_COUNT]) { for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT) ]) { rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT) ]) {
translate([(83 / 4) + (48 / 2), 0, -3.6]) triangle_void(); translate([(83 / 4) + (48 / 2), 0, -3.6]) triangle_void();
} }
} }
for (i = [0 : SPOKE_COUNT * 2]) { for (i = [0 : (SPOKE_COUNT * 2) - 1]) {
rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 2)) ]) { rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 2)) ]) {
translate([(258 / 2) - (spoke_2_len / 2) + 1 , 0, -3.6 ]) triangle_void_2(i); translate([(258 / 2) - (spoke_2_len / 2) + 1 , 0, -3.6 ]) triangle_void_2(i);
} }
} }
for (i = [0 : SPOKE_COUNT * 4]) { for (i = [0 : (SPOKE_COUNT * 4) - 1]) {
rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 4)) ]) { rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 4)) ]) {
if (i % 2 == 0) { if (i % 2 == 0) {
translate([(outer_d / 2) - (spoke_3_len / 2) + 1 , 0.3, -3.6]) triangle_void_3(i); translate([(outer_d / 2) - (spoke_3_len / 2) + 1 , 0.3, -3.6]) triangle_void_3(i);
@ -125,6 +129,44 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
} }
} }
module gnal_100ft_spiral_quarter (quarter = "a") {
LEN = 220;
module notch (NOTCH = 5) {
cube([NOTCH, NOTCH, 5], center = true);
translate([0, 0, (5 / 2) + (1 / 2)]) rotate([0, 0, 45]) cylinder(r1 = NOTCH / 1.4, r2 = 0.1, h = 1, center = true, $fn = 4);
}
module quarter () {
NOTCH = 3;
NOTCH_H = -5;
NOTCHES = 7;
OFFSET = 60;
difference () {
cube([LEN, LEN, LEN], center = true);
for (i = [0 : NOTCHES - 1]) {
translate([OFFSET - (i * (LEN / NOTCHES)), -(LEN / 2), NOTCH_H]) rotate([0, 0, 45]) notch(NOTCH);
}
}
for (i = [0 : NOTCHES - 2]) {
translate([-(LEN / 2), OFFSET - (i * (LEN / NOTCHES)), NOTCH_H]) rotate([0, 0, 45]) notch(NOTCH);
}
}
intersection () {
rotate([0, 0, 45]) gnal_100ft_spiral(quarter = true);
if (quarter == "a") {
rotate([0, 0, 0]) translate([LEN / 2, LEN / 2, 0]) quarter();
} else if (quarter == "b") {
rotate([0, 0, 90]) translate([LEN / 2, LEN / 2, 0]) quarter();
} else if (quarter == "c") {
rotate([0, 0, 180]) translate([LEN / 2, LEN / 2, 0]) quarter();
} else if (quarter == "d") {
rotate([0, 0, 270]) translate([LEN / 2, LEN / 2, 0]) quarter();
}
}
}
module gnal_100ft_top () { module gnal_100ft_top () {
H = 5; H = 5;
center_d = 53; center_d = 53;
@ -239,6 +281,14 @@ PART="spiral";
if (PART == "spiral") { if (PART == "spiral") {
gnal_100ft_spiral(); gnal_100ft_spiral();
} else if (PART == "quarter_a") {
gnal_100ft_spiral_quarter("a");
} else if (PART == "quarter_b") {
gnal_100ft_spiral_quarter("b");
} else if (PART == "quarter_c") {
gnal_100ft_spiral_quarter("c");
} else if (PART == "quarter_d") {
gnal_100ft_spiral_quarter("d");
} else if (PART == "top") { } else if (PART == "top") {
gnal_100ft_top(); gnal_100ft_top();
} else if (PART == "spacer") { } else if (PART == "spacer") {

View File

@ -4,7 +4,7 @@ include <../libraries/gnal_v3.scad>;
SPOKE_COUNT = 24; SPOKE_COUNT = 24;
module gnal_50ft_spiral (spiral_count = 40, od = 215.75) { module gnal_50ft_spiral (spiral_count = 40, od = 215.75, quarter = false) {
outer_d = 215; outer_d = 215;
outer_d_inside = 209; outer_d_inside = 209;
outer_h = 7.5; outer_h = 7.5;
@ -35,7 +35,11 @@ module gnal_50ft_spiral (spiral_count = 40, od = 215.75) {
for (i = [0 : SPOKE_COUNT]) { for (i = [0 : SPOKE_COUNT]) {
rotate([0, 0, i * (360 / SPOKE_COUNT)]) { rotate([0, 0, i * (360 / SPOKE_COUNT)]) {
translate([(spoke_len / 2) + (48 / 2), 0, -3.6]) { translate([(spoke_len / 2) + (48 / 2), 0, -3.6]) {
cube([spoke_len, spoke_w, spoke_h], center = true); if (quarter && i % 3 == 0 && i % 6 != 0) { //phew!
cube([spoke_len, spoke_w * 2, spoke_h], center = true);
} else {
cube([spoke_len, spoke_w, spoke_h], center = true);
}
} }
} }
} }
@ -77,89 +81,8 @@ module gnal_50ft_spiral (spiral_count = 40, od = 215.75) {
} }
} }
module gnal_50ft_spiral_quarter_full (spiral_count = 40, od = 215.75) {
outer_d = 215;
outer_d_inside = 209;
outer_h = 7.5;
spoke_len = 81;
spoke_w = 3;
spoke_h = 4.2 + 3;
spoke_2_len = 43;
//override spoke count
echo(SPOKE_COUNT);
translate([0, 0, -3.6]) difference () {
cylinder(r = outer_d / 2, h = spoke_h, center = true, $fn = 500);
cylinder(r = outer_d_inside / 2, h = outer_h + 1, center = true, $fn = 500);
}
difference () {
gnal_spiral_core();
//rounded spoke voids
for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
translate([0, 26.75, 0]) {
cylinder(r = 2, h = 20, center = true, $fn = 40);
}
}
}
}
//main spokes
for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, i * (360 / SPOKE_COUNT)]) {
translate([(spoke_len / 2) + (48 / 2), 0, -3.6]) {
if (i % 3 == 0 && i % 6 != 0) { //phew!
cube([spoke_len, spoke_w * 2, spoke_h], center = true);
} else {
cube([spoke_len, spoke_w, spoke_h], center = true);
}
}
}
}
//secondary spokes
for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
translate([(outer_d / 2) - (spoke_2_len / 2) - 2, 0, -3.6]) {
cube([spoke_2_len, spoke_w, spoke_h], center = true);
}
}
}
//spoke cross bars
for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
translate([63, 0, -3.6]) {
rotate([0, 0, 20]) {
cube([ spoke_w, 18, spoke_h], center = true);
}
}
}
}
translate([0, 0, -.1]) {
rotate([0, 0, -90]) {
difference () {
film_guide(spiral_count);
for (i = [0 : SPOKE_COUNT - 1]) {
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT) ]) {
translate([(spoke_len / 4) + (48 / 2), 0, -3.6]) triangle_void();
}
}
for (i = [0 : (SPOKE_COUNT * 2) - 1]) {
rotate([0, 0, (i + 0.5) * (360 / (SPOKE_COUNT * 2)) ]) {
translate([(outer_d / 2) - (spoke_2_len / 2) + 1 , 0, -3.6]) triangle_void_2(i);
}
}
}
}
}
}
module gnal_50ft_spiral_quarter (quarter = "a") { module gnal_50ft_spiral_quarter (quarter = "a") {
LEN = 220;
module notch (NOTCH = 5) { module notch (NOTCH = 5) {
cube([NOTCH, NOTCH, 5], center = true); cube([NOTCH, NOTCH, 5], center = true);
translate([0, 0, (5 / 2) + (1 / 2)]) rotate([0, 0, 45]) cylinder(r1 = NOTCH / 1.4, r2 = 0.1, h = 1, center = true, $fn = 4); translate([0, 0, (5 / 2) + (1 / 2)]) rotate([0, 0, 45]) cylinder(r1 = NOTCH / 1.4, r2 = 0.1, h = 1, center = true, $fn = 4);
@ -171,25 +94,25 @@ module gnal_50ft_spiral_quarter (quarter = "a") {
NOTCHES = 7; NOTCHES = 7;
OFFSET = 60; OFFSET = 60;
difference () { difference () {
cube([220, 220, 220], center = true); cube([LEN, LEN, LEN], center = true);
for (i = [0 : NOTCHES - 1]) { for (i = [0 : NOTCHES - 1]) {
translate([OFFSET - (i * (220 / NOTCHES)), -110, NOTCH_H]) rotate([0, 0, 45]) notch(NOTCH); translate([OFFSET - (i * (LEN / NOTCHES)), -(LEN / 2), NOTCH_H]) rotate([0, 0, 45]) notch(NOTCH);
} }
} }
for (i = [0 : NOTCHES - 2]) { for (i = [0 : NOTCHES - 2]) {
translate([-110, OFFSET - (i * (220 / NOTCHES)), NOTCH_H]) rotate([0, 0, 45]) notch(NOTCH); translate([-(LEN / 2), OFFSET - (i * (LEN / NOTCHES)), NOTCH_H]) rotate([0, 0, 45]) notch(NOTCH);
} }
} }
intersection () { intersection () {
rotate([0, 0, 45]) gnal_50ft_spiral_quarter_full(); rotate([0, 0, 45]) gnal_50ft_spiral(quarter = true);
if (quarter == "a") { if (quarter == "a") {
rotate([0, 0, 0]) translate([110, 110, 0]) quarter(); rotate([0, 0, 0]) translate([LEN / 2, LEN / 2, 0]) quarter();
} else if (quarter == "b") { } else if (quarter == "b") {
rotate([0, 0, 90]) translate([110, 110, 0]) quarter(); rotate([0, 0, 90]) translate([LEN / 2, LEN / 2, 0]) quarter();
} else if (quarter == "c") { } else if (quarter == "c") {
rotate([0, 0, 180]) translate([110, 110, 0]) quarter(); rotate([0, 0, 180]) translate([LEN / 2, LEN / 2, 0]) quarter();
} else if (quarter == "d") { } else if (quarter == "d") {
rotate([0, 0, 270]) translate([110, 110, 0]) quarter(); rotate([0, 0, 270]) translate([LEN / 2, LEN / 2, 0]) quarter();
} }
} }
} }