4 changed files with 0 additions and 132 deletions
Binary file not shown.
Binary file not shown.
@ -1,126 +0,0 @@ |
|||
/* |
|||
* Star Adventurer Upgrades - Vixen Dovetail Bar |
|||
* |
|||
* Copyright (c) 2021 Steve Cross <flip@foxhollow.cc> |
|||
* |
|||
* This program is free software; you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation; either version 2 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License along |
|||
* with this program; if not, write to the Free Software Foundation, Inc., |
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
|||
*/ |
|||
|
|||
dis_color="#2f99a7"; |
|||
|
|||
channel_height = 15; // mm, actual: 15mm |
|||
channel_width = 44; // mm, actual: 44 mm |
|||
channel_angle = 15; // degrees, actual: 15° |
|||
|
|||
// how long the final bar is to be, in mm |
|||
channel_length = 200; // [20:10:200] |
|||
|
|||
punch_hole_offset = 15; |
|||
punch_hole_d = 6.75; // actual: 6.35 mm |
|||
punch_head_d = 10; // actual: 9.50 mm |
|||
punch_head_h = 7.5; // actual: 6.40 mm |
|||
|
|||
punch_slot_count = 4; |
|||
|
|||
$fn = 360; |
|||
|
|||
// flip_upside_down(channel_height) |
|||
make_vixen_dovetail_bar(channel_length); |
|||
|
|||
module make_vixen_dovetail_bar(length, width = channel_width) |
|||
{ |
|||
difference() { |
|||
make_base_vixen_dovetail_bar(length); |
|||
|
|||
translate([channel_width/2, 0, 0]) |
|||
make_all_slots(); |
|||
} |
|||
} |
|||
|
|||
module make_all_slots() { |
|||
length = (channel_length - (punch_hole_offset * (punch_slot_count+1))) / punch_slot_count; |
|||
// echo (length); |
|||
|
|||
for (i = [1:punch_slot_count]) { |
|||
translate([ |
|||
-punch_head_d/2, // shift to offset the width of the slot |
|||
(i*punch_hole_offset) + ((i-1)*length), // lay out lengthwise along the bar |
|||
0 |
|||
]) |
|||
make_dovetail_slot(length); |
|||
} |
|||
} |
|||
|
|||
module flip_upside_down(height) { |
|||
translate([0, 0, height]) |
|||
mirror([0, 0, 1]) |
|||
children(); |
|||
} |
|||
|
|||
module cylinder2(h, d) { |
|||
translate([d/2, d/2, 0]) |
|||
cylinder(h=h, d=d); |
|||
} |
|||
|
|||
module make_dovetail_slot(length) { |
|||
translate([punch_head_d/2, punch_head_d/2, 0]) { |
|||
|
|||
hull() { |
|||
cylinder(h= channel_height + 2, d= punch_hole_d); |
|||
|
|||
// translate([0, length-punch_hole_d/2, 0]) |
|||
translate([0, length-punch_head_d, 0]) |
|||
cylinder(h= channel_height + 2, d= punch_hole_d); |
|||
} |
|||
|
|||
translate([0, 0, -1]) |
|||
hull() { |
|||
cylinder(h=punch_head_h+1, d=punch_head_d); |
|||
|
|||
// translate([0, length-punch_hole_d/2, 0]) |
|||
translate([0, length-punch_head_d, 0]) |
|||
cylinder(h=punch_head_h+1, d=punch_head_d); |
|||
} |
|||
} |
|||
} |
|||
|
|||
module make_base_vixen_dovetail_bar(length, width = channel_width, height = channel_height, angle = channel_angle, oversize = 0) { |
|||
// side_a |
|||
// ______ |
|||
// | / |
|||
// | / |
|||
// | / side_c |
|||
// | / |
|||
// |/ |
|||
// angle_a |
|||
// |
|||
// side_c = side_b / cos(angle_a) |
|||
// side_a = sqrt(sq(side_c) - sq(side_b)) |
|||
// |
|||
|
|||
side_c=height / cos(angle); // echo(side_c); |
|||
side_a = sqrt(pow(side_c, 2) - pow(height, 2)); // echo (side_a); |
|||
|
|||
translate([0, length, 0]) |
|||
rotate([90, 0, 0]) |
|||
linear_extrude(height = length) |
|||
polygon(points=[ |
|||
// [x, z] |
|||
[0, 0], // bottom left |
|||
[side_a, height], // top left |
|||
[width-side_a+oversize, height], // top right |
|||
[width+oversize, 0] // bottom right |
|||
]); |
|||
} |
Loading…
Reference in new issue