From 583f3e01bacbb5f58b11bffda9745df44568305e Mon Sep 17 00:00:00 2001 From: mmcwilliams Date: Mon, 1 Apr 2019 12:35:04 -0400 Subject: [PATCH] Minolta16 tank separated out into 4 different parts files. Funnel not included (yet). --- models/minolta16_tank/minolta16_tank.scad | 229 +----------------- .../minolta16_tank_cover.scad | 48 ++++ .../minolta16_tank_reel.scad | 160 ++++++++++++ .../minolta16_tank_reel_top.scad | 26 ++ 4 files changed, 239 insertions(+), 224 deletions(-) create mode 100644 models/minolta16_tank_reel_top/minolta16_tank_reel_top.scad diff --git a/models/minolta16_tank/minolta16_tank.scad b/models/minolta16_tank/minolta16_tank.scad index dfdaf8f..3636285 100644 --- a/models/minolta16_tank/minolta16_tank.scad +++ b/models/minolta16_tank/minolta16_tank.scad @@ -1,132 +1,6 @@ +time = 0; D = 55; -module equilateralTriangle (side=10, height=10, center=false){ - translate(center==true ? [-side/2,-sqrt(3)*side/6,-height/2] : [0,0,0]) - linear_extrude(height=height) - polygon(points=[[0,0],[side,0],[side/2,sqrt(3)*side/2]]); -} - -module spiral (START_D = 10, SPACING = 5, THICKNESS = 2, H = 10, SPIRALS = 39) { - $fn = 80; - START_R = START_D / 2; - ROT = (360 / $fn); - union () { - for (i = [0 : $fn]) { - rotate ([0, 0, i * ROT]) { - for (x = [0: (SPIRALS - 1)]) { - spiral_facet(i, x, START_R, SPACING, THICKNESS, H); - } - } - } - } -} - -module spiral_static_res (START_D = 10, SPACING = 5, THICKNESS = 2, H = 10, SPIRALS = 39) { - $fn = 80; - - START_R = START_D / 2; - - SPACING_MAX = ((SPIRALS - 1) * (SPACING + THICKNESS)); - STEP_SIZE = ((SPACING + THICKNESS) / $fn); - STEP_OFFSET_MAX = $fn * STEP_SIZE; - - MAX_R = START_R + SPACING_MAX + STEP_OFFSET_MAX; - echo(MAX_R); - - ROT = (360 / $fn); - for (x = [0 : (SPIRALS - 1)]) { - - for (i = [0 : $fn]) { - rotate ([0, 0, i * ROT]) spiral_facet(i, x, START_R, SPACING, THICKNESS, H); - } - } -} - -module spiral_facet (i, x, START_R, SPACING, W, H) { - STEP_SIZE = ((SPACING + W) / $fn); - - STEP_OFFSET = i * STEP_SIZE; - SPIRAL_START_OFFSET = (x * (SPACING + W)); - - ACTUAL_R = START_R + SPIRAL_START_OFFSET + STEP_OFFSET; - L = 2 * (ACTUAL_R * tan((360 / $fn) / 2)); - ANGLE = -atan( STEP_SIZE / (L / 2) ) / 2; - OFFSET = START_R - (W / 2) + SPIRAL_START_OFFSET + STEP_OFFSET; - - translate ([OFFSET, 0, - H / 2]) { - rotate ([0, 0, ANGLE]) { - cube([W, L, H], center=true); - } - } -} - -module spiral_top (START_D = 10, SPACING = 5, THICKNESS = 2, H = 10, SPIRALS = 39) { - $fn = 80; - START_R = START_D / 2; - union () { - for (i = [0 : $fn]) { - rotate ([0, 0, i * (360 / $fn)]) { - for (x = [0: (SPIRALS - 1)]) { - spiral_top_facet(i, x, START_R, SPACING, THICKNESS, H); - } - } - } - } -} - -module spiral_top_facet (i, x, START_R, SPACING, W, H) { - STEP_SIZE = ((SPACING + W) / $fn); - - STEP_OFFSET = i * STEP_SIZE; - SPIRAL_START_OFFSET = (x * (SPACING + W)); - - ACTUAL_R = START_R + SPIRAL_START_OFFSET + STEP_OFFSET; - L = 2 * (ACTUAL_R * tan((360 / $fn) / 2)); - ANGLE = -atan( STEP_SIZE / (L / 2) ) / 2; - OFFSET = START_R - (W / 2) + SPIRAL_START_OFFSET + STEP_OFFSET; - - translate ([OFFSET, 0, - H / 2]) { - rotate ([0, 0, ANGLE]) { - //cube([W, L, H], center=true); - rotate([90, 0, 0]) equilateralTriangle(side = W, height = L, center = true); - } - } -} -//rotate([90, 0, 90]) equilateralTriangle(side = 2, height = 5, center = true); -//cube([5, 2, 2] ,center = true); - -module trapshape(L = 3) { - difference () { - cube([6, L, 4], center = true); - translate([2.8, 0, 2]) rotate([0, 45, 0]) cube([5, L + 1, 4], center = true); - translate([-2.8, 0, 2]) rotate([0, -45, 0]) cube([5, L + 1, 4], center = true); - } - -} - -module trapshape2 () { - difference () { - cube([5, 10, 8], center = true); - //mid - translate([0, 0, -4]) rotate([45, 0, 0]) cube([5 + 1, 7, 7], center = true); - //back (tank side) - translate([0, -5, 4]) rotate([45, 0, 0]) cube([5 + 1, 5, 5], center = true); - //front - translate([0, 5, 4]) rotate([45, 0, 0]) cube([5 + 1, 5, 5], center = true); - //top angles - translate([2.5, 0, 5]) rotate([0, 45, 0]) cube([5, 10, 5], center = true); - translate([-2.5, 0, 5]) rotate([0, 45, 0]) cube([5, 10, 5], center = true); - //front angles - translate([2.5, 0, 0]) rotate([-45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); - translate([-2.5, 0, 0]) rotate([-45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); - //back angles - translate([2.5, 0, 0]) rotate([45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); - translate([-2.5, 0, 0]) rotate([45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); - - } - -} - module funnel () { $fn = 50; difference () { @@ -195,13 +69,6 @@ module barbed_fitting () { } } -module center_piece () { - $fn = 60; - difference () { - cylinder(r = 5, h = 16.5 + 1, center = true); - cube([.5, 20, 16.5 + 1 + 1], center = true); - } -} module bend (R = 4) { difference () { @@ -213,96 +80,10 @@ module bend (R = 4) { } } -module tank_cover (thickness, DEBUG = false) { - $fn = 100; - //outer rim - difference () { - cylinder(r = (D / 2) + thickness + 2, h = 5, center = true); - translate([0, 0, 0]) cylinder(r = (D / 2) + thickness, h = 5 + 1, center = true); - if (DEBUG){ - translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); - } - } - //inner rim - translate([0, 0, 0.5]) difference () { - cylinder(r = (D / 2), h = 2, center = true); - translate([0, 0, 0]) cylinder(r = (D / 2) - 2, h = 2 + 1, center = true); - if (DEBUG){ - translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); - } - } - //connector - translate([0, 0, 2.5]) difference () { - cylinder(r = (D / 2) + thickness + 2, h = 2, center = true); - translate([0, 0, 0]) cylinder(r = (D / 2) - 2, h = 2 + 1, center = true); - if (DEBUG){ - translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); - } - } - //main funnel - translate([0, 0, 11]) difference () { - cylinder(r1 = (D / 2) + thickness + 2, r2 = 9, h = 15, center = true); - translate([0, 0, -.6]) cylinder(r1 = (D / 2) - 2, r2 = 7 - 2, h = 14, center = true); - cylinder(r = 7 - 2, h = 20 + 1, center = true); - if (DEBUG){ - translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); - } - } - //tube1 - translate([0, 0, 13.5]) difference () { - cylinder(r = 8, h = 10, center = true); - translate([0, 0, 0]) cylinder(r = 7 - 2, h = 10 + 1, center = true); - if (DEBUG){ - translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); - } - } -} - -module tank_inner (DEBUG = false) { - $fn = 100; - //under lattuce - for (i = [0 : 3]) { - rotate([0, 0, i * (360 / 3)]) cube([D - 5.5, 4, 2], center = true); - } - difference () { - cylinder(r = (D / 2) - 2.5, h = 2, center = true); - translate([0, 0, 0]) cylinder(r = (D / 2) - 5, h = 2 + 1, center = true); - if (DEBUG){ - translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); - } - } - translate([0, 0, 4]) difference () { - cylinder(r = 11, h = 10, center = true); - translate([0, 0, 2]) cylinder(r = 11 - 2, h = 10, center = true); - if (DEBUG){ - translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); - } - } -} +//translate([0, 0, 19]) reel(); +//translate([0, 0, 25]) tank_inner(); -module bottom () { - //spiral(START_D = 12, THICKNESS = 2, SPACING = .5, SPIRALS = 8, H = 3); - spiral_static_res(START_D = 12, THICKNESS = 2, SPACING = .5, SPIRALS = 8, H = 3); - translate ([0, 0, 1.55]) { - spiral_top(START_D = 12, THICKNESS = 2, SPACING = .5, SPIRALS = 8, H = 2); - } - } +rotate([0, 0, time]) tank(2); +//translate([0, 0, 39]) tank_cover(2); -module reel () { - $fn = 100; - translate([0, 0, -9]) for (i = [0 : 5]) { - rotate([0, 0, i * (360 / 5)]) cube([D - 3, 3, 2], center = true); - } - translate([0, 0, -9]) difference () { - cylinder(r = (D / 2) - 1.5, h = 2, center = true); - translate([0, 0, 0]) cylinder(r = (D / 2) - 5, h = 2 + 1, center = true); - } - translate([0, 0, -5.5]) bottom(); - translate([0, 0, -1]) rotate([0, 0, 85]) center_piece(0); -} - -translate([0, 0, 19]) reel(); -translate([0, 0, -1.25]) tank(2); -translate([0, 0, 39]) tank_cover(2); -translate([0, 0, 25]) tank_inner(); //rotate([180, 0, 0]) funnel(); \ No newline at end of file diff --git a/models/minolta16_tank_cover/minolta16_tank_cover.scad b/models/minolta16_tank_cover/minolta16_tank_cover.scad index e69de29..5995648 100644 --- a/models/minolta16_tank_cover/minolta16_tank_cover.scad +++ b/models/minolta16_tank_cover/minolta16_tank_cover.scad @@ -0,0 +1,48 @@ +time = 0; +D = 55; + +module tank_cover (thickness, DEBUG = false) { + $fn = 100; + //outer rim + difference () { + cylinder(r = (D / 2) + thickness + 2, h = 5, center = true); + translate([0, 0, 0]) cylinder(r = (D / 2) + thickness, h = 5 + 1, center = true); + if (DEBUG){ + translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); + } + } + //inner rim + translate([0, 0, 0.5]) difference () { + cylinder(r = (D / 2), h = 2, center = true); + translate([0, 0, 0]) cylinder(r = (D / 2) - 2, h = 2 + 1, center = true); + if (DEBUG){ + translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); + } + } + //connector + translate([0, 0, 2.5]) difference () { + cylinder(r = (D / 2) + thickness + 2, h = 2, center = true); + translate([0, 0, 0]) cylinder(r = (D / 2) - 2, h = 2 + 1, center = true); + if (DEBUG){ + translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); + } + } + //main funnel + translate([0, 0, 11]) difference () { + cylinder(r1 = (D / 2) + thickness + 2, r2 = 9, h = 15, center = true); + translate([0, 0, -.6]) cylinder(r1 = (D / 2) - 2, r2 = 7 - 2, h = 14, center = true); + cylinder(r = 7 - 2, h = 20 + 1, center = true); + if (DEBUG){ + translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); + } + } + //tube1 + translate([0, 0, 13.5]) difference () { + cylinder(r = 8, h = 10, center = true); + translate([0, 0, 0]) cylinder(r = 7 - 2, h = 10 + 1, center = true); + if (DEBUG){ + translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); + } + } +} +rotate([0, 0, time]) tank_cover(2); \ No newline at end of file diff --git a/models/minolta16_tank_reel/minolta16_tank_reel.scad b/models/minolta16_tank_reel/minolta16_tank_reel.scad index e69de29..9622df2 100644 --- a/models/minolta16_tank_reel/minolta16_tank_reel.scad +++ b/models/minolta16_tank_reel/minolta16_tank_reel.scad @@ -0,0 +1,160 @@ +time = 0; +D = 55; + +module equilateralTriangle (side=10, height=10, center=false){ + translate(center==true ? [-side/2,-sqrt(3)*side/6,-height/2] : [0,0,0]) + linear_extrude(height=height) + polygon(points=[[0,0],[side,0],[side/2,sqrt(3)*side/2]]); +} + +module spiral (START_D = 10, SPACING = 5, THICKNESS = 2, H = 10, SPIRALS = 39) { + $fn = 80; + START_R = START_D / 2; + ROT = (360 / $fn); + union () { + for (i = [0 : $fn]) { + rotate ([0, 0, i * ROT]) { + for (x = [0: (SPIRALS - 1)]) { + spiral_facet(i, x, START_R, SPACING, THICKNESS, H); + } + } + } + } +} + +module spiral_static_res (START_D = 10, SPACING = 5, THICKNESS = 2, H = 10, SPIRALS = 39) { + $fn = 80; + + START_R = START_D / 2; + + SPACING_MAX = ((SPIRALS - 1) * (SPACING + THICKNESS)); + STEP_SIZE = ((SPACING + THICKNESS) / $fn); + STEP_OFFSET_MAX = $fn * STEP_SIZE; + + MAX_R = START_R + SPACING_MAX + STEP_OFFSET_MAX; + echo(MAX_R); + + ROT = (360 / $fn); + for (x = [0 : (SPIRALS - 1)]) { + + for (i = [0 : $fn]) { + rotate ([0, 0, i * ROT]) spiral_facet(i, x, START_R, SPACING, THICKNESS, H); + } + } +} + +module spiral_facet (i, x, START_R, SPACING, W, H) { + STEP_SIZE = ((SPACING + W) / $fn); + + STEP_OFFSET = i * STEP_SIZE; + SPIRAL_START_OFFSET = (x * (SPACING + W)); + + ACTUAL_R = START_R + SPIRAL_START_OFFSET + STEP_OFFSET; + L = 2 * (ACTUAL_R * tan((360 / $fn) / 2)); + ANGLE = -atan( STEP_SIZE / (L / 2) ) / 2; + OFFSET = START_R - (W / 2) + SPIRAL_START_OFFSET + STEP_OFFSET; + + translate ([OFFSET, 0, - H / 2]) { + rotate ([0, 0, ANGLE]) { + cube([W, L, H], center=true); + } + } +} + +module spiral_top (START_D = 10, SPACING = 5, THICKNESS = 2, H = 10, SPIRALS = 39) { + $fn = 80; + START_R = START_D / 2; + union () { + for (i = [0 : $fn]) { + rotate ([0, 0, i * (360 / $fn)]) { + for (x = [0: (SPIRALS - 1)]) { + spiral_top_facet(i, x, START_R, SPACING, THICKNESS, H); + } + } + } + } +} + +module spiral_top_facet (i, x, START_R, SPACING, W, H) { + STEP_SIZE = ((SPACING + W) / $fn); + + STEP_OFFSET = i * STEP_SIZE; + SPIRAL_START_OFFSET = (x * (SPACING + W)); + + ACTUAL_R = START_R + SPIRAL_START_OFFSET + STEP_OFFSET; + L = 2 * (ACTUAL_R * tan((360 / $fn) / 2)); + ANGLE = -atan( STEP_SIZE / (L / 2) ) / 2; + OFFSET = START_R - (W / 2) + SPIRAL_START_OFFSET + STEP_OFFSET; + + translate ([OFFSET, 0, - H / 2]) { + rotate ([0, 0, ANGLE]) { + //cube([W, L, H], center=true); + rotate([90, 0, 0]) equilateralTriangle(side = W, height = L, center = true); + } + } +} +//rotate([90, 0, 90]) equilateralTriangle(side = 2, height = 5, center = true); +//cube([5, 2, 2] ,center = true); + +module trapshape(L = 3) { + difference () { + cube([6, L, 4], center = true); + translate([2.8, 0, 2]) rotate([0, 45, 0]) cube([5, L + 1, 4], center = true); + translate([-2.8, 0, 2]) rotate([0, -45, 0]) cube([5, L + 1, 4], center = true); + } + +} + +module trapshape2 () { + difference () { + cube([5, 10, 8], center = true); + //mid + translate([0, 0, -4]) rotate([45, 0, 0]) cube([5 + 1, 7, 7], center = true); + //back (tank side) + translate([0, -5, 4]) rotate([45, 0, 0]) cube([5 + 1, 5, 5], center = true); + //front + translate([0, 5, 4]) rotate([45, 0, 0]) cube([5 + 1, 5, 5], center = true); + //top angles + translate([2.5, 0, 5]) rotate([0, 45, 0]) cube([5, 10, 5], center = true); + translate([-2.5, 0, 5]) rotate([0, 45, 0]) cube([5, 10, 5], center = true); + //front angles + translate([2.5, 0, 0]) rotate([-45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); + translate([-2.5, 0, 0]) rotate([-45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); + //back angles + translate([2.5, 0, 0]) rotate([45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); + translate([-2.5, 0, 0]) rotate([45, 0, 0]) translate([0, 0, 5]) rotate([0, 45, 0]) cube([5, 11, 5], center = true); + + } + +} + +module center_piece () { + $fn = 60; + difference () { + cylinder(r = 5, h = 16.5 + 1, center = true); + cube([.5, 20, 16.5 + 1 + 1], center = true); + } +} + +module bottom () { + //spiral(START_D = 12, THICKNESS = 2, SPACING = .5, SPIRALS = 8, H = 3); + spiral_static_res(START_D = 12, THICKNESS = 2, SPACING = .5, SPIRALS = 8, H = 3); + translate ([0, 0, 1.55]) { + spiral_top(START_D = 12, THICKNESS = 2, SPACING = .5, SPIRALS = 8, H = 2); + } + } + +module reel () { + $fn = 100; + translate([0, 0, -9]) for (i = [0 : 5]) { + rotate([0, 0, i * (360 / 5)]) cube([D - 3, 3, 2], center = true); + } + translate([0, 0, -9]) difference () { + cylinder(r = (D / 2) - 1.5, h = 2, center = true); + translate([0, 0, 0]) cylinder(r = (D / 2) - 5, h = 2 + 1, center = true); + } + translate([0, 0, -5.5]) bottom(); + translate([0, 0, -1]) rotate([0, 0, 85]) center_piece(0); +} + +rotate([0, 0, time]) reel(); \ No newline at end of file diff --git a/models/minolta16_tank_reel_top/minolta16_tank_reel_top.scad b/models/minolta16_tank_reel_top/minolta16_tank_reel_top.scad new file mode 100644 index 0000000..98be3e7 --- /dev/null +++ b/models/minolta16_tank_reel_top/minolta16_tank_reel_top.scad @@ -0,0 +1,26 @@ +time = 0; +D = 55; + +module minolta16_tank_reel_top (DEBUG = false) { + $fn = 100; + //under lattuce + for (i = [0 : 3]) { + rotate([0, 0, i * (360 / 3)]) cube([D - 5.5, 4, 2], center = true); + } + difference () { + cylinder(r = (D / 2) - 2.5, h = 2, center = true); + translate([0, 0, 0]) cylinder(r = (D / 2) - 5, h = 2 + 1, center = true); + if (DEBUG){ + translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); + } + } + translate([0, 0, 4]) difference () { + cylinder(r = 11, h = 10, center = true); + translate([0, 0, 2]) cylinder(r = 11 - 2, h = 10, center = true); + if (DEBUG){ + translate([(D + 10) / 2, 0, 0]) cube([D + 10, D + 10, D + 10], center = true); + } + } +} + +rotate([0, 0, time]) minolta16_tank_reel_top(); \ No newline at end of file