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;
|
||||
|
||||
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_inside = outer_d - 6;
|
||||
outer_h = 7.5;
|
||||
|
@ -32,7 +32,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
|
|||
difference () {
|
||||
gnal_spiral_core();
|
||||
//rounded spoke voids
|
||||
for (i = [0 : SPOKE_COUNT]) {
|
||||
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);
|
||||
|
@ -42,15 +42,19 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
|
|||
}
|
||||
|
||||
//main spokes
|
||||
for (i = [0 : SPOKE_COUNT]) {
|
||||
for (i = [0 : SPOKE_COUNT - 1]) {
|
||||
rotate([0, 0, i * (360 / SPOKE_COUNT)]) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//secondary spokes
|
||||
for (i = [0 : SPOKE_COUNT]) {
|
||||
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);
|
||||
|
@ -58,7 +62,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
|
|||
}
|
||||
}
|
||||
//spoke cross bars
|
||||
for (i = [0 : SPOKE_COUNT]) {
|
||||
for (i = [0 : SPOKE_COUNT - 1]) {
|
||||
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT)]) {
|
||||
translate([63, 0, -3.6]) {
|
||||
rotate([0, 0, 20]) {
|
||||
|
@ -69,7 +73,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
|
|||
}
|
||||
|
||||
//second spokes
|
||||
for (i = [0 : SPOKE_COUNT]) {
|
||||
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);
|
||||
|
@ -78,7 +82,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
|
|||
}
|
||||
|
||||
//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))]) {
|
||||
translate([spoke_cross_2_d, 0, -3.6]) {
|
||||
rotate([0, 0, -20]) {
|
||||
|
@ -89,7 +93,7 @@ module gnal_100ft_spiral (spiral_count = 60, od = 298.75) {
|
|||
}
|
||||
|
||||
//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))]) {
|
||||
translate([(outer_d / 2) - (spoke_3_len / 2) - 2, 0, -3.6]) {
|
||||
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]) {
|
||||
difference () {
|
||||
film_guide(spiral_count);
|
||||
for (i = [0 : SPOKE_COUNT]) {
|
||||
for (i = [0 : SPOKE_COUNT - 1]) {
|
||||
rotate([0, 0, (i + 0.5) * (360 / SPOKE_COUNT) ]) {
|
||||
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)) ]) {
|
||||
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)) ]) {
|
||||
if (i % 2 == 0) {
|
||||
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 () {
|
||||
H = 5;
|
||||
center_d = 53;
|
||||
|
@ -239,6 +281,14 @@ PART="spiral";
|
|||
|
||||
if (PART == "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") {
|
||||
gnal_100ft_top();
|
||||
} else if (PART == "spacer") {
|
||||
|
|
|
@ -4,7 +4,7 @@ include <../libraries/gnal_v3.scad>;
|
|||
|
||||
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_inside = 209;
|
||||
outer_h = 7.5;
|
||||
|
@ -35,10 +35,14 @@ module gnal_50ft_spiral (spiral_count = 40, od = 215.75) {
|
|||
for (i = [0 : SPOKE_COUNT]) {
|
||||
rotate([0, 0, i * (360 / SPOKE_COUNT)]) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//secondary spokes
|
||||
for (i = [0 : 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") {
|
||||
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);
|
||||
|
@ -171,25 +94,25 @@ module gnal_50ft_spiral_quarter (quarter = "a") {
|
|||
NOTCHES = 7;
|
||||
OFFSET = 60;
|
||||
difference () {
|
||||
cube([220, 220, 220], center = true);
|
||||
cube([LEN, LEN, LEN], center = true);
|
||||
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]) {
|
||||
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 () {
|
||||
rotate([0, 0, 45]) gnal_50ft_spiral_quarter_full();
|
||||
rotate([0, 0, 45]) gnal_50ft_spiral(quarter = true);
|
||||
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") {
|
||||
rotate([0, 0, 90]) translate([110, 110, 0]) quarter();
|
||||
rotate([0, 0, 90]) translate([LEN / 2, LEN / 2, 0]) quarter();
|
||||
} 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") {
|
||||
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