Compare commits
No commits in common. "42f417d86a3684dc78fa63500eee7f62afb2d6f2" and "f7e706c21d38a806222e7223811128a649f9949a" have entirely different histories.
42f417d86a
...
f7e706c21d
@ -19,31 +19,16 @@
|
|||||||
/* QUASI-CONSTANTS */
|
/* QUASI-CONSTANTS */
|
||||||
|
|
||||||
// adjustments
|
// adjustments
|
||||||
hole_tolerance = 0.15;
|
hole_tolerance = 0.25;
|
||||||
|
|
||||||
// M4
|
// M4
|
||||||
m4_bolt_radius = 2 + hole_tolerance;
|
m4_bolt_radius = 2 + hole_tolerance;
|
||||||
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
|
m4_bolt_countersink_radius = 6 + hole_tolerance;
|
||||||
m4_bolt_hex_exterior_radius = 3.6 + hole_tolerance;
|
m4_bolt_hex_exterior = 3.5 + hole_tolerance;
|
||||||
|
|
||||||
// 24mm button
|
// 24mm button
|
||||||
small_button_radius = 12 + hole_tolerance;
|
small_button_radius = 12 + hole_tolerance;
|
||||||
|
|
||||||
// 30mm button
|
|
||||||
big_button_radius = 15 + hole_tolerance;
|
|
||||||
|
|
||||||
// case dimensions
|
|
||||||
frame_x = 185;
|
|
||||||
frame_y = 210;
|
|
||||||
frame_z = 45;
|
|
||||||
top_plate_x = 175;
|
|
||||||
top_plate_y = 200;
|
|
||||||
top_plate_z = 5;
|
|
||||||
|
|
||||||
// neutrik D screw holes
|
|
||||||
neutrik_d_screw_radius = 1.6 + hole_tolerance;
|
|
||||||
neutrik_d_radius = 12 + hole_tolerance;
|
|
||||||
|
|
||||||
/* PARTS */
|
/* PARTS */
|
||||||
|
|
||||||
module m4_hole() {
|
module m4_hole() {
|
||||||
@ -51,39 +36,13 @@ module m4_hole() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module m4_hole_countersink() {
|
module m4_hole_countersink() {
|
||||||
cylinder(r1=m4_bolt_radius, r2=m4_bolt_countersink_radius, h=3.2, $fn=50, center=true);
|
cylinder(r1=m4_bolt_radius, r2=m4_bolt_countersink_radius, h=3.1, $fn=50, center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
module button_24mm_hole() {
|
module button_24mm_hole() {
|
||||||
cylinder(r=small_button_radius, h=100, $fn=50, center=true);
|
cylinder(r=small_button_radius, h=100, $fn=50, center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
module button_30mm_hole() {
|
|
||||||
cylinder(r=big_button_radius, h=100, $fn=50, center=true);
|
|
||||||
}
|
|
||||||
|
|
||||||
module frame_hex_bolt_hole() {
|
|
||||||
scale([1, 1, 2]) cylinder(r=m4_bolt_hex_exterior_radius, h=frame_z, $fn=6, center=true);
|
|
||||||
}
|
|
||||||
|
|
||||||
module frame_interchange_hole() {
|
|
||||||
cylinder(r=15, h=50, $fn=50, center=true);
|
|
||||||
}
|
|
||||||
|
|
||||||
module neutrik_d_hole() {
|
|
||||||
cylinder(r=neutrik_d_radius, h=100, $fn=50, center=true);
|
|
||||||
}
|
|
||||||
|
|
||||||
module neutrik_d_screw_hole() {
|
|
||||||
cylinder(r=neutrik_d_screw_radius, h=100, $fn=50, center=true);
|
|
||||||
}
|
|
||||||
|
|
||||||
module neutrik_d_mount() {
|
|
||||||
neutrik_d_hole();
|
|
||||||
translate([9.5, 12, 0]) neutrik_d_screw_hole();
|
|
||||||
translate([-9.5, -12, 0]) neutrik_d_screw_hole();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* PIECES */
|
/* PIECES */
|
||||||
|
|
||||||
module levermountbase() {
|
module levermountbase() {
|
||||||
@ -121,7 +80,7 @@ module levermountholes() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module base_topplate() {
|
module base_topplate() {
|
||||||
cube([top_plate_x, top_plate_y, top_plate_z], center=true);
|
cube([175,200,5], center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
module topplate() {
|
module topplate() {
|
||||||
@ -147,109 +106,3 @@ module topplate() {
|
|||||||
m4_hole_countersink();
|
m4_hole_countersink();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module frame_box() {
|
|
||||||
difference() {
|
|
||||||
cube([frame_x, frame_y, frame_z], center=true);
|
|
||||||
cube([160, 185, frame_z+5], center=true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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([10.001, 2*(frame_y+top_plate_y), 2*(frame_z+top_plate_z)], center=true);
|
|
||||||
}
|
|
||||||
|
|
||||||
module frame_connection_holes() {
|
|
||||||
translate([frame_x/2, (frame_y/4)+10, (frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
translate([frame_x/2, (frame_y/4)+10, -(frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
translate([frame_x/2, (frame_y/4)-10, (frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
translate([frame_x/2, (frame_y/4)-10, -(frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
|
|
||||||
translate([frame_x/2, -((frame_y/4)+10), (frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
translate([frame_x/2, -((frame_y/4)+10), -(frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
translate([frame_x/2, -((frame_y/4)-10), (frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
translate([frame_x/2, -((frame_y/4)-10), -(frame_z/4)]) rotate([0, 90, 0]) m4_hole();
|
|
||||||
}
|
|
||||||
|
|
||||||
module frame_cable_routing_hole() {
|
|
||||||
translate([frame_x/2, 0, 0]) rotate([0, 90, 0]) frame_interchange_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])
|
|
||||||
frame_mount_column();
|
|
||||||
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])
|
|
||||||
frame_mount_column();
|
|
||||||
}
|
|
||||||
|
|
||||||
module frame() {
|
|
||||||
difference() {
|
|
||||||
base_frame();
|
|
||||||
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])
|
|
||||||
frame_hex_bolt_hole();
|
|
||||||
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])
|
|
||||||
frame_hex_bolt_hole();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LAYOUTS */
|
|
||||||
|
|
||||||
module noir_button_p1() {
|
|
||||||
translate([40, 145, 0]) button_30mm_hole();
|
|
||||||
}
|
|
||||||
|
|
||||||
module noir_plus_one() {
|
|
||||||
// standard 8 (all relative to the first button) (via r/fightsticks)
|
|
||||||
noir_button_p1();
|
|
||||||
translate([32.94, 7.37+4.49, 0]) noir_button_p1();
|
|
||||||
translate([32.94+34.54, 7.37, 0]) noir_button_p1();
|
|
||||||
translate([32.94+34.54+33.02, -6.86, 0]) noir_button_p1();
|
|
||||||
translate([-3.47, -6.86-19.64-4.32-7.62, 0]) noir_button_p1();
|
|
||||||
translate([29.38, -6.86-19.64, 0]) noir_button_p1();
|
|
||||||
translate([29.38+3.56+31.24, -6.86-19.64-4.32, 0]) noir_button_p1();
|
|
||||||
translate([29.38+3.56+31.24+3.3+29.04, -6.86-19.64-4.32-7.62-6.93, 0]) noir_button_p1();
|
|
||||||
|
|
||||||
// just my guesstimate on this one, but note that this is the same position as sega 2p
|
|
||||||
translate([-3.47-3.47, -78, 0]) noir_button_p1();
|
|
||||||
}
|
|
||||||
|
|
||||||
module sega_2p_p1() {
|
|
||||||
translate([33.06, 145, 0]) button_30mm_hole();
|
|
||||||
}
|
|
||||||
|
|
||||||
module sega_2p_plus_one() {
|
|
||||||
// via slagcoin
|
|
||||||
sega_2p_p1();
|
|
||||||
translate([30.5, 11+9, 0]) sega_2p_p1();
|
|
||||||
translate([30.5+36, 11+9, 0]) sega_2p_p1();
|
|
||||||
translate([30.5+36+36, 11, 0]) sega_2p_p1();
|
|
||||||
translate([0, -19-9-11, 0]) sega_2p_p1();
|
|
||||||
translate([30.5, -19, 0]) sega_2p_p1();
|
|
||||||
translate([30.5+36, -19, 0]) sega_2p_p1();
|
|
||||||
translate([30.5+36+36, -19-9, 0]) sega_2p_p1();
|
|
||||||
|
|
||||||
// just my guesstimate on this one, but note that this is the same position as sega 2p
|
|
||||||
translate([0, -19-9-11-19-9-11, 0]) sega_2p_p1();
|
|
||||||
}
|
|
||||||
|
@ -1,40 +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 base_left_frame() {
|
|
||||||
difference() {
|
|
||||||
frame();
|
|
||||||
// chop the right edge off
|
|
||||||
frame_side_chopper();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module left_frame() {
|
|
||||||
difference() {
|
|
||||||
base_left_frame();
|
|
||||||
// connection holes to other frames
|
|
||||||
frame_connection_holes();
|
|
||||||
|
|
||||||
// cable routing hole
|
|
||||||
frame_cable_routing_hole();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
left_frame();
|
|
@ -1,44 +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 middle_frame() {
|
|
||||||
difference() {
|
|
||||||
frame();
|
|
||||||
// chop the left and right edge off
|
|
||||||
frame_side_chopper();
|
|
||||||
mirror([1, 0, 0]) frame_side_chopper();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
difference() {
|
|
||||||
middle_frame();
|
|
||||||
// connection holes to other frames
|
|
||||||
frame_connection_holes();
|
|
||||||
mirror([1, 0, 0]) frame_connection_holes();
|
|
||||||
|
|
||||||
// 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();
|
|
||||||
}
|
|
@ -19,7 +19,7 @@
|
|||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
// combine the lever mount and generic plate, with mounting holes
|
// combine the lever mount and generic plate, with mounting holes
|
||||||
module left_lever_panel() {
|
module leverplate() {
|
||||||
difference() {
|
difference() {
|
||||||
// base plate
|
// base plate
|
||||||
union() {
|
union() {
|
||||||
@ -33,4 +33,9 @@ module left_lever_panel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
left_lever_panel();
|
// put a 24mm hole in the lever plate just as a test
|
||||||
|
difference() {
|
||||||
|
leverplate();
|
||||||
|
translate([70,0,0])
|
||||||
|
button_24mm_hole();
|
||||||
|
}
|
@ -1,28 +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 namco_noir_plus_one_panel() {
|
|
||||||
difference() {
|
|
||||||
translate([top_plate_x/2, top_plate_y/2, 0]) topplate();
|
|
||||||
noir_plus_one();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
namco_noir_plus_one_panel();
|
|
@ -1,28 +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 sega_2p_plus_one_panel() {
|
|
||||||
difference() {
|
|
||||||
translate([top_plate_x/2, top_plate_y/2, 0]) topplate();
|
|
||||||
sega_2p_plus_one();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sega_2p_plus_one_panel();
|
|
Loading…
x
Reference in New Issue
Block a user