Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
f4c9c91d91
|
|||
|
bbe1ab25d7
|
|||
|
cb82933e50
|
|||
|
a1fc85c069
|
|||
|
850bbdf5b9
|
|||
|
7e42129594
|
|||
|
66719f84c6
|
|||
|
184664cceb
|
|||
|
903b9b40ff
|
|||
|
9fd3658518
|
|||
|
bd7b908712
|
|||
|
61a67109ce
|
|||
|
ff85423cee
|
29
CHANGELOG.md
29
CHANGELOG.md
@@ -2,6 +2,35 @@
|
|||||||
|
|
||||||
Included is a summary of changes to the project, by version. Details can be found in the commit history.
|
Included is a summary of changes to the project, by version. Details can be found in the commit history.
|
||||||
|
|
||||||
|
## v4.4.2
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
* Fix a regression with the small button screw-in space cutting into the frame wall supports. The screw-in space is
|
||||||
|
potentially more important for some nuts than the thickness of the frame wall supports, so the latter have been
|
||||||
|
thinned slightly.
|
||||||
|
|
||||||
|
## v4.4.1
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* A new lever + Sega 2P 6 button panel has been added. The overhang version hadn't been updated in forever, but the
|
||||||
|
inset panel moved stuff around in a way that allowed a couple aux buttons to fit in, so those have been added to the
|
||||||
|
overhang panel as well.
|
||||||
|
* A horizontal stripe frame windowed piece has been added. YMMV may vary a bit on this vs. an empty window --- you can
|
||||||
|
see less of the inner object with the stripes, but it's a bit more stable.
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* The frame wall slashes have been made a bit more reusable.
|
||||||
|
* The area around button holes for screw-ins has been tweaked to be a bit smaller for 30mm buttons and a bit larger for
|
||||||
|
24mm buttons.
|
||||||
|
|
||||||
|
### Miscellaneous
|
||||||
|
|
||||||
|
* A bottom overhang panel was positioned incorrectly in the demo file; this has been fixed.
|
||||||
|
* Added a demo of the one-panel overhang lever + 6 button stick.
|
||||||
|
|
||||||
## v4.4.0
|
## v4.4.0
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|||||||
3
Makefile
3
Makefile
@@ -1,7 +1,8 @@
|
|||||||
all:
|
all:
|
||||||
python build.py
|
python build.py
|
||||||
mkdir -p ./build/docs
|
mkdir -p ./build/docs
|
||||||
cp ./docs/README-objects.md ./build/README.md
|
cp ./README.md ./build/README.md
|
||||||
|
cp ./docs/README-objects.md ./build/README-objects.md
|
||||||
cp ./docs/assembly-and-tips.md ./build/docs/assembly-and-tips.md
|
cp ./docs/assembly-and-tips.md ./build/docs/assembly-and-tips.md
|
||||||
cp ./docs/printing-and-materials.md ./build/docs/printing-and-materials.md
|
cp ./docs/printing-and-materials.md ./build/docs/printing-and-materials.md
|
||||||
cp ./LICENSE ./build/LICENSE
|
cp ./LICENSE ./build/LICENSE
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -67,6 +67,9 @@ about what the types of parts are and how to use them:
|
|||||||
* Various experiments and things not directly related to making an arcade stick. At time of writing, there's a
|
* Various experiments and things not directly related to making an arcade stick. At time of writing, there's a
|
||||||
couple pieces for a little stand for the stick, solely for vanity purposes.
|
couple pieces for a little stand for the stick, solely for vanity purposes.
|
||||||
|
|
||||||
|
Feel free to request or contribute to more objects. Additional documentation regarding assembling the stick is available
|
||||||
|
in `docs/assembly-and-tips.md`.
|
||||||
|
|
||||||
## Printing
|
## Printing
|
||||||
|
|
||||||
These items all fit on a 256mm^2 print bed; I use a Bambu Lab P1P based on what I've learned from the
|
These items all fit on a 256mm^2 print bed; I use a Bambu Lab P1P based on what I've learned from the
|
||||||
@@ -161,12 +164,13 @@ to hang out and discuss issues and features and whatnot.
|
|||||||
|
|
||||||
Written by and copyright Brian S. Stephan (<bss@incorporeal.org>).
|
Written by and copyright Brian S. Stephan (<bss@incorporeal.org>).
|
||||||
|
|
||||||
The Buildable Stick System is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
The Buildable Stick System is free software: you can redistribute it and/or modify it under the terms of the GNU General
|
||||||
License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
|
Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
|
||||||
version.
|
later version.
|
||||||
|
|
||||||
The Buildable Stick System is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
The Buildable Stick System is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
|
||||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
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 the Buildable Stick System. If not, see
|
You should have received a copy of the GNU General Public License along with the Buildable Stick System. If not, see
|
||||||
<https://www.gnu.org/licenses/>.
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|||||||
4
TODO.md
4
TODO.md
@@ -5,3 +5,7 @@ Notes for "next time".
|
|||||||
## v4.x
|
## v4.x
|
||||||
|
|
||||||
* Engraving some cosmetic stuff? Or maybe a place to mount other plates on the top?
|
* Engraving some cosmetic stuff? Or maybe a place to mount other plates on the top?
|
||||||
|
|
||||||
|
## v5
|
||||||
|
|
||||||
|
* Finishing the build123d rewrite?
|
||||||
|
|||||||
28
demo/all-together-demo-solo.scad
Normal file
28
demo/all-together-demo-solo.scad
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <frames/pieces/extended/front-or-back.scad>
|
||||||
|
use <frames/pieces/extended/side-extended-to-bottom.scad>
|
||||||
|
use <frames/pieces/extended/front-or-back-clean-for-extended-side-aux-and-neutrik.scad>
|
||||||
|
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||||
|
use <panels/inset/lever-and-sega-2p-6-button-panel-with-aux-with-mount.scad>
|
||||||
|
use <misc/dustwasher-jlf.scad>
|
||||||
|
|
||||||
|
top_panel_color = "#5B6579";
|
||||||
|
bottom_panel_color = "#8E9089";
|
||||||
|
frame_top_bottom_color = "#8E9089";
|
||||||
|
frame_side_color = "#8E9089";
|
||||||
|
top_deco_color = "#000000";
|
||||||
|
|
||||||
|
color(top_panel_color) translate([0, 0, frame_z/2-panel_z+0.01]) lever_and_sega_2p_6_button_panel_with_aux_with_mount();
|
||||||
|
color(frame_side_color) translate([0, 0, -2.5]) extra_extended_left_or_right_frame_piece();
|
||||||
|
color(frame_side_color) translate([0, 0, -2.5]) mirror([1, 0, 0]) extra_extended_left_or_right_frame_piece();
|
||||||
|
color(frame_top_bottom_color) translate([0, 0, -2.5]) extended_front_or_back_frame_piece();
|
||||||
|
color(frame_top_bottom_color) translate([0, 0, -2.5]) rotate([180, 0, 0]) front_or_back_aux_and_neutrik_box_frame_piece_for_extended_side();
|
||||||
|
color(bottom_panel_color) translate([0, 0, -5-frame_z/2+5]) panel();
|
||||||
|
|
||||||
|
color(top_deco_color) translate([-65, 5, 3+frame_z/2-panel_z]) jlf_dustwasher();
|
||||||
@@ -26,7 +26,8 @@ color("black") rotate([180, 0, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front
|
|||||||
color("black") rotate([180, 0, 0]) rotate([0, 180, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_aux_and_neutrik_box_frame_piece();
|
color("black") rotate([180, 0, 0]) rotate([0, 180, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_aux_and_neutrik_box_frame_piece();
|
||||||
color("black") rotate([0, 180, 0]) interconnect_frame_piece();
|
color("black") rotate([0, 180, 0]) interconnect_frame_piece();
|
||||||
color("#C12E1F") translate([-panel_x/2-25, 0, -5-frame_z/2-75]) left_or_right_overhang_panel();
|
color("#C12E1F") translate([-panel_x/2-25, 0, -5-frame_z/2-75]) left_or_right_overhang_panel();
|
||||||
color("#C12E1F") mirror([0, 1, 0]) translate([panel_x/2+25, 0, -5-frame_z/2-75]) left_or_right_overhang_panel();
|
color("#C12E1F") mirror([0, 1, 0]) translate([panel_x/2+25, 0, -5-frame_z/2-75]) rotate([0, 0, 180])
|
||||||
|
left_or_right_overhang_panel();
|
||||||
|
|
||||||
color("black") translate([0, 0, 3+frame_z/2+150]) dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate();
|
color("black") translate([0, 0, 3+frame_z/2+150]) dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate();
|
||||||
color("black") translate([-195, 25, 3+frame_z/2+150]) lsx_nobi_dustwasher();
|
color("black") translate([-195, 25, 3+frame_z/2+150]) lsx_nobi_dustwasher();
|
||||||
|
|||||||
@@ -1,54 +1,11 @@
|
|||||||
# The Buildable Stick System
|
# The Buildable Stick System
|
||||||
|
|
||||||
Files for 3D printing an arcade stick.
|
Files for 3D printing an arcade stick. See `README.md` for the core documentation, this file is specific to distributed
|
||||||
|
objects.
|
||||||
|
|
||||||
## Objects
|
## Attribution
|
||||||
|
|
||||||
The following notes document the objects in the Buildable Stick System and how you can use them:
|
### Author and Licensing
|
||||||
|
|
||||||
* `frames/`
|
|
||||||
* `complete/` --- these are the four walls of the frame as one piece, in a couple variations for combining into
|
|
||||||
larger arcade sticks. They are simple to assemble, but you have fewer modularity/customization options, and they
|
|
||||||
are harder to print because the physics of the material cooling will probably pull the corners up. They also need
|
|
||||||
supports, since the top and bottom of the frame both have trays for panels to go into. Use at your own risk.
|
|
||||||
* `pieces/`
|
|
||||||
* `box/` --- these are the same four walls (generally speaking) as in the complete frames above, broken out into
|
|
||||||
modular pieces to print separately. Because they are separate pieces, you can mix and match colors, and you
|
|
||||||
can lay them all face down on the print surface for better adhesion and surface patterns. There are also
|
|
||||||
variants here, the "windowed" pieces, for doing two-tone variants and that kind of thing.
|
|
||||||
* `extended/` --- the frame walls are pulled out to create MCZ TE-style extended sides. Rather than getting a
|
|
||||||
box look, you get a longer slab with nice bevels. These look nice, but slightly fiddily to print (and of
|
|
||||||
course need more material) --- watch your surface adhesion.
|
|
||||||
* `interconnect` --- complete frames are bolted to one another, but for frame pieces, there is an interconnect
|
|
||||||
that stands in for the joined inner wall. You need this if you are combining multiple sets of walls, e.g. for
|
|
||||||
a two-panel-long stick.
|
|
||||||
* `panels/`
|
|
||||||
* `inset/` --- various panels, all of the same size, that fit into and flush with the frame, making the arcade stick
|
|
||||||
top or bottom. These work equally well with box or extended frames, and aside from using up a bit of the space
|
|
||||||
inside the frame, come with no downsides --- they print easily and are a pretty simple shape to tweak and remix.
|
|
||||||
* `overhang/` --- overhang panels have their plane extending over the edge of the frame, creating a bit of a
|
|
||||||
sandwich look. This is mostly an aesthetic choice, but they sit higher in the frame as well, the main panel being
|
|
||||||
over/under the frame rather than within it. This extra space is useful for taller levers. The only downside to
|
|
||||||
these is that they aren't as reusable as the inset panels, since the inset panels can go anywhere, but the
|
|
||||||
overhang panels must be designed to not overlap with other overhang panels, so you might have to make more custom
|
|
||||||
variants depending on where you put things.
|
|
||||||
* `misc/`
|
|
||||||
* Pieces that I haven't organized better (yet) --- there are decorative plates for top buttons and similar to give
|
|
||||||
more color variance and some layers to the arcade stick, some very simple dustwashers, plates that fit rocker
|
|
||||||
switches and the like in Neutrik D or 20mm holes, and a lever mount spacer for getting your lever shaft at the
|
|
||||||
desired height. You don't *need* any of these, but you'll probably use a few.
|
|
||||||
* `extras/`
|
|
||||||
* Various experiments and things not directly related to making an arcade stick. At time of writing, there's a
|
|
||||||
couple pieces for a little stand for the stick, solely for vanity purposes.
|
|
||||||
|
|
||||||
Feel free to request or contribute to more objects, see the links to Git repos below.
|
|
||||||
|
|
||||||
## Printing and Assembling
|
|
||||||
|
|
||||||
Additional documentation regarding printing the objects and assembling the stick are available in
|
|
||||||
`docs/printing-and-materials.md` and `docs/assembly-and-tips.md`, respectively.
|
|
||||||
|
|
||||||
## Author and Licensing
|
|
||||||
|
|
||||||
Written by and copyright Brian S. Stephan (<bss@incorporeal.org>).
|
Written by and copyright Brian S. Stephan (<bss@incorporeal.org>).
|
||||||
|
|
||||||
@@ -71,9 +28,13 @@ details.
|
|||||||
You should have received a copy of the GNU General Public License along with the Buildable Stick System. If not, see
|
You should have received a copy of the GNU General Public License along with the Buildable Stick System. If not, see
|
||||||
<https://www.gnu.org/licenses/>.
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
## Lineage
|
### Distributing BSS Sticks
|
||||||
|
|
||||||
Inspired by the incredible work of [TheTrain](https://github.com/TheTrainGoes) on the [OpenStickCommunity Fightstick
|
Under the terms of the GPLv3, you must inform the receiver of the "object code" of their rights under the GPLv3. This is
|
||||||
Case](https://github.com/OpenStickCommunity/Hardware/tree/main/Fightstick%20Case), itself based on the incredible work
|
a bit of a gray area for physical objects, but likely applies to distribution of modified or unmodified STL, STEP, etc.
|
||||||
by [Dash n'Mash](https://twitter.com/Dash_xx_Mash?s=20). Original work Copyright 2023 TheTrain, [licensed under CC BY
|
files at a minimum. The easiest way to satisfy the GPLv3 in either situation is to provide a link to the source code
|
||||||
4.0](https://creativecommons.org/licenses/by/4.0/).
|
(either the unmodified mainline project, or your copy, with modifications listed in a "prominent notice"); something
|
||||||
|
like the below should suffice in either electronic or printed form:
|
||||||
|
|
||||||
|
> This arcade stick is part of the Buildable Stick System, version X.Y.Z; the source code to this program is available
|
||||||
|
> under the terms of the GNU General Public License, at [LINK].
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
@@ -28,10 +28,9 @@ module panel_holes() {
|
|||||||
// for snap-ins, etc.
|
// for snap-ins, etc.
|
||||||
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);
|
||||||
// carve out space for snap-ins, leave 3mm
|
// carve out space for snap-ins and screw-in nuts
|
||||||
// slagcoin has screw-in nut diameter at 29.5mm, so radius+3 to leave some space
|
|
||||||
// translation is to leave 3mm thickness in the plate without recentering anything
|
// translation is to leave 3mm thickness in the plate without recentering anything
|
||||||
translate([0, 0, -25]) cylinder(r=small_button_radius+3, h=49, $fn=50, center=true);
|
translate([0, 0, -25]) cylinder(r=small_button_radius+button_radius_connector_space, h=49, $fn=50, center=true);
|
||||||
// space for decorative button surround stuff
|
// space for decorative button surround stuff
|
||||||
translate([0, 0, 50]) cylinder(r=small_button_radius*decorative_radius_scale, h=20, $fn=50, center=true);
|
translate([0, 0, 50]) cylinder(r=small_button_radius*decorative_radius_scale, h=20, $fn=50, center=true);
|
||||||
translate([0, 0, 70]) cylinder(r=small_button_radius*jumbo_decorative_radius_scale, h=20, $fn=50, center=true);
|
translate([0, 0, 70]) cylinder(r=small_button_radius*jumbo_decorative_radius_scale, h=20, $fn=50, center=true);
|
||||||
@@ -41,10 +40,9 @@ module button_24mm_hole() {
|
|||||||
// for snap-ins, etc.
|
// for snap-ins, etc.
|
||||||
module button_30mm_hole() {
|
module button_30mm_hole() {
|
||||||
cylinder(r=big_button_radius, h=100, $fn=50, center=true);
|
cylinder(r=big_button_radius, h=100, $fn=50, center=true);
|
||||||
// carve out space for snap-ins, leave 3mm
|
// carve out space for snap-ins and screw-in nuts
|
||||||
// slagcoin has screw-in nut diameter at 36mm, so radius+6 to leave some space
|
|
||||||
// translation is to leave 3mm thickness in the plate without recentering anything
|
// translation is to leave 3mm thickness in the plate without recentering anything
|
||||||
translate([0, 0, -25]) cylinder(r=big_button_radius+6, h=49, $fn=50, center=true);
|
translate([0, 0, -25]) cylinder(r=big_button_radius+button_radius_connector_space, h=49, $fn=50, center=true);
|
||||||
// space for decorative button surround stuff
|
// space for decorative button surround stuff
|
||||||
translate([0, 0, 50]) cylinder(r=big_button_radius*decorative_radius_scale, h=20, $fn=50, center=true);
|
translate([0, 0, 50]) cylinder(r=big_button_radius*decorative_radius_scale, h=20, $fn=50, center=true);
|
||||||
translate([0, 0, 70]) cylinder(r=big_button_radius*jumbo_decorative_radius_scale, h=20, $fn=50, center=true);
|
translate([0, 0, 70]) cylinder(r=big_button_radius*jumbo_decorative_radius_scale, h=20, $fn=50, center=true);
|
||||||
@@ -82,7 +80,7 @@ module rocker_20mm_mount() {
|
|||||||
// space for a neutrik D mount or 24mm button --- Z is meant to leave some lip now that frames
|
// space for a neutrik D mount or 24mm button --- Z is meant to leave some lip now that frames
|
||||||
// are primarily printed on their side
|
// are primarily printed on their side
|
||||||
module frame_cutout() {
|
module frame_cutout() {
|
||||||
cube([30.5, 8, frame_z-(panel_z*3)], center=true);
|
cube([35, 8, frame_z-(panel_z*3)], center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// bank of three 24mm buttons, commonly on a frame face
|
// bank of three 24mm buttons, commonly on a frame face
|
||||||
@@ -339,6 +337,22 @@ module frame() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* MISC SHAPES --- for cutting out decorative panels, frame wall windows, etc. */
|
||||||
|
|
||||||
|
// for cutting out slashes from the frame outer wall
|
||||||
|
module slash_cutout() {
|
||||||
|
polyhedron([
|
||||||
|
[slash_inner_displacement/2, -frame_wall/2, -slash_height/2],
|
||||||
|
[(slash_inner_displacement/2+slash_width), -frame_wall/2, -slash_height/2],
|
||||||
|
[(slash_inner_displacement/2+slash_width), frame_wall/2, -slash_height/2],
|
||||||
|
[slash_inner_displacement/2, frame_wall/2, -slash_height/2],
|
||||||
|
[-(slash_inner_displacement/2+slash_width), -frame_wall/2, slash_height/2],
|
||||||
|
[-slash_inner_displacement/2, -frame_wall/2, slash_height/2],
|
||||||
|
[-slash_inner_displacement/2, frame_wall/2, slash_height/2],
|
||||||
|
[-(slash_inner_displacement/2+slash_width), frame_wall/2, slash_height/2]
|
||||||
|
], [[0, 1, 2, 3], [4, 5, 1, 0], [7, 6, 5, 4], [5, 6, 2, 1], [6, 7, 3, 2], [7, 4, 0, 3]]);
|
||||||
|
}
|
||||||
|
|
||||||
/* LAYOUTS */
|
/* LAYOUTS */
|
||||||
|
|
||||||
// Directional Arc (both hands)
|
// Directional Arc (both hands)
|
||||||
|
|||||||
@@ -8,23 +8,14 @@ include <components.scad>
|
|||||||
use <front-or-back.scad>
|
use <front-or-back.scad>
|
||||||
use <front-or-back-inner-wall.scad>
|
use <front-or-back-inner-wall.scad>
|
||||||
|
|
||||||
module backslash() {
|
|
||||||
polyhedron([[5, -frame_y/2, -(frame_z-panel_z*3)/2], [20, -frame_y/2, -(frame_z-panel_z*3)/2],
|
|
||||||
[20, -frame_y/2+frame_wall, -(frame_z-panel_z*3)/2], [5, -frame_y/2+frame_wall, -(frame_z-panel_z*3)/2],
|
|
||||||
[-20, -frame_y/2, (frame_z-panel_z*3)/2], [-5, -frame_y/2, (frame_z-panel_z*3)/2],
|
|
||||||
[-5, -frame_y/2+frame_wall, (frame_z-panel_z*3)/2], [-20, -frame_y/2+frame_wall, (frame_z-panel_z*3)/2]],
|
|
||||||
[[0, 1, 2, 3], [4, 5, 1, 0], [7, 6, 5, 4], [5, 6, 2, 1], [6, 7, 3, 2], [7, 4, 0, 3]]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
module backslashes() {
|
module backslashes() {
|
||||||
translate([-60, 0, 0]) backslash();
|
translate([-60, -(frame_y-frame_wall)/2, 0]) slash_cutout();
|
||||||
translate([-40, 0, 0]) backslash();
|
translate([-40, -(frame_y-frame_wall)/2, 0]) slash_cutout();
|
||||||
translate([-20, 0, 0]) backslash();
|
translate([-20, -(frame_y-frame_wall)/2, 0]) slash_cutout();
|
||||||
backslash();
|
translate([0, -(frame_y-frame_wall)/2, 0]) slash_cutout();
|
||||||
translate([20, 0, 0]) backslash();
|
translate([20, -(frame_y-frame_wall)/2, 0]) slash_cutout();
|
||||||
translate([40, 0, 0]) backslash();
|
translate([40, -(frame_y-frame_wall)/2, 0]) slash_cutout();
|
||||||
translate([60, 0, 0]) backslash();
|
translate([60, -(frame_y-frame_wall)/2, 0]) slash_cutout();
|
||||||
}
|
}
|
||||||
|
|
||||||
module backslashes_windowed_front_or_back_box_frame_piece() {
|
module backslashes_windowed_front_or_back_box_frame_piece() {
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <front-or-back.scad>
|
||||||
|
use <front-or-back-inner-wall.scad>
|
||||||
|
|
||||||
|
module front_stripe() {
|
||||||
|
cube([frame_x-(frame_mount_column_width*1.75)*2, frame_wall, 6], center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
module windowed_front_or_back_box_frame_piece() {
|
||||||
|
difference() {
|
||||||
|
front_or_back_box_frame_piece();
|
||||||
|
// subtract frame wall windows
|
||||||
|
translate([0, -(frame_y-frame_wall)/2, 18]) front_stripe();
|
||||||
|
translate([0, -(frame_y-frame_wall)/2, 9]) front_stripe();
|
||||||
|
translate([0, -(frame_y-frame_wall)/2, 0]) front_stripe();
|
||||||
|
translate([0, -(frame_y-frame_wall)/2, -9]) front_stripe();
|
||||||
|
translate([0, -(frame_y-frame_wall)/2, -18]) front_stripe();
|
||||||
|
// subtract the inner wall area that will be provided by the other piece
|
||||||
|
front_or_back_inner_wall_frame_piece();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
windowed_front_or_back_box_frame_piece();
|
||||||
@@ -8,21 +8,12 @@ include <components.scad>
|
|||||||
use <side.scad>
|
use <side.scad>
|
||||||
use <side-inner-wall.scad>
|
use <side-inner-wall.scad>
|
||||||
|
|
||||||
module backslash() {
|
|
||||||
polyhedron([[-frame_x/2, -5, -(frame_z-panel_z*3)/2], [-frame_x/2, -20, -(frame_z-panel_z*3)/2],
|
|
||||||
[-frame_x/2+frame_wall, -20, -(frame_z-panel_z*3)/2], [-frame_x/2+frame_wall, -5, -(frame_z-panel_z*3)/2],
|
|
||||||
[-frame_x/2, 20, (frame_z-panel_z*3)/2], [-frame_x/2, 5, (frame_z-panel_z*3)/2],
|
|
||||||
[-frame_x/2+frame_wall, 5, (frame_z-panel_z*3)/2], [-frame_x/2+frame_wall, 20, (frame_z-panel_z*3)/2]],
|
|
||||||
[[0, 1, 2, 3], [4, 5, 1, 0], [7, 6, 5, 4], [5, 6, 2, 1], [6, 7, 3, 2], [7, 4, 0, 3]]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
module backslashes() {
|
module backslashes() {
|
||||||
translate([0, -40, 0]) backslash();
|
translate([-(frame_x-frame_wall)/2, -40, 0]) rotate([0, 0, -90]) slash_cutout();
|
||||||
translate([0, -20, 0]) backslash();
|
translate([-(frame_x-frame_wall)/2, -20, 0]) rotate([0, 0, -90]) slash_cutout();
|
||||||
backslash();
|
translate([-(frame_x-frame_wall)/2, 0, 0]) rotate([0, 0, -90]) slash_cutout();
|
||||||
translate([0, 20, 0]) backslash();
|
translate([-(frame_x-frame_wall)/2, 20, 0]) rotate([0, 0, -90]) slash_cutout();
|
||||||
translate([0, 40, 0]) backslash();
|
translate([-(frame_x-frame_wall)/2, 40, 0]) rotate([0, 0, -90]) slash_cutout();
|
||||||
}
|
}
|
||||||
|
|
||||||
module backslashes_windowed_side_box_frame_piece() {
|
module backslashes_windowed_side_box_frame_piece() {
|
||||||
|
|||||||
29
src/frames/pieces/box/side-windowed-horiz-stripes.scad
Normal file
29
src/frames/pieces/box/side-windowed-horiz-stripes.scad
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <side.scad>
|
||||||
|
use <side-inner-wall.scad>
|
||||||
|
|
||||||
|
module side_stripe() {
|
||||||
|
cube([frame_wall, frame_y-(frame_mount_column_width*1.75)*2, 6], center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
module windowed_side_box_frame_piece() {
|
||||||
|
difference() {
|
||||||
|
side_box_frame_piece();
|
||||||
|
// subtract frame wall windows
|
||||||
|
translate([-(frame_x-frame_wall)/2, 0, 18]) side_stripe();
|
||||||
|
translate([-(frame_x-frame_wall)/2, 0, 9]) side_stripe();
|
||||||
|
translate([-(frame_x-frame_wall)/2, 0, 0]) side_stripe();
|
||||||
|
translate([-(frame_x-frame_wall)/2, 0, -9]) side_stripe();
|
||||||
|
translate([-(frame_x-frame_wall)/2, 0, -18]) side_stripe();
|
||||||
|
// subtract the inner wall area that will be provided by the other piece
|
||||||
|
side_inner_wall_frame_piece();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
windowed_side_box_frame_piece();
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module lever_and_sega_2p_6_button_panel_with_aux_with_mount() {
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
panel();
|
||||||
|
translate([45, -58, -panel_z/2]) rotate([0, 0, 13]) pcb_mount();
|
||||||
|
}
|
||||||
|
translate([90, -25, 0]) sega_2p_6_button();
|
||||||
|
translate([-65, 5, 0]) union() {
|
||||||
|
levermountholes();
|
||||||
|
levermountcountersinks();
|
||||||
|
}
|
||||||
|
translate([17, 70, 0]) button_24mm_hole();
|
||||||
|
translate([-17, 70, 0]) button_24mm_hole();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lever_and_sega_2p_6_button_panel_with_aux_with_mount();
|
||||||
@@ -8,13 +8,17 @@ include <components.scad>
|
|||||||
|
|
||||||
module lever_and_sega_2p_6_button_solo_overhang_panel() {
|
module lever_and_sega_2p_6_button_solo_overhang_panel() {
|
||||||
difference() {
|
difference() {
|
||||||
// base plate
|
|
||||||
union() {
|
union() {
|
||||||
panel_with_raised_overhang();
|
panel_with_raised_overhang();
|
||||||
translate([-60, 18, -((panel_z/2)+(lever_mount_z/2))]) levermountbase();
|
translate([45, -58, -panel_z/2]) rotate([0, 0, 13]) pcb_mount();
|
||||||
}
|
}
|
||||||
translate([95, -20, 0]) sega_2p_6_button();
|
translate([90, -25, 0]) sega_2p_6_button();
|
||||||
translate([-60, 18, 0]) levermountholes();
|
translate([-65, 5, 0]) union() {
|
||||||
|
levermountholes();
|
||||||
|
levermountcountersinks();
|
||||||
|
}
|
||||||
|
translate([17, 70, 0]) button_24mm_hole();
|
||||||
|
translate([-17, 70, 0]) button_24mm_hole();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,6 +23,11 @@ small_button_radius = 12 + hole_tolerance;
|
|||||||
// 30mm button
|
// 30mm button
|
||||||
big_button_radius = 15 + hole_tolerance;
|
big_button_radius = 15 + hole_tolerance;
|
||||||
|
|
||||||
|
// carve out space around buttons for screw-in nuts
|
||||||
|
// slagcoin has screw-in nut diameter at 36mm for 30mm buttons, 29.5 for 24mm buttons
|
||||||
|
// radius + value below should leave space for the nut and for fingers to grab the nut
|
||||||
|
button_radius_connector_space = 5;
|
||||||
|
|
||||||
// JLF mount dimensions
|
// JLF mount dimensions
|
||||||
lever_mount_x = 53;
|
lever_mount_x = 53;
|
||||||
lever_mount_y = 95;
|
lever_mount_y = 95;
|
||||||
@@ -89,3 +94,8 @@ neutrik_d_radius = 12 + hole_tolerance;
|
|||||||
// additional button radius for decorative panels, etc.
|
// additional button radius for decorative panels, etc.
|
||||||
decorative_radius_scale = 1.75;
|
decorative_radius_scale = 1.75;
|
||||||
jumbo_decorative_radius_scale = 2;
|
jumbo_decorative_radius_scale = 2;
|
||||||
|
|
||||||
|
// decorative slash parameters
|
||||||
|
slash_inner_displacement = 10;
|
||||||
|
slash_width = 15;
|
||||||
|
slash_height = frame_z-panel_z*3;
|
||||||
|
|||||||
Reference in New Issue
Block a user