Compare commits

...

2 Commits

Author SHA1 Message Date
7ae48d6e4f 1st pass eberle qls mount 2025-07-04 02:01:47 -07:00
d11a06c370 add a couple untracked things 2025-07-03 20:39:15 -07:00
3 changed files with 127 additions and 6 deletions

75
outdoor/eberleMount.scad Normal file
View File

@ -0,0 +1,75 @@
// Simple c shaped clip to insert into molle and mount QRS to.
// Ref: Hole spacing upper 31.8mm apart, lower 64.6mm below midpoint of upper, try 6mm holes
//
// Strategy:
// 3 cylinders at hole spacing
// 3 boxes with c shape
// minkowski all
// cut holes, slice top and bottom
// so backwards: diff 2 slices and holes, minkowski, then make the 3 cylinders and 3 cubes
$fn = 40;
qlsHoriz = 31.8;
qlsVert = 64.6;
qlsShiftX = 4;
qlsShiftY = 63;
qlsCant = 9.1;
minkRad = 4;
thickness = 5;
armSize = 15;
armCtc = 37;
armLength = 126;
// QLS spaced cylinders for add or remove
module qls(diam = 6) {
translate([qlsHoriz / 2, qlsVert / 2, 0]){
cylinder(44, d = diam, center = true);
}
translate([-1 * qlsHoriz / 2, qlsVert / 2, 0]){
cylinder(44, d = diam, center = true);
}
translate([0, -qlsVert / 2]){
cylinder(44, d = diam, center = true);
}
}
module tcqls(diam = 6) {
translate([qlsShiftX, qlsShiftY, 0]){
rotate(qlsCant, [0, 0, 1]){
qls(diam);
}
}
}
// main diff
difference() {
// diff the minkowskid collection and two slice plates and some qls holes
minkowski() {
// minkowski the 6 part union and a sphere
union() {
// union of 3 cubes and 3 cylinders from qls
translate([ armCtc / 2, armLength / 2, 0 ]) {
cube([ armSize - minkRad * 2, armLength - minkRad * 2, 1 ], center = true);
}
translate([ -armCtc / 2, armLength / 2, 0 ]) {
cube([ armSize - minkRad * 2, armLength - minkRad * 2, 1 ], center = true);
}
translate([ 0, armLength - armSize / 2, 0 ]) {
cube([ armCtc + armSize - minkRad * 2 , armSize - minkRad * 2, 1], center = true);
}
tcqls(12 - minkRad);
}
// mink sphere
sphere(minkRad);
}
// diffed top bottom slices and qls screw holes
translate([0, 0, -33 - thickness / 2]){
cube([444, 444, 66], center = true);
}
translate([0, 0, 33 + thickness / 2]){
cube([444, 444, 66], center = true);
}
tcqls(7);
}

View File

@ -0,0 +1,52 @@
// Cord toggle for securing grommet equipment
mainDiam=10;
mainLength=20;
cordDiam=3;
cordHoleGap=1;
flattenBottom=0.3;
$fn = 40;
difference(){
// cyl mirrored across yz +++++++++++++++++++++++++++++++++++++++++++
color("blue"){
for (dir = [-1 : 1] ) mirror([dir, 0, 0]){
union(){
rotate([0,90,0]){
cylinder(mainLength / 2, d = mainDiam, center=false);
}
// rounded ends
translate([mainLength / 2, 0, 0]){
sphere(d = mainDiam);
}
}
}
}
// flatten bottom for better print and interface ---------------------------
color("red"){
translate([0, 0, -1 * (1 - flattenBottom) * mainDiam]){
cube( [2 * mainLength, mainDiam, mainDiam], center=true);
}
}
//holes for cord
color("green"){
for (dir = [-1 : 1]) mirror([dir, 0, 0]){
translate([cordHoleGap * cordDiam, 0, 0]){
cylinder( mainDiam * 1.1, d = cordDiam, center = true);
}
}
}
//relief for cord bend
color("yellow"){
translate([0, 0, mainDiam / 2]){
rotate([0, 90, 0]){
cylinder(cordDiam * cordHoleGap * 2, d = cordDiam, center = true);
}
}
}
}

View File

@ -6,20 +6,14 @@
screwDiam=2.2; screwDiam=2.2;
eeWidth=5; eeWidth=5;
thickness=3.7; thickness=3.7;
$fn = 40; $fn = 40;
difference(){ difference(){
cube([eeWidth, eeWidth, thickness * 2], center=true); cube([eeWidth, eeWidth, thickness * 2], center=true);
translate([0, 0, -22]){ translate([0, 0, -22]){
cylinder(d=screwDiam, 44); cylinder(d=screwDiam, 44);
} }
translate([0, 0, -22]){ translate([0, 0, -22]){
cube([44, 44, 44], center=true); cube([44, 44, 44], center=true);
} }
} }