Work on quarter models
This commit is contained in:
parent
0662dff707
commit
f636e4127a
|
@ -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]) {
|
||||||
|
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);
|
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") {
|
||||||
|
|
|
@ -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,10 +35,14 @@ 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]) {
|
||||||
|
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);
|
cube([spoke_len, spoke_w, spoke_h], center = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//secondary spokes
|
//secondary spokes
|
||||||
for (i = [0 : SPOKE_COUNT]) {
|
for (i = [0 : SPOKE_COUNT]) {
|
||||||
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
|
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue