Initial commit
This commit is contained in:
commit
3ac1336bfa
|
@ -0,0 +1,3 @@
|
|||
[submodule "scad/common"]
|
||||
path = scad/common
|
||||
url = https://git.sixteenmillimeter.com/modules/common.git
|
|
@ -0,0 +1,8 @@
|
|||
Copyright 2025 Matthew McWilliams
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# Small Bolex Matte Box
|
||||
|
||||
This is a design for a small matte box for Bolex cameras.
|
||||
It's a preliminary attempt at making a simple matte box for holding filters in front of a lens.
|
||||
|
||||
Attaching to the hot shoe mount on top of Rex-series Bolexes, this relies on a [rectangular brass tube](https://ksmetals.com/products/brr014-3-16x3-8) as a rail to hold the matte box.
|
||||
It expects a 3/8" x 3/16" (4.75mm x 9.5mm) profile for this rail.
|
||||
There is also a printed version of the tube included as an 3D-printable STL file.
|
||||
|
||||
The hot shoe mount + rail design was also adapted by [Lindsay McIntyre](https://tinymovingpictures.com/) to hold an [alternate matte box](./stl/small_bolex_matte_box-4x5.5_cards.stl) for use with 4x5.5 inch cards.
|
||||
|
||||
## Small Bolex Matte Box
|
||||
|
||||

|
||||
|
||||
## Hot Shoe Mount
|
||||
|
||||

|
||||
|
||||
## Insert
|
||||
|
||||

|
||||
|
||||
## Card Matte Box by Lindsay McIntyre
|
||||
|
||||

|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
|
||||
"objects": [
|
||||
{
|
||||
"name": "small_bolex_matte_box",
|
||||
"material": "black_plastic",
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"rotation": {
|
||||
"x": 0,
|
||||
"y": 90,
|
||||
"z": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "small_bolex_matte_box_hot_shoe",
|
||||
"material": "black_plastic",
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": 50,
|
||||
"z": 30
|
||||
},
|
||||
"rotation": {
|
||||
"x": 0,
|
||||
"y": -90,
|
||||
"z": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "small_bolex_matte_box",
|
||||
"material": "black_plastic",
|
||||
"position": {
|
||||
"x": 0,
|
||||
"y": 25,
|
||||
"z": 30
|
||||
},
|
||||
"rotation": {
|
||||
"x": 0,
|
||||
"y": 90,
|
||||
"z": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"src" : [
|
||||
"README.md",
|
||||
"LICENSE",
|
||||
"scad.sh",
|
||||
"scad/small_bolex_matte_box.scad",
|
||||
"scad/common/common.scad",
|
||||
"scad/common/c14n_stl.py",
|
||||
"scad/common/scad.sh"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
bash ./scad/common/scad.sh ./scad/small_bolex_matte_box.scad
|
||||
|
||||
mv ./stl/small_bolex_matte_box_default.stl ./stl/small_bolex_matte_box.stl
|
||||
mv ./img/small_bolex_matte_box_default.jpg ./img/small_bolex_matte_box.jpg
|
||||
|
||||
openscad --enable manifold --viewall --render --imgsize=512,512 --colorscheme=DeepOcean -D VERBOSE=false -o "./img/small_bolex_matte_box-4x5.5_cards.png" "./scad/small_bolex_matte_box-4x5.5_cards.scad"
|
||||
convert "img/small_bolex_matte_box-4x5.5_cards.png" -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB "img/small_bolex_matte_box-4x5.5_cards.jpg"
|
||||
rm -f "img/small_bolex_matte_box-4x5.5_cards.png"
|
|
@ -0,0 +1 @@
|
|||
Subproject commit e2eeb27f173d739a174c0d147bcb62a16859e2d9
|
|
@ -0,0 +1 @@
|
|||
import("../stl/small_bolex_matte_box-4x5.5_cards.stl");
|
|
@ -0,0 +1,191 @@
|
|||
use <./common/common.scad>;
|
||||
|
||||
module hot_shoe_mount() {
|
||||
difference() {
|
||||
cube([20,14.8,17.5], center=true);
|
||||
|
||||
translate([0,-7.6,0]) {
|
||||
cube([9.4,2.5,17.6], center=true);
|
||||
}
|
||||
|
||||
translate([-8.125,-0.60,0]) {
|
||||
cube([3.99,10,17.6], center=true);
|
||||
}
|
||||
|
||||
translate([-9.65,-6.5,0]) {
|
||||
cube([1,2,17.9], center=true);
|
||||
}
|
||||
|
||||
|
||||
translate([8.125,-0.60,0]) {
|
||||
cube([3.99,10,17.6], center=true);
|
||||
}
|
||||
|
||||
translate([9.65,-6.5,0]) {
|
||||
cube([1,2,17.9], center=true);
|
||||
}
|
||||
translate([0, -4, 6]) cube([6, 6, 6], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module bolex_matte_box_hot_shoe () {
|
||||
RAIL = 10;
|
||||
difference () {
|
||||
union() {
|
||||
rotate([90, 0, 90]) hot_shoe_mount();
|
||||
translate([0, -3, 7]) rotate([0, 90, 0]) rounded_cube([RAIL + 5, 28, 17.5], d = 3, center = true, $fn = 12);
|
||||
}
|
||||
translate([-75, -8, 7]) {
|
||||
rotate([0, 90, 0]) {
|
||||
rounded_cube([RAIL, RAIL / 2, 160], d = .5, center = true, $fn = 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module bolex_matte_box () {
|
||||
X = 35;
|
||||
Y = 35;
|
||||
FRAME = 10;
|
||||
|
||||
TAB_X = 10;
|
||||
TAB_Z = 6;
|
||||
TAB_Y = 49;
|
||||
|
||||
RAIL = 10;
|
||||
|
||||
difference () {
|
||||
translate([0, 0, 5/2]) {
|
||||
rounded_cube([X + FRAME, Y + FRAME, 8], d = 6, center = true, $fn = 64);
|
||||
}
|
||||
rounded_cube([X, Y, 40], d = 2, center = true, $fn = 20); //center
|
||||
translate([0, FRAME/2, 5/2]) {
|
||||
cube([X, Y + FRAME + 1, 3], center = true);
|
||||
}
|
||||
translate([0, FRAME/2, 1]) {
|
||||
cube([X + 2, Y + FRAME + 1, 2], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
translate([(-Y / 2) - TAB_Y - 7, 0, 3.5]) {
|
||||
difference () {
|
||||
rounded_cube([RAIL + 7, RAIL + 7, 10], d = 1.5, center = true, $fn = 24);
|
||||
rounded_cube([RAIL, RAIL/2, 15], d = .5, center = true, $fn = 12);
|
||||
rotate([0, 90, 0]) translate([0, 0, -7]) cylinder(r = R(2), h = 10, center = true, $fn = 12);
|
||||
}
|
||||
}
|
||||
|
||||
rotate ([0, 0, 90]) {
|
||||
translate([0, (TAB_Y / 2) + (X / 2) + 1, 1.5]) cube([TAB_X, TAB_Y, TAB_Z], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
module bolex_matte_box_front () {
|
||||
RAIL = 10;
|
||||
RAIL_W = 10;
|
||||
|
||||
FRAME = 15;
|
||||
|
||||
TAB_X = 10;
|
||||
TAB_Y = 39;
|
||||
TAB_Z = 4;
|
||||
O_Y = 40;
|
||||
|
||||
X = 55;
|
||||
Y = 60;
|
||||
|
||||
translate([0, 0, 1.5]) {
|
||||
difference () {
|
||||
rounded_cube([X + FRAME, Y + FRAME, TAB_Z], d = 6, center = true, $fn = 24);
|
||||
rounded_cube([X, Y, TAB_Z], d = 2, center = true, $fn = 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module bolex_matte_box_front_top () {
|
||||
RAIL = 10.6;
|
||||
RAIL_W = 10;
|
||||
|
||||
FRAME = 15;
|
||||
|
||||
TAB_X = 10;
|
||||
TAB_Y = 30;
|
||||
TAB_Z = 4;
|
||||
O_Y = 40;
|
||||
|
||||
X = 55;
|
||||
Y = 60;
|
||||
|
||||
translate([-73.5, 0, 4.5]) {
|
||||
difference () {
|
||||
rounded_cube([RAIL+7, RAIL+7, RAIL_W], d = 1.5, center = true, $fn = 24);
|
||||
rounded_cube([RAIL, RAIL/2, RAIL_W], d = .5, center = true, $fn = 12);
|
||||
rotate([0, 90, 0]) translate([0, 0, -7]) cylinder(r = 1, h = 10, center = true, $fn = 12);
|
||||
}
|
||||
}
|
||||
|
||||
rotate ([0, 0, 90]) {
|
||||
translate([0, (TAB_Y / 2) + (X / 2) + 7.5, 1.5]) cube([TAB_X, TAB_Y, TAB_Z], center = true);
|
||||
}
|
||||
|
||||
rotate ([0, 0, 90]) {
|
||||
difference () {
|
||||
translate([0, (TAB_Y / 2) + (X / 2) - 2.5, 2.5]) cube([TAB_X * 3, 10, TAB_Z+2], center = true);
|
||||
translate([-10, 48, 2.5]) rotate([0, 0, 30]) cube([TAB_X * 3, 10, TAB_Z+2], center = true);
|
||||
translate([10, 48, 2.5]) rotate([0, 0, -30]) cube([TAB_X * 3, 10, TAB_Z+2], center = true);
|
||||
}
|
||||
translate([0, (TAB_Y / 2) + (X / 2) - 7.5, 4.5]) cube([TAB_X * 3, 5, 2], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
module bolex_matte_box_full () {
|
||||
bolex_matte_box();
|
||||
difference () {
|
||||
translate([0, 0, 6]) rotate([0, 0, 45]) cylinder(r1 = R(60), r2 = 40, h = 20, $fn = 4);
|
||||
translate([0, 0, 5.9]) rotate([0, 0, 45]) cylinder(r1 = R(50), r2 = 35, h = 20.2, $fn = 4);
|
||||
//smooth edges
|
||||
translate([0, 30, 30]) rotate([45, 0, 0]) cube([70, 10, 10], center = true);
|
||||
translate([0, -30, 30]) rotate([45, 0, 0]) cube([70, 10, 10], center = true);
|
||||
translate([30, 0, 30]) rotate([0, 45, 0]) cube([10, 70, 10], center = true);
|
||||
translate([-30, 0, 30]) rotate([0, 45, 0]) cube([10, 70, 10], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
module bolex_matte_box_insert () {
|
||||
X = 35;
|
||||
Y = 35;
|
||||
FRAME = 10;
|
||||
difference () {
|
||||
union() {
|
||||
translate([0, FRAME/4- 2, 5/2]) {
|
||||
cube([X - .2, Y + FRAME-2, 2.9], center = true);
|
||||
}
|
||||
translate([0, FRAME/4- 2, 1]) {
|
||||
cube([X + 2 - .2, Y + FRAME -2, 1.9], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
rounded_cube([X - 4, Y + 1, 16], d = 3, center = true, $fn = 20);
|
||||
//translate([0, 0, 3.5]) rcube([X - 1, Y + 4, 3], d = 2, center = true, $fn = 20);
|
||||
}
|
||||
translate([0, 23, 2]) rounded_cube([4, 9, 3.9], d = 2, center= true, $fn=24);
|
||||
}
|
||||
|
||||
module bolex_matte_box_rail () {
|
||||
X = (3/16)*25.4;
|
||||
Y = (3/8)*25.4;
|
||||
Z = 100;
|
||||
rounded_cube([X, Y, Z], d = 1, center = true, $fn = 10);
|
||||
}
|
||||
|
||||
PART = "rail";
|
||||
|
||||
if (PART == "default") {
|
||||
bolex_matte_box_full();
|
||||
} else if (PART == "hot_shoe_mount") {
|
||||
rotate([0, 90, 0]) bolex_matte_box_hot_shoe();
|
||||
} else if (PART == "insert") {
|
||||
bolex_matte_box_insert();
|
||||
} else if (PART == "rail") {
|
||||
bolex_matte_box_rail();
|
||||
}
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue