Compare commits
No commits in common. "facee903cf8b858d8478f7c35e8c09425052a844" and "42f417d86a3684dc78fa63500eee7f62afb2d6f2" have entirely different histories.
facee903cf
...
42f417d86a
10
TODO.md
10
TODO.md
@ -1,10 +0,0 @@
|
||||
# TODO
|
||||
|
||||
Notes for "next time".
|
||||
|
||||
## v2
|
||||
|
||||
* I need at least 5mm, maybe 10mm, more height, to fit some of my levers like the Nobi Bullet
|
||||
* The panels' connection points could probably be a bit thinner to accommodate more bolts. A 20mm bolt barely clears the
|
||||
two panels and I don't like that kind of bolt connection.
|
||||
* Engraving some cosmetic stuff? Or maybe a place to mount other plates?
|
@ -1,25 +0,0 @@
|
||||
/* Copyright Brian Stephan 2023
|
||||
*
|
||||
* This file is part of bullet-system-stick.
|
||||
*
|
||||
* bullet-system-stick 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 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* bullet-system-stick 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
|
||||
* bullet-system-stick. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
include <components.scad>
|
||||
|
||||
module bottom_panel() {
|
||||
mirror([0, 0, 1]) topplate();
|
||||
}
|
||||
|
||||
bottom_panel();
|
@ -16,16 +16,11 @@
|
||||
* bullet-system-stick. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
include <roundedcube.scad>
|
||||
|
||||
/* QUASI-CONSTANTS */
|
||||
|
||||
// adjustments
|
||||
hole_tolerance = 0.15;
|
||||
|
||||
// M3
|
||||
m3_screw_selftap_radius = 1.3;
|
||||
|
||||
// M4
|
||||
m4_bolt_radius = 2 + hole_tolerance;
|
||||
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
|
||||
@ -37,15 +32,10 @@ small_button_radius = 12 + hole_tolerance;
|
||||
// 30mm button
|
||||
big_button_radius = 15 + hole_tolerance;
|
||||
|
||||
// JLF mount dimensions
|
||||
lever_mount_x = 53;
|
||||
lever_mount_y = 95;
|
||||
lever_mount_z = 2;
|
||||
|
||||
// case dimensions
|
||||
frame_x = 183;
|
||||
frame_y = 208;
|
||||
frame_z = 45; // reminder: inside (including mounts) is chopped by top_plate_z for plates
|
||||
frame_x = 185;
|
||||
frame_y = 210;
|
||||
frame_z = 45;
|
||||
top_plate_x = 175;
|
||||
top_plate_y = 200;
|
||||
top_plate_z = 5;
|
||||
@ -94,26 +84,12 @@ module neutrik_d_mount() {
|
||||
translate([-9.5, -12, 0]) neutrik_d_screw_hole();
|
||||
}
|
||||
|
||||
module m3_mount_post() {
|
||||
difference() {
|
||||
cylinder(r=m3_screw_selftap_radius*4, h=8, $fn=6, center=true);
|
||||
cylinder(r=m3_screw_selftap_radius, h=8*2, $fn=50, center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module pcb_mount() {
|
||||
translate([44, 18.5, 0]) m3_mount_post();
|
||||
translate([44, -18.5, 0]) m3_mount_post();
|
||||
translate([-44, 18.5, 0]) m3_mount_post();
|
||||
translate([-44, -18.5, 0]) m3_mount_post();
|
||||
}
|
||||
|
||||
/* PIECES */
|
||||
|
||||
module levermountbase() {
|
||||
difference() {
|
||||
// base plate
|
||||
cube([lever_mount_x, lever_mount_y, lever_mount_z], center=true);
|
||||
cube([53,95,3], center=true);
|
||||
// joystick hole
|
||||
cylinder(r=21, h=3.1, $fn=50, center=true);
|
||||
}
|
||||
@ -174,8 +150,8 @@ module topplate() {
|
||||
|
||||
module frame_box() {
|
||||
difference() {
|
||||
roundedcube([frame_x, frame_y, frame_z], center=true, radius=3);
|
||||
cube([frame_x-26, frame_y-26, frame_z+5], center=true);
|
||||
cube([frame_x, frame_y, frame_z], center=true);
|
||||
cube([160, 185, frame_z+5], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -183,8 +159,15 @@ module frame_mount_column() {
|
||||
cube([20, 20, frame_z], center=true);
|
||||
}
|
||||
|
||||
module frame_panel_surround() {
|
||||
difference() {
|
||||
cube([frame_x, frame_y, top_plate_z], center=true);
|
||||
scale([1, 1, 2]) base_topplate();
|
||||
}
|
||||
}
|
||||
|
||||
module frame_side_chopper() {
|
||||
translate([frame_x/2, 0, 0]) cube([8, 2*(frame_y+top_plate_y), 2*(frame_z+top_plate_z)], center=true);
|
||||
translate([frame_x/2, 0, 0]) cube([10.001, 2*(frame_y+top_plate_y), 2*(frame_z+top_plate_z)], center=true);
|
||||
}
|
||||
|
||||
module frame_connection_holes() {
|
||||
@ -205,6 +188,8 @@ module frame_cable_routing_hole() {
|
||||
|
||||
module base_frame() {
|
||||
frame_box();
|
||||
translate([0, 0, frame_z/2 + top_plate_z/2])
|
||||
frame_panel_surround();
|
||||
translate([(top_plate_x/2)-10, (top_plate_y/2)-10, 0])
|
||||
frame_mount_column();
|
||||
translate([-((top_plate_x/2)-10), (top_plate_y/2)-10, 0])
|
||||
@ -218,7 +203,6 @@ module base_frame() {
|
||||
module frame() {
|
||||
difference() {
|
||||
base_frame();
|
||||
translate([0, 0, frame_z/2]) scale([1, 1, 2]) base_topplate();
|
||||
translate([(top_plate_x/2)-10, (top_plate_y/2)-10, 0])
|
||||
frame_hex_bolt_hole();
|
||||
translate([-((top_plate_x/2)-10), (top_plate_y/2)-10, 0])
|
||||
@ -227,9 +211,6 @@ module frame() {
|
||||
frame_hex_bolt_hole();
|
||||
translate([-((top_plate_x/2)-10), -((top_plate_y/2)-10), 0])
|
||||
frame_hex_bolt_hole();
|
||||
|
||||
// thin up the mount point to accommodate snap-ins, ethercon adapter
|
||||
translate([0, 10, 10]) cube([120, 180, 60], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,15 +30,10 @@ module left_frame() {
|
||||
difference() {
|
||||
base_left_frame();
|
||||
// connection holes to other frames
|
||||
translate([0, 0, -top_plate_z/2]) frame_connection_holes();
|
||||
frame_connection_holes();
|
||||
|
||||
// cable routing hole
|
||||
translate([0, 0, -top_plate_z/2]) frame_cable_routing_hole();
|
||||
|
||||
// aux button holes
|
||||
translate([0, 100, 0]) rotate([90, 0, 0]) button_24mm_hole();
|
||||
translate([-40, 100, 0]) rotate([90, 0, 0]) button_24mm_hole();
|
||||
translate([40, 100, 0]) rotate([90, 0, 0]) button_24mm_hole();
|
||||
frame_cable_routing_hole();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
include <components.scad>
|
||||
|
||||
module base_middle_frame() {
|
||||
module middle_frame() {
|
||||
difference() {
|
||||
frame();
|
||||
// chop the left and right edge off
|
||||
@ -27,22 +27,18 @@ module base_middle_frame() {
|
||||
}
|
||||
}
|
||||
|
||||
module middle_frame() {
|
||||
difference() {
|
||||
base_middle_frame();
|
||||
// connection holes to other frames
|
||||
translate([0, 0, -top_plate_z/2]) frame_connection_holes();
|
||||
translate([0, 0, -top_plate_z/2]) mirror([1, 0, 0]) frame_connection_holes();
|
||||
difference() {
|
||||
middle_frame();
|
||||
// connection holes to other frames
|
||||
frame_connection_holes();
|
||||
mirror([1, 0, 0]) frame_connection_holes();
|
||||
|
||||
// cable routing holes
|
||||
translate([0, 0, -top_plate_z/2]) frame_cable_routing_hole();
|
||||
translate([0, 0, -top_plate_z/2]) mirror([1, 0, 0]) frame_cable_routing_hole();
|
||||
// cable routing holes
|
||||
frame_cable_routing_hole();
|
||||
mirror([1, 0, 0]) frame_cable_routing_hole();
|
||||
|
||||
// neutrik mounts for connector, switches
|
||||
translate([0, 100, 0]) rotate([90, 0, 0]) neutrik_d_mount();
|
||||
translate([-40, 100, 0]) rotate([90, 0, 0]) neutrik_d_mount();
|
||||
translate([40, 100, 0]) rotate([90, 0, 0]) neutrik_d_mount();
|
||||
}
|
||||
// neutrik mounts for connector, switches
|
||||
translate([0, 100, 0]) rotate([90, 0, 0]) neutrik_d_mount();
|
||||
translate([-40, 100, 0]) rotate([90, 0, 0]) neutrik_d_mount();
|
||||
translate([40, 100, 0]) rotate([90, 0, 0]) neutrik_d_mount();
|
||||
}
|
||||
|
||||
middle_frame();
|
||||
|
@ -1,26 +0,0 @@
|
||||
/* Copyright Brian Stephan 2023
|
||||
*
|
||||
* This file is part of bullet-system-stick.
|
||||
*
|
||||
* bullet-system-stick 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 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* bullet-system-stick 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
|
||||
* bullet-system-stick. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
include <components.scad>
|
||||
use <frame-left.scad>
|
||||
|
||||
module right_frame() {
|
||||
mirror([1, 0, 0]) left_frame();
|
||||
}
|
||||
|
||||
right_frame();
|
@ -1,55 +0,0 @@
|
||||
// More information: https://danielupshaw.com/openscad-rounded-corners/
|
||||
|
||||
// Set to 0.01 for higher definition curves (renders slower)
|
||||
$fs = 0.15;
|
||||
|
||||
module roundedcube(size = [1, 1, 1], center = false, radius = 0.5, apply_to = "all") {
|
||||
// If single value, convert to [x, y, z] vector
|
||||
size = (size[0] == undef) ? [size, size, size] : size;
|
||||
|
||||
translate_min = radius;
|
||||
translate_xmax = size[0] - radius;
|
||||
translate_ymax = size[1] - radius;
|
||||
translate_zmax = size[2] - radius;
|
||||
|
||||
diameter = radius * 2;
|
||||
|
||||
obj_translate = (center == false) ?
|
||||
[0, 0, 0] : [
|
||||
-(size[0] / 2),
|
||||
-(size[1] / 2),
|
||||
-(size[2] / 2)
|
||||
];
|
||||
|
||||
translate(v = obj_translate) {
|
||||
hull() {
|
||||
for (translate_x = [translate_min, translate_xmax]) {
|
||||
x_at = (translate_x == translate_min) ? "min" : "max";
|
||||
for (translate_y = [translate_min, translate_ymax]) {
|
||||
y_at = (translate_y == translate_min) ? "min" : "max";
|
||||
for (translate_z = [translate_min, translate_zmax]) {
|
||||
z_at = (translate_z == translate_min) ? "min" : "max";
|
||||
|
||||
translate(v = [translate_x, translate_y, translate_z])
|
||||
if (
|
||||
(apply_to == "all") ||
|
||||
(apply_to == "xmin" && x_at == "min") || (apply_to == "xmax" && x_at == "max") ||
|
||||
(apply_to == "ymin" && y_at == "min") || (apply_to == "ymax" && y_at == "max") ||
|
||||
(apply_to == "zmin" && z_at == "min") || (apply_to == "zmax" && z_at == "max")
|
||||
) {
|
||||
sphere(r = radius);
|
||||
} else {
|
||||
rotate =
|
||||
(apply_to == "xmin" || apply_to == "xmax" || apply_to == "x") ? [0, 90, 0] : (
|
||||
(apply_to == "ymin" || apply_to == "ymax" || apply_to == "y") ? [90, 90, 0] :
|
||||
[0, 0, 0]
|
||||
);
|
||||
rotate(a = rotate)
|
||||
cylinder(h = diameter, r = radius, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -25,16 +25,12 @@ module left_lever_panel() {
|
||||
union() {
|
||||
translate([20,-20,0])
|
||||
topplate();
|
||||
translate([0, 0, -((top_plate_z/2)+(lever_mount_z/2))]) levermountbase();
|
||||
translate([0,0,-4])
|
||||
levermountbase();
|
||||
}
|
||||
// holes to mount the lever
|
||||
levermountholes();
|
||||
}
|
||||
}
|
||||
|
||||
module left_lever_panel_with_mount() {
|
||||
left_lever_panel();
|
||||
translate([0, -top_plate_y/2+25, -(top_plate_z/2) - 3]) pcb_mount();
|
||||
}
|
||||
|
||||
left_lever_panel_with_mount();
|
||||
left_lever_panel();
|
||||
|
@ -1,41 +0,0 @@
|
||||
/* Copyright Brian Stephan 2023
|
||||
*
|
||||
* This file is part of bullet-system-stick.
|
||||
*
|
||||
* bullet-system-stick 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 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* bullet-system-stick 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
|
||||
* bullet-system-stick. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
include <components.scad>
|
||||
|
||||
// combine the lever mount and generic plate, with mounting holes
|
||||
module lever_panel() {
|
||||
difference() {
|
||||
// base plate
|
||||
union() {
|
||||
translate([0,-20,0])
|
||||
topplate();
|
||||
translate([0, 0, -((top_plate_z/2)+(lever_mount_z/2))])
|
||||
levermountbase();
|
||||
}
|
||||
// holes to mount the lever
|
||||
levermountholes();
|
||||
}
|
||||
}
|
||||
|
||||
module lever_panel_with_mount() {
|
||||
lever_panel();
|
||||
translate([0, -top_plate_y/2+25, -(top_plate_z/2) - 3]) pcb_mount();
|
||||
}
|
||||
|
||||
lever_panel_with_mount();
|
Loading…
x
Reference in New Issue
Block a user