Compare commits
2 Commits
e7c8d9ab68
...
7ae48d6e4f
Author | SHA1 | Date | |
---|---|---|---|
7ae48d6e4f | |||
d11a06c370 |
75
outdoor/eberleMount.scad
Normal file
75
outdoor/eberleMount.scad
Normal 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);
|
||||||
|
|
||||||
|
}
|
52
outdoor/m7LeatherClip.scad
Normal file
52
outdoor/m7LeatherClip.scad
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user