Updates
This commit is contained in:
36
tir_sportif/tripod/scad/01_center_top.scad
Normal file
36
tir_sportif/tripod/scad/01_center_top.scad
Normal file
@@ -0,0 +1,36 @@
|
||||
$fn=60;
|
||||
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
|
||||
module legScrew() {
|
||||
translate ([-8,41.5,0]) {
|
||||
cylinder(h=30, d=5.4, center=true);
|
||||
translate ([0,0,-12]) {
|
||||
DIN931("M5");
|
||||
translate([0,0,-1]) DIN931("M5");
|
||||
translate([0,0,-2.5]) cylinder(h=25, d=5);
|
||||
translate([0,0,22]) cylinder(h=6, d=9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
difference() {
|
||||
// Center part
|
||||
linear_extrude(height = 16)
|
||||
import("../svg/center.svg");
|
||||
|
||||
// Legs screw holes
|
||||
color("red") {
|
||||
for(i=[1:1:3]) {
|
||||
rotate([0,90,i*120]) legScrew();
|
||||
}
|
||||
}
|
||||
// Hexagonal screw hole
|
||||
rotate([0,0,120]) translate ([0,-14,8]) {
|
||||
union() {
|
||||
rotate([90,90,0]) DIN931("M5");
|
||||
translate ([0,2,0]) rotate([90,90,0]) DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
36
tir_sportif/tripod/scad/01_center_tube17.scad
Normal file
36
tir_sportif/tripod/scad/01_center_tube17.scad
Normal file
@@ -0,0 +1,36 @@
|
||||
$fn = 200;
|
||||
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
difference() {
|
||||
// Center part
|
||||
linear_extrude(height = 16)
|
||||
import("../svg/center_tube17.svg");
|
||||
|
||||
// Legs screw holes
|
||||
color("red") {
|
||||
for(i=[1:1:3]) {
|
||||
translate ([0,0,8]) {
|
||||
rotate([0,90,i*120]) {
|
||||
linear_extrude(height=35,center=true)
|
||||
import("../svg/screw_hole.svg");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Hexagonal screw hole
|
||||
rotate([0,0,120]) {
|
||||
translate ([0,-13,8]) {
|
||||
union() {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
translate ([0,2,0]) {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
41
tir_sportif/tripod/scad/02_center_bottom.scad
Normal file
41
tir_sportif/tripod/scad/02_center_bottom.scad
Normal file
@@ -0,0 +1,41 @@
|
||||
$fn = 60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
module legScrew() {
|
||||
translate([-8,24.5,0]) {
|
||||
cylinder(h=20, d=5.4, center=true);
|
||||
translate ([0,0,-7.5]) DIN931("M5");
|
||||
translate ([0,0,-9]) DIN931("M5");
|
||||
cylinder(h=25, d=5, center=true);
|
||||
translate([0,0,7.5]) cylinder(h=6, d=9);
|
||||
}
|
||||
}
|
||||
|
||||
difference() {
|
||||
// Center part
|
||||
linear_extrude(height = 16)
|
||||
import("../svg/center_bottom.svg");
|
||||
// Legs screw holes
|
||||
color("red") {
|
||||
for(i=[1:1:3]) {
|
||||
rotate([0,90,i*120]) legScrew();
|
||||
}
|
||||
}
|
||||
// Center screw hole
|
||||
rotate([0,0,120]) {
|
||||
translate ([0,-13,8]) {
|
||||
union() {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M3");
|
||||
}
|
||||
translate ([0,1,0]) {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M3");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
22
tir_sportif/tripod/scad/03_legs_top.scad
Normal file
22
tir_sportif/tripod/scad/03_legs_top.scad
Normal file
@@ -0,0 +1,22 @@
|
||||
$fn=200;
|
||||
|
||||
for(i=[0:1:2]) {
|
||||
translate([25*i,0,0]) {
|
||||
difference() {
|
||||
rotate_extrude(angle=360, convexity=10)
|
||||
import("../svg/leg_top.svg");
|
||||
|
||||
rotate([0,90,0]) {
|
||||
translate([-35,0,-10]) {
|
||||
cylinder(h=20, d=6);
|
||||
}
|
||||
translate([-35,0,-11.5]) {
|
||||
cylinder(h=4, d=26);
|
||||
}
|
||||
translate([-35,0,7.5]) {
|
||||
cylinder(h=4, d=26);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
121
tir_sportif/tripod/scad/04_leg_extenders.scad
Normal file
121
tir_sportif/tripod/scad/04_leg_extenders.scad
Normal file
@@ -0,0 +1,121 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
tube_dia=16;
|
||||
delta=0.5;
|
||||
|
||||
module frontScrew() {
|
||||
cylinder(h=20, d=5.4, center=true);
|
||||
rotate([0,0,0]) {
|
||||
translate ([0,0,-8]) DIN931("M5");
|
||||
translate ([0,0,-10]) DIN931("M5");
|
||||
}
|
||||
* cylinder(h=25, d=5, center=true);
|
||||
translate([0,0,8]) cylinder(h=6, d=9);
|
||||
}
|
||||
|
||||
module backScrew() {
|
||||
cylinder(h=5,d=3);
|
||||
DIN931("M3");
|
||||
translate ([0,0,2]) DIN931("M3");
|
||||
}
|
||||
|
||||
// Assembled version
|
||||
|
||||
// [tubes]
|
||||
* color("grey") {
|
||||
translate([-20,0,-80]) tube(od=tube_dia,wall=2,h=200);
|
||||
translate([0,0,-140]) tube(od=tube_dia,wall=2,h=200);
|
||||
translate([20,0,-80]) tube(od=tube_dia,wall=2,h=200);
|
||||
}
|
||||
// [top]
|
||||
* translate([0,0,20]) {
|
||||
difference() {
|
||||
cuboid([65,25,20], rounding=5);
|
||||
translate([-20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
translate([20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
}
|
||||
translate([0,-16,0]) difference() {
|
||||
ycyl(l=40, d=20, rounding=10);
|
||||
translate([0,-9,0]) xcyl(l=20, d=6);
|
||||
translate([10.5,-12,0]) xcyl(l=6, d=30);
|
||||
translate([-10.5,-12,0]) xcyl(l=6, d=30);
|
||||
}
|
||||
}
|
||||
// [middle]
|
||||
* translate([0,0,-30]) difference() {
|
||||
cuboid([65,25,20], rounding=5);
|
||||
translate([-20,0,0]) zcyl(l=30, d=tube_dia+1);
|
||||
translate([0,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
translate([20,0,0]) zcyl(l=30, d=tube_dia+1);
|
||||
}
|
||||
* // [bottom]
|
||||
translate([0,0,-175]) difference() {
|
||||
union() {
|
||||
cuboid([65,25,20], rounding=5);
|
||||
translate([0,-3,0]) rotate([90,0,0]) prismoid(size1=[25,12], size2=[20,12], h=24, rounding=1);
|
||||
translate([0,-27,0]) scale([1,.7,1]) zcyl(l=12, d=20, rounding=1);
|
||||
}
|
||||
translate([-20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
zcyl(l=30, d=tube_dia+1);
|
||||
translate([20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
rotate([90,0,180]) translate([0,0,8]) backScrew();
|
||||
zcyl(l=12, d=16, rounding=-1);
|
||||
translate([0,-23,0]) cuboid([11,22,12], rounding=-1);
|
||||
translate ([0,-23,0]) rotate([0,-90,0]) frontScrew();
|
||||
}
|
||||
|
||||
// Printable version
|
||||
//[top]
|
||||
// V1
|
||||
rotate([90,0,0]) {
|
||||
difference() {
|
||||
cuboid([65,25,20], rounding=5);
|
||||
translate([-20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
translate([20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
}
|
||||
translate([0,0,16]) difference() {
|
||||
zcyl(l=40, d=25, rounding=12.5);
|
||||
translate([0,0,9]) xcyl(l=20, d=6);
|
||||
translate([10.5,0,10]) xcyl(l=6, d=30);
|
||||
translate([-10.5,0,10]) xcyl(l=6, d=30);
|
||||
}
|
||||
}
|
||||
// V2
|
||||
* rotate([00,0,0]) {
|
||||
difference() {
|
||||
cuboid([65,25,20], rounding=5);
|
||||
translate([-20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
translate([20,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
}
|
||||
translate([0,-16,0]) difference() {
|
||||
ycyl(l=40, d=20, rounding=10);
|
||||
translate([0,-9,0]) xcyl(l=20, d=6);
|
||||
translate([10.5,-12,0]) xcyl(l=6, d=30);
|
||||
translate([-10.5,-12,0]) xcyl(l=6, d=30);
|
||||
}
|
||||
}
|
||||
//[middle]
|
||||
translate([0,30,0]) rotate([90,0,0]) difference() {
|
||||
cuboid([65,25,20], rounding=5);
|
||||
translate([-20,0,0]) zcyl(l=30, d=tube_dia+1);
|
||||
translate([0,0,-7]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
translate([20,0,0]) zcyl(l=30, d=tube_dia+1);
|
||||
}
|
||||
//[bottom]
|
||||
translate([0,60,0]) rotate([-90,0,0]) difference() {
|
||||
union() {
|
||||
cuboid([65,25,20], rounding=5);
|
||||
translate([0,-3,0]) rotate([90,0,0]) prismoid(size1=[35,20], size2=[22,20], h=24, rounding=1);
|
||||
translate([0,-26.5,0]) scale([1,.55,1]) zcyl(l=20, d=22, rounding=1);
|
||||
}
|
||||
translate([-20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
zcyl(l=30, d=tube_dia+1);
|
||||
translate([20,0,5]) zcyl(l=25, d=tube_dia+delta, rounding=1);
|
||||
rotate([90,0,180]) translate([0,0,8.7]) backScrew();
|
||||
zcyl(l=12, d=16, rounding=-1);
|
||||
translate([0,-24,0]) cuboid([11,23,20], rounding=-1);
|
||||
translate ([0,-23,0]) rotate([0,-90,0]) frontScrew();
|
||||
}
|
||||
117
tir_sportif/tripod/scad/04_leg_extenders_v2.scad
Normal file
117
tir_sportif/tripod/scad/04_leg_extenders_v2.scad
Normal file
@@ -0,0 +1,117 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
tube_d1=12;
|
||||
tube_d2=16;
|
||||
delta1=0.75;
|
||||
delta=0.5;
|
||||
|
||||
module frontScrew() {
|
||||
cylinder(h=20, d=5.4, center=true);
|
||||
rotate([0,0,0]) {
|
||||
translate ([0,0,-8]) DIN931("M5");
|
||||
translate ([0,0,-10]) DIN931("M5");
|
||||
}
|
||||
* cylinder(h=25, d=5, center=true);
|
||||
translate([0,0,8]) cylinder(h=6, d=9);
|
||||
}
|
||||
|
||||
module backScrew() {
|
||||
cylinder(h=5,d=3.5);
|
||||
DIN931("M3");
|
||||
translate ([0,0,2]) DIN931("M3");
|
||||
}
|
||||
|
||||
// Assembled version
|
||||
|
||||
// [tubes]
|
||||
* color("grey") {
|
||||
translate([-18,0,-80]) tube(od=tube_d1,wall=2,h=200);
|
||||
translate([0,0,-140]) tube(od=tube_d2,wall=2,h=200);
|
||||
translate([18,0,-80]) tube(od=tube_d1,wall=2,h=200);
|
||||
}
|
||||
// [top]
|
||||
* translate([0,0,20]) {
|
||||
difference() {
|
||||
cuboid([58,25,20], rounding=5);
|
||||
translate([-20,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
translate([20,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
}
|
||||
rotate([-90,0,0]) {
|
||||
translate([0,-17,0]) difference() {
|
||||
ycyl(l=40, d=20, rounding=10);
|
||||
translate([0,-9,0]) xcyl(l=20, d=6);
|
||||
translate([10.5,-12,0]) xcyl(l=6, d=30);
|
||||
translate([-10.5,-12,0]) xcyl(l=6, d=30);
|
||||
}
|
||||
}
|
||||
}
|
||||
// [middle]
|
||||
* translate([0,0,-30]) difference() {
|
||||
cuboid([58,25,20], rounding=5);
|
||||
translate([-18,0,0]) zcyl(l=30, d=tube_d1+1);
|
||||
translate([0,0,-7]) zcyl(l=25, d=tube_d2+delta, rounding=1);
|
||||
translate([18,0,0]) zcyl(l=30, d=tube_d1+1);
|
||||
}
|
||||
// [bottom]
|
||||
* translate([0,0,-175]) difference() {
|
||||
union() {
|
||||
cuboid([58,25,20], rounding=5);
|
||||
translate([0,-3,0]) rotate([90,0,0]) prismoid(size1=[30,20], size2=[24,20], h=25, rounding=1);
|
||||
translate([0,-27,0]) scale([1,.7,1]) zcyl(l=20, d=24, rounding=1);
|
||||
}
|
||||
translate([-18,0,5]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
zcyl(l=30, d=tube_d2+1);
|
||||
translate([18,0,5]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
rotate([90,0,180]) translate([0,0,8]) backScrew();
|
||||
zcyl(l=12, d=16, rounding=-1);
|
||||
translate([0,-23,0]) cuboid([11,25,20], rounding=-1);
|
||||
translate ([0,-23,0]) rotate([0,-90,0]) frontScrew();
|
||||
}
|
||||
|
||||
// [top]
|
||||
* rotate([-90,0,0]) {
|
||||
translate([0,0,30]) {
|
||||
difference() {
|
||||
cuboid([58,25,20], rounding=5);
|
||||
translate([-18,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
translate([18,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
}
|
||||
rotate([-90,0,0]) {
|
||||
translate([0,-14,0]) difference() {
|
||||
ycyl(l=40, d=20, rounding=10);
|
||||
translate([0,-9,0]) xcyl(l=20, d=6);
|
||||
translate([10.5,-12,0]) xcyl(l=6, d=30);
|
||||
translate([-10.5,-12,0]) xcyl(l=6, d=30);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// [middle]
|
||||
* rotate([90,0,0]) {
|
||||
difference() {
|
||||
cuboid([58,25,20], rounding=5);
|
||||
translate([-18,0,0]) zcyl(l=30, d=tube_d1+1);
|
||||
translate([0,0,-7]) zcyl(l=25, d=tube_d2+delta, rounding=1);
|
||||
translate([18,0,0]) zcyl(l=30, d=tube_d1+1);
|
||||
}
|
||||
}
|
||||
// [bottom]
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([58,25,20], rounding=5);
|
||||
translate([0,-3,0]) rotate([90,0,0]) prismoid(size1=[30,20], size2=[24,20], h=24, rounding=1);
|
||||
translate([0,-27,0]) scale([1,.5,1]) zcyl(l=20, d=24, rounding=1);
|
||||
translate([0,12,0]) ycyl(l=5, d=12, rounding=2);
|
||||
}
|
||||
translate([-18,0,5]) zcyl(l=25, d=tube_d1+delta1, rounding=1);
|
||||
zcyl(l=30, d=tube_d2+1);
|
||||
translate([18,0,5]) zcyl(l=25, d=tube_d1+delta1, rounding=1);
|
||||
rotate([90,0,180]) translate([0,0,9]) backScrew();
|
||||
zcyl(l=12, d=16, rounding=-1);
|
||||
translate([0,-25,0]) cuboid([11,25,20], rounding=-1);
|
||||
translate ([0,-23,0]) rotate([0,-90,0]) frontScrew();
|
||||
}
|
||||
25
tir_sportif/tripod/scad/04_legs.scad
Normal file
25
tir_sportif/tripod/scad/04_legs.scad
Normal file
@@ -0,0 +1,25 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
leg_l=150;
|
||||
leg_h=16;
|
||||
leg_w=10;
|
||||
|
||||
module leg() {
|
||||
difference() {
|
||||
union() {
|
||||
cuboid([leg_l-leg_h/1.5,leg_h,leg_w], rounding=2);
|
||||
translate([68,0,0]) zcyl(l=leg_w, d=leg_h, rounding=2);
|
||||
translate([-68,0,0]) zcyl(l=leg_w, d=leg_h, rounding=2);
|
||||
}
|
||||
translate([68,0,0]) zcyl(l=leg_w, d=5.5, rounding=-1);
|
||||
translate([-68,0,0]) zcyl(l=leg_w, d=5.5, rounding=-1);
|
||||
}
|
||||
}
|
||||
|
||||
for(i=[0:1:2]) {
|
||||
translate([0, (leg_h+5)*i,0]) {
|
||||
leg();
|
||||
}
|
||||
}
|
||||
24
tir_sportif/tripod/scad/05_reduc_20x16.scad
Normal file
24
tir_sportif/tripod/scad/05_reduc_20x16.scad
Normal file
@@ -0,0 +1,24 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Reduc 20x16
|
||||
h = 40;
|
||||
od = 30;
|
||||
id1 = 20.4;
|
||||
id2 = 17;
|
||||
|
||||
// Reduc
|
||||
difference() {
|
||||
zcyl(l=h, d=od, rounding=2);
|
||||
zcyl(l=h, d=id2, rounding=-1);
|
||||
translate([0,0,h/4]) zcyl(l=h/2, d=id1, rounding=-1);
|
||||
// Screw Hole
|
||||
color("red") {
|
||||
translate ([0,-10,-h/4]) rotate([90,0,0]) {
|
||||
DIN931("M5");
|
||||
translate ([0,0,2.2]) DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
38
tir_sportif/tripod/scad/06_rings.scad
Normal file
38
tir_sportif/tripod/scad/06_rings.scad
Normal file
@@ -0,0 +1,38 @@
|
||||
$fn = 60;
|
||||
height=12;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <BOSL2/shapes2d.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
module frontScrew() {
|
||||
cylinder(h=20, d=5.4, center=true);
|
||||
translate ([0,0,-7.5]) DIN931("M5");
|
||||
translate ([0,0,-9]) DIN931("M5");
|
||||
cylinder(h=25, d=5, center=true);
|
||||
translate([0,0,7.5]) cylinder(h=6, d=9);
|
||||
}
|
||||
|
||||
module backScrew() {
|
||||
cylinder(h=5,d=3);
|
||||
DIN931("M3");
|
||||
translate ([0,0,2]) DIN931("M3");
|
||||
}
|
||||
|
||||
color("cyan") {
|
||||
for(i=[0:1:2]) {
|
||||
translate([30*i,0,0]) {
|
||||
difference() {
|
||||
union() {
|
||||
zcyl(l=height, d=25, rounding=1);
|
||||
rotate([90,0,0]) prismoid(size1=[25,height], size2=[20,height], h=24, rounding=1);
|
||||
translate([0,-24,0]) scale([1,.7,1]) zcyl(l=height, d=20, rounding=1);
|
||||
}
|
||||
zcyl(l=height, d=16, rounding=-1);
|
||||
translate([0,-24,0]) cuboid([11,22,height], rounding=-1);
|
||||
rotate([90,0,180]) translate([0,0,8]) backScrew();
|
||||
translate ([0,-21.5,0]) rotate([0,-90,0]) frontScrew();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
tir_sportif/tripod/scad/07_knobs.scad
Normal file
42
tir_sportif/tripod/scad/07_knobs.scad
Normal file
@@ -0,0 +1,42 @@
|
||||
$fn=200;
|
||||
|
||||
include </home/julien/.local/share/OpenSCAD/libraries/boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Calculate optimal rows and columns
|
||||
n = 1;
|
||||
rows = floor(sqrt(n));
|
||||
cols = ceil(n/rows);
|
||||
|
||||
module knobs(size = 1) {
|
||||
difference() {
|
||||
union() {
|
||||
translate([-15,-15,0]) {
|
||||
linear_extrude(height = size)
|
||||
import("../svg/screw.svg");
|
||||
}
|
||||
translate([0,0,size]) {
|
||||
cylinder(5, d=size);
|
||||
}
|
||||
}
|
||||
// M5 screw hole
|
||||
color("red", alpha=1) {
|
||||
union() {
|
||||
translate([0,0,5]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
translate([0,0,2.5]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
cylinder(20, d=5.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Create a 2D array of squares
|
||||
for(i = [0:rows-1]) {
|
||||
for(j = [0:cols-1]) {
|
||||
translate([35*j,35*i,0]) {
|
||||
knobs(size = 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
14
tir_sportif/tripod/scad/07_plate.scad
Normal file
14
tir_sportif/tripod/scad/07_plate.scad
Normal file
@@ -0,0 +1,14 @@
|
||||
$fn = 60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
tube_dia=16;
|
||||
|
||||
// new
|
||||
cuboid([90,150,9], rounding=3) attach(BOT) textured_tile("trunc_diamonds", [80,140], tex_reps=[10,10]/*, style="convex"*/);
|
||||
translate([0,0,17]) {
|
||||
difference() {
|
||||
cyl(l=25, d1=80, d2=26, rounding1=-5, rounding2=5);
|
||||
zcyl(l=25, d=tube_dia+.5, rounding=-2);
|
||||
}
|
||||
}
|
||||
46
tir_sportif/tripod/scad/08_holder_round.scad
Normal file
46
tir_sportif/tripod/scad/08_holder_round.scad
Normal file
@@ -0,0 +1,46 @@
|
||||
$fn = 128;
|
||||
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
difference() {
|
||||
// Holder
|
||||
difference() {
|
||||
union() {
|
||||
color("red") {
|
||||
translate([-40,-90.384,0]) {
|
||||
linear_extrude(height = 8)
|
||||
import("../svg/holder.svg");
|
||||
}
|
||||
translate([0,-50.384,0]) {
|
||||
cylinder(4, d=80);
|
||||
}
|
||||
translate([0,-50.384,0]) {
|
||||
cylinder(3, d1=10, d2=80);
|
||||
}
|
||||
}
|
||||
cylinder(20, r=15);
|
||||
}
|
||||
}
|
||||
|
||||
cylinder(20, r=6.5);
|
||||
|
||||
// Hexagonal screw hole
|
||||
color("green") {
|
||||
rotate([0,0,180]) {
|
||||
translate ([0,-10.5,10]) {
|
||||
union() {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
translate ([0,3.5,0]) {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
34
tir_sportif/tripod/scad/08_holder_square.scad
Normal file
34
tir_sportif/tripod/scad/08_holder_square.scad
Normal file
@@ -0,0 +1,34 @@
|
||||
$fn = 60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
tube_dia=16;
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
// base
|
||||
cuboid([116,116,13], rounding=2);
|
||||
// tube
|
||||
translate([0,-68,0]) zcyl(l=13, d=26, rounding=2);
|
||||
// screw
|
||||
translate([0,-79.5,0]) cuboid([15,13,13], rounding=2);
|
||||
translate([0,-84.5,0]) xcyl(l=15, d=13, rounding=2);
|
||||
// back leg
|
||||
translate([0,-56.5,0]) rotate([90,0,0]) prismoid(size1=[80,13], size2=[25,13], h=13, rounding=2);
|
||||
}
|
||||
translate([0,0,3]) cuboid([110,110,11], rounding=2);
|
||||
// middle round
|
||||
translate([0,0,-2.5]) zcyl(l=2, d=80, rounding=1);
|
||||
// tube
|
||||
translate([0,-68,0]) zcyl(l=13, d=tube_dia+.5, rounding=-1);
|
||||
// hex screw hole
|
||||
translate([0,-84.5,0]) {
|
||||
cuboid([1.5,20,15]);
|
||||
translate ([-4.5,0,0]) rotate([0,90,0]) {
|
||||
DIN931("M5");
|
||||
zcyl(l=15, d=5.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
208
tir_sportif/tripod/scad/10_closure.scad
Normal file
208
tir_sportif/tripod/scad/10_closure.scad
Normal file
@@ -0,0 +1,208 @@
|
||||
id = 16.5; // inner diameter of ring
|
||||
od = id+5; // outer diameter of ring
|
||||
height = 16; // height of ring
|
||||
gap = 120; // ring opening in degrees
|
||||
ends=1; // 0 no ends, 1 round ends, 2 clamp ends
|
||||
hd=4; // mount hole diameter
|
||||
cd=8; // countersink diameter
|
||||
cdepth=3; // coutersink depth
|
||||
blobsize=1; // size of rounded ends, if ends==1
|
||||
sw=16; // mounting block width
|
||||
sdepth=3; // support depth
|
||||
nholes=1; // number of support holes.
|
||||
block_holes=[1]; // block some holes e.g. [2,3]
|
||||
sh=14; // mounting block height. NB total height is nholes x height.
|
||||
support_loc=0; // 0 = mounting block is centered, >0 centred on hole number
|
||||
support_rot=90; // support angle / clamp angle.
|
||||
flat_bottom=false; //remove all points below the bottom of the ring for ease of printing
|
||||
clamp_width=5; // width of clamp ends
|
||||
clamp_depth=10; // depth of clamp ends
|
||||
clamp_height=10; // height of clamp ends
|
||||
clamp_hole=3; // diameter of clap screw hole
|
||||
clamp_holew=1; // clamp hole width
|
||||
|
||||
// internal constants
|
||||
$fn=100;
|
||||
g=1/(nholes+1);
|
||||
fracs=[for (i=[g:g:(1-g)]) each i];
|
||||
sh2=sh+cd;
|
||||
|
||||
module main() {
|
||||
difference() {
|
||||
union(){
|
||||
// the clip
|
||||
clip();
|
||||
// mounting block
|
||||
if (nholes>0) {
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
support_block();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
support_block();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(nholes>0){
|
||||
// holes go through clip and mounting block
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
holes();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
holes();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//flat bottom
|
||||
if (flat_bottom) {
|
||||
translate([0,0,-(od+sh)-height/2]) {
|
||||
cube(2*(od+sh),center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //main
|
||||
|
||||
|
||||
module end_blobs(h,d,angle,od,center=false) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
rotate([0,0,angle]) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
}
|
||||
} //end_blobs
|
||||
|
||||
module end_clamps(){
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,-clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
|
||||
rotate([0,0,gap]) {
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module wedge(h,d,angle,center=false) {
|
||||
intersection(){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
x = (sqrt(2*(d^2))/2)+1;
|
||||
y = 0;
|
||||
xr = x*cos(angle)-y*sin(angle);
|
||||
yr = x*sin(angle)+y*cos(angle);
|
||||
|
||||
linear_extrude(h*2,center=center){
|
||||
if (angle<=90){
|
||||
polygon([[x,0],[xr,yr],[0,0]]);
|
||||
} else if (angle<=180) {
|
||||
polygon([[x,0],[0,x],[xr,yr],[0,0]]);
|
||||
} else if (angle<=270) {
|
||||
polygon([[x,0],[0,x],[-x,0],[xr,yr],[0,0]]);
|
||||
} else {
|
||||
polygon([[x,0],[0,x],[-x,0],[0,-x],[xr,yr],[0,0]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //wedge
|
||||
|
||||
module support_block() {
|
||||
for (k = [g:g:(1-g)]) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
cube([sdepth,sw,sh],center=true);
|
||||
}
|
||||
}
|
||||
} //support_block
|
||||
|
||||
module clip(){
|
||||
rotate([0,0,-gap/2]){
|
||||
difference() {
|
||||
cylinder(h=height,d=od,center=true);
|
||||
cylinder(h=height*2,d=id,center=true);
|
||||
wedge(h=height*2,d=od+1,center=true,angle=gap);
|
||||
}
|
||||
if (ends==1) {
|
||||
end_blobs(h=height,d=((od-id)/2)+blobsize,angle=gap,od=(id+(od-id)/2)/2,center=true);
|
||||
}
|
||||
if (ends==2) {
|
||||
end_clamps();
|
||||
}
|
||||
}
|
||||
|
||||
} //clip
|
||||
|
||||
module holes(){
|
||||
|
||||
for (f = [1:nholes]) {
|
||||
k=fracs[f-1];
|
||||
if (len(search(f,block_holes))==0) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
// mount holes
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=hd,center=true);
|
||||
}
|
||||
// countersink
|
||||
translate([sdepth/2-cdepth,0,0]){
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=cd);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
// base ring
|
||||
main();
|
||||
// closure
|
||||
translate([-21.5,-16,0]) {
|
||||
linear_extrude(height = 16, center=true)
|
||||
import("../svg/closure_ext.svg");
|
||||
}
|
||||
}
|
||||
translate([-21.5,-16,0]) {
|
||||
linear_extrude(height = 8, center=true)
|
||||
import("../svg/closure_hole.svg");
|
||||
}
|
||||
}
|
||||
200
tir_sportif/tripod/scad/11_name_tag.scad
Normal file
200
tir_sportif/tripod/scad/11_name_tag.scad
Normal file
@@ -0,0 +1,200 @@
|
||||
id = 16; // inner diameter of ring
|
||||
od = id+5; // outer diameter of ring
|
||||
height = 5; // height of ring
|
||||
gap = 100; // ring opening in degrees
|
||||
ends=1; // 0 no ends, 1 round ends, 2 clamp ends
|
||||
hd=1; // mount hole diameter
|
||||
cd=7; // countersink diameter
|
||||
cdepth=3; // coutersink depth
|
||||
blobsize=1; // size of rounded ends, if ends==1
|
||||
sw=5; // mounting block width
|
||||
sdepth=14; // support depth
|
||||
nholes=1; // number of support holes.
|
||||
block_holes=[1,2,3,4,5]; // block some holes e.g. [2,3]
|
||||
sh=10; // mounting block height. NB total height is nholes x height.
|
||||
support_loc=0; // 0 = mounting block is centered, >0 centred on hole number
|
||||
support_rot=90; // support angle / clamp angle.
|
||||
flat_bottom=false; //remove all points below the bottom of the ring for ease of printing
|
||||
clamp_width=5; // width of clamp ends
|
||||
clamp_depth=10; // depth of clamp ends
|
||||
clamp_height=10; // height of clamp ends
|
||||
clamp_hole=3; // diameter of clap screw hole
|
||||
clamp_holew=1; // clamp hole width
|
||||
|
||||
// internal constants
|
||||
$fn=100;
|
||||
g=1/(nholes+1);
|
||||
fracs=[for (i=[g:g:(1-g)]) each i];
|
||||
sh2=sh+cd;
|
||||
|
||||
module main() {
|
||||
difference() {
|
||||
union(){
|
||||
// the clip
|
||||
clip();
|
||||
// mounting block
|
||||
if (nholes>0) {
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
support_block();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
support_block();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(nholes>0){
|
||||
// holes go through clip and mounting block
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
holes();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
holes();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//flat bottom
|
||||
if (flat_bottom) {
|
||||
translate([0,0,-(od+sh)-height/2]) {
|
||||
cube(2*(od+sh),center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //main
|
||||
|
||||
|
||||
module end_blobs(h,d,angle,od,center=false) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
rotate([0,0,angle]) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
}
|
||||
} //end_blobs
|
||||
|
||||
module end_clamps(){
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,-clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
|
||||
rotate([0,0,gap]) {
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module wedge(h,d,angle,center=false) {
|
||||
intersection(){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
x = (sqrt(2*(d^2))/2)+1;
|
||||
y = 0;
|
||||
xr = x*cos(angle)-y*sin(angle);
|
||||
yr = x*sin(angle)+y*cos(angle);
|
||||
|
||||
linear_extrude(h*2,center=center){
|
||||
if (angle<=90){
|
||||
polygon([[x,0],[xr,yr],[0,0]]);
|
||||
} else if (angle<=180) {
|
||||
polygon([[x,0],[0,x],[xr,yr],[0,0]]);
|
||||
} else if (angle<=270) {
|
||||
polygon([[x,0],[0,x],[-x,0],[xr,yr],[0,0]]);
|
||||
} else {
|
||||
polygon([[x,0],[0,x],[-x,0],[0,-x],[xr,yr],[0,0]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //wedge
|
||||
|
||||
module support_block() {
|
||||
for (k = [g:g:(1-g)]) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
cube([sdepth,sw,sh],center=true);
|
||||
}
|
||||
}
|
||||
} //support_block
|
||||
|
||||
module clip(){
|
||||
rotate([0,0,-gap/2]){
|
||||
difference() {
|
||||
cylinder(h=height,d=od,center=true);
|
||||
cylinder(h=height*2,d=id,center=true);
|
||||
wedge(h=height*2,d=od+1,center=true,angle=gap);
|
||||
}
|
||||
if (ends==1) {
|
||||
end_blobs(h=height,d=((od-id)/2)+blobsize,angle=gap,od=(id+(od-id)/2)/2,center=true);
|
||||
}
|
||||
if (ends==2) {
|
||||
end_clamps();
|
||||
}
|
||||
}
|
||||
|
||||
} //clip
|
||||
|
||||
module holes(){
|
||||
|
||||
for (f = [1:nholes]) {
|
||||
k=fracs[f-1];
|
||||
if (len(search(f,block_holes))==0) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
// mount holes
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=hd,center=true);
|
||||
}
|
||||
// countersink
|
||||
translate([sdepth/2-cdepth,0,0]){
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=cd);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
translate([-21.5,0,3.5]) {
|
||||
rotate([90,0,-90]) {
|
||||
linear_extrude(height = 3, center=true)
|
||||
import("../svg/name_tag_ines.svg");
|
||||
}
|
||||
}
|
||||
13
tir_sportif/tripod/scad/caps.scad
Normal file
13
tir_sportif/tripod/scad/caps.scad
Normal file
@@ -0,0 +1,13 @@
|
||||
$fn = 128;
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,10]) {
|
||||
scale([1,1,0.5]) {
|
||||
sphere(r=9.5);
|
||||
}
|
||||
}
|
||||
cylinder(10, d=19);
|
||||
}
|
||||
cylinder(9, d=17);
|
||||
}
|
||||
200
tir_sportif/tripod/scad/circle_mount_v1.scad
Normal file
200
tir_sportif/tripod/scad/circle_mount_v1.scad
Normal file
@@ -0,0 +1,200 @@
|
||||
id = 20; // inner diameter of ring
|
||||
od = id+5; // outer diameter of ring
|
||||
height = 5; // height of ring
|
||||
gap = 100; // ring opening in degrees
|
||||
ends=1; // 0 no ends, 1 round ends, 2 clamp ends
|
||||
hd=1; // mount hole diameter
|
||||
cd=7; // countersink diameter
|
||||
cdepth=3; // coutersink depth
|
||||
blobsize=2; // size of rounded ends, if ends==1
|
||||
sw=5; // mounting block width
|
||||
sdepth=11.5; // support depth
|
||||
nholes=1; // number of support holes.
|
||||
block_holes=[1,2,3,4,5]; // block some holes e.g. [2,3]
|
||||
sh=10; // mounting block height. NB total height is nholes x height.
|
||||
support_loc=0; // 0 = mounting block is centered, >0 centred on hole number
|
||||
support_rot=90; // support angle / clamp angle.
|
||||
flat_bottom=false; //remove all points below the bottom of the ring for ease of printing
|
||||
clamp_width=5; // width of clamp ends
|
||||
clamp_depth=10; // depth of clamp ends
|
||||
clamp_height=10; // height of clamp ends
|
||||
clamp_hole=3; // diameter of clap screw hole
|
||||
clamp_holew=1; // clamp hole width
|
||||
|
||||
// internal constants
|
||||
$fn=100;
|
||||
g=1/(nholes+1);
|
||||
fracs=[for (i=[g:g:(1-g)]) each i];
|
||||
sh2=sh+cd;
|
||||
|
||||
module main() {
|
||||
difference() {
|
||||
union(){
|
||||
// the clip
|
||||
clip();
|
||||
// mounting block
|
||||
if (nholes>0) {
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
support_block();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
support_block();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(nholes>0){
|
||||
// holes go through clip and mounting block
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
holes();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
holes();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//flat bottom
|
||||
if (flat_bottom) {
|
||||
translate([0,0,-(od+sh)-height/2]) {
|
||||
cube(2*(od+sh),center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //main
|
||||
|
||||
|
||||
module end_blobs(h,d,angle,od,center=false) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
rotate([0,0,angle]) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
}
|
||||
} //end_blobs
|
||||
|
||||
module end_clamps(){
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,-clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
|
||||
rotate([0,0,gap]) {
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module wedge(h,d,angle,center=false) {
|
||||
intersection(){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
x = (sqrt(2*(d^2))/2)+1;
|
||||
y = 0;
|
||||
xr = x*cos(angle)-y*sin(angle);
|
||||
yr = x*sin(angle)+y*cos(angle);
|
||||
|
||||
linear_extrude(h*2,center=center){
|
||||
if (angle<=90){
|
||||
polygon([[x,0],[xr,yr],[0,0]]);
|
||||
} else if (angle<=180) {
|
||||
polygon([[x,0],[0,x],[xr,yr],[0,0]]);
|
||||
} else if (angle<=270) {
|
||||
polygon([[x,0],[0,x],[-x,0],[xr,yr],[0,0]]);
|
||||
} else {
|
||||
polygon([[x,0],[0,x],[-x,0],[0,-x],[xr,yr],[0,0]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //wedge
|
||||
|
||||
module support_block() {
|
||||
for (k = [g:g:(1-g)]) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
cube([sdepth,sw,sh],center=true);
|
||||
}
|
||||
}
|
||||
} //support_block
|
||||
|
||||
module clip(){
|
||||
rotate([0,0,-gap/2]){
|
||||
difference() {
|
||||
cylinder(h=height,d=od,center=true);
|
||||
cylinder(h=height*2,d=id,center=true);
|
||||
wedge(h=height*2,d=od+1,center=true,angle=gap);
|
||||
}
|
||||
if (ends==1) {
|
||||
end_blobs(h=height,d=((od-id)/2)+blobsize,angle=gap,od=(id+(od-id)/2)/2,center=true);
|
||||
}
|
||||
if (ends==2) {
|
||||
end_clamps();
|
||||
}
|
||||
}
|
||||
|
||||
} //clip
|
||||
|
||||
module holes(){
|
||||
|
||||
for (f = [1:nholes]) {
|
||||
k=fracs[f-1];
|
||||
if (len(search(f,block_holes))==0) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
// mount holes
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=hd,center=true);
|
||||
}
|
||||
// countersink
|
||||
translate([sdepth/2-cdepth,0,0]){
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=cd);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
translate([-21.5,0,4.5]) {
|
||||
rotate([90,0,-90]) {
|
||||
* linear_extrude(height = 3, center=true)
|
||||
import("../svg/name_tag.svg");
|
||||
}
|
||||
}
|
||||
18
tir_sportif/tripod/scad/drill_tool.scad
Normal file
18
tir_sportif/tripod/scad/drill_tool.scad
Normal file
@@ -0,0 +1,18 @@
|
||||
$fn = 128;
|
||||
|
||||
difference() {
|
||||
cube([23,23,20]);
|
||||
* translate([3,3,3]) {
|
||||
cube(17,17,18);
|
||||
}
|
||||
translate([11.5,11.5,3]) {
|
||||
cylinder(18,d=17);
|
||||
}
|
||||
color("red") {
|
||||
rotate([0,90,0]) {
|
||||
translate([-11,12,0]) {
|
||||
cylinder(23,d=5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
13
tir_sportif/tripod/scad/inner_end_17x12.scad
Normal file
13
tir_sportif/tripod/scad/inner_end_17x12.scad
Normal file
@@ -0,0 +1,13 @@
|
||||
$fn=60;
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
h = 40;
|
||||
od = 17;
|
||||
id1 = 12.4;
|
||||
|
||||
difference() {
|
||||
zcyl(l=h, d=od, rounding=2);
|
||||
translate([0,0,3]) zcyl(l=h-6, d=id1, rounding=-1);
|
||||
|
||||
}
|
||||
64
tir_sportif/tripod/scad/parametric_Hex_knob.scad
Normal file
64
tir_sportif/tripod/scad/parametric_Hex_knob.scad
Normal file
@@ -0,0 +1,64 @@
|
||||
//knob parameters
|
||||
KNOB_HEIGHT=15;
|
||||
KNOB_DIAM=30;
|
||||
|
||||
//screw parameters
|
||||
SCREWHEAD_FACETOFACE=8;
|
||||
SCREWHEAD_DEPTH=10;
|
||||
THRU_HOLE_DIAM=5.2;
|
||||
|
||||
//grippy cutouts parameters
|
||||
NUM_GRIP_CUTOUTS=10;
|
||||
GRIP_CUTOUT_DIAM=4;
|
||||
CUTOUT_RADIUS_ADJ=1;
|
||||
|
||||
module FaceToFaceHex(width,height){
|
||||
|
||||
cube([width/sqrt(3),width,height],center = true,$fn=64);
|
||||
rotate([0,0,120])cube([width/sqrt(3),width,height],center = true);
|
||||
rotate([0,0,240])cube([width/sqrt(3),width,height],center = true);
|
||||
|
||||
}
|
||||
// a=angle, r=radius of rotation
|
||||
module rotate_on_circle(angle, radius) {
|
||||
dx=radius*sin(angle);
|
||||
dy=radius*cos(angle);
|
||||
translate([dx,dy,0])
|
||||
children();
|
||||
}
|
||||
|
||||
rotate([180,0,0]) {
|
||||
difference(){
|
||||
//Knob
|
||||
union(){
|
||||
translate([0, 0, -(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)+0.01)])
|
||||
cylinder(r=KNOB_DIAM/2, h=KNOB_HEIGHT, center=true,$fn=64);
|
||||
translate([0, 0, -(((KNOB_HEIGHT-SCREWHEAD_DEPTH+KNOB_HEIGHT)/2))]) {
|
||||
cylinder(r=KNOB_DIAM/4, h=KNOB_HEIGHT/2, center=true,$fn=64);
|
||||
}
|
||||
};
|
||||
//screw
|
||||
union(){
|
||||
//screwHead
|
||||
FaceToFaceHex(SCREWHEAD_FACETOFACE,SCREWHEAD_DEPTH);
|
||||
//screwHole
|
||||
translate([0, 0, -(((KNOB_HEIGHT+SCREWHEAD_DEPTH)/2)+0.001)])
|
||||
cylinder(r=THRU_HOLE_DIAM/2, h=KNOB_HEIGHT+KNOB_HEIGHT/2+0.001, center=true,$fn=64);
|
||||
};
|
||||
//grippyCutouts
|
||||
for(i=[1:NUM_GRIP_CUTOUTS]){
|
||||
rot_angle=(360/NUM_GRIP_CUTOUTS)*i;
|
||||
translate([0,0,-(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)+0.01)])
|
||||
rotate_on_circle(rot_angle,(KNOB_DIAM/2)+CUTOUT_RADIUS_ADJ)
|
||||
cylinder(r=GRIP_CUTOUT_DIAM/2,h=KNOB_HEIGHT+0.01,center=true,$fn=64);
|
||||
};
|
||||
//top filet
|
||||
translate([0, 0,-(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)-0.1)])
|
||||
rotate_extrude()
|
||||
polygon(points = [[KNOB_DIAM,KNOB_HEIGHT], [0,KNOB_HEIGHT+2],[0,KNOB_HEIGHT],[KNOB_DIAM/1.29,0]],$fn=100);
|
||||
//down filet
|
||||
translate([0, 0,-(((KNOB_HEIGHT-SCREWHEAD_DEPTH)/2)+0.1)])
|
||||
rotate_extrude()
|
||||
polygon(points = [[-KNOB_DIAM,-KNOB_HEIGHT], [0,-KNOB_HEIGHT-2],[0,-KNOB_HEIGHT],[-KNOB_DIAM/1.29,0]],$fn=100);
|
||||
}
|
||||
}
|
||||
31
tir_sportif/tripod/scad/ring_test.scad
Normal file
31
tir_sportif/tripod/scad/ring_test.scad
Normal file
@@ -0,0 +1,31 @@
|
||||
$fn = 200;
|
||||
|
||||
include <boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
difference() {
|
||||
difference() {
|
||||
// Holder
|
||||
union() {
|
||||
linear_extrude(height = 16)
|
||||
import("../svg/center_blocker.svg");
|
||||
translate([50.5,0,8]) {
|
||||
rotate([0,90,0]) {
|
||||
cylinder(7, r=8);
|
||||
}
|
||||
}
|
||||
translate([58.5,0,8]) {
|
||||
rotate([0,90,0]) {
|
||||
cylinder(7, r=8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Hexagonal screw hole
|
||||
color("green") {
|
||||
translate ([54,0,8]) {
|
||||
rotate([0,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4
tir_sportif/tripod/scad/test.scad
Normal file
4
tir_sportif/tripod/scad/test.scad
Normal file
@@ -0,0 +1,4 @@
|
||||
$fn = 256;
|
||||
|
||||
rotate_extrude(angle=360, convexity=10)
|
||||
import("../svg/test.svg");
|
||||
44
tir_sportif/tripod/scad/tube_clip.scad
Normal file
44
tir_sportif/tripod/scad/tube_clip.scad
Normal file
@@ -0,0 +1,44 @@
|
||||
// Provided under a Creative Commons Share Alike License
|
||||
// CC-BY-SA
|
||||
// Created by MacLemon
|
||||
|
||||
// This Clip is used for mounting an LED strip to a pipe. Either place it between LEDs, or print from translucent material. I recommend using PET-G.
|
||||
|
||||
//$fn=30; // Usually fine for rendering previews.
|
||||
//$fn=60; // Used for final rending to .stl. (Yes, this IS slow.)
|
||||
$fn= $preview ? 15 : 30; // uses 30 fragments for preview, 64 for rendering.
|
||||
|
||||
pipe_diameter = 16.3; //mm Diameter of the pipe the clip shall hold on to.
|
||||
outer_diameter = 23; //mm Outer diamter of the clip. (How beefy the clip is.
|
||||
clip_width = 7; //mm Thickness of the clip. Shall fit in between LEDs.
|
||||
strip_width = 12.3; //mm How wide the LED strip to be mounted is.
|
||||
strip_height = 3; //mm Thickness, or how tall is the LED strip including an optional Epoxy cover.
|
||||
|
||||
rounding = 1; //mm
|
||||
clip_thickness = outer_diameter - pipe_diameter; // mm
|
||||
|
||||
minkowski(){
|
||||
difference(){
|
||||
hull(){ // ring + LED strip holder block
|
||||
cylinder (r = outer_diameter / 2 - rounding / 2, h = clip_width - rounding, center = true); // Clip Ring
|
||||
translate ([(pipe_diameter + strip_height) / 2, 0, 0])
|
||||
cube ([ strip_height + clip_thickness - rounding, strip_width + clip_thickness, clip_width - rounding], center = true); // LED Block
|
||||
translate ([(-pipe_diameter - strip_height) / 2, 0, 0])
|
||||
cube ([ strip_height + clip_thickness - rounding, strip_width + clip_thickness, clip_width - rounding], center = true); // grip Block
|
||||
}
|
||||
|
||||
// Remove LED strip cutout
|
||||
translate ([(pipe_diameter / 2 + strip_height + rounding)/2, 0, 0])
|
||||
cube ([(pipe_diameter / 2 + strip_height + rounding), strip_width + rounding , clip_width * 2], center = true);
|
||||
|
||||
// Remove clip on section
|
||||
translate ([-sqrt(2 * pow(outer_diameter, 2))/2, 0, 0])
|
||||
rotate ([0, 0 ,135]) {
|
||||
cube ([outer_diameter, outer_diameter, clip_width * 2 ], center = true);
|
||||
}
|
||||
|
||||
// Remove pipe
|
||||
#cylinder (r = pipe_diameter / 2 + rounding, h = clip_width * 12, center = true);
|
||||
}
|
||||
sphere (r = rounding);
|
||||
}
|
||||
4
tir_sportif/tripod/scad/ujoint.scad
Normal file
4
tir_sportif/tripod/scad/ujoint.scad
Normal file
@@ -0,0 +1,4 @@
|
||||
include <ujoint/ujoint.scad>
|
||||
|
||||
//create a ujoint with a radius of 20mm
|
||||
ujoint(R=10);
|
||||
44
tir_sportif/tripod/scad/v2_bottom.scad
Normal file
44
tir_sportif/tripod/scad/v2_bottom.scad
Normal file
@@ -0,0 +1,44 @@
|
||||
$fn = 128;
|
||||
|
||||
include </home/julien/.local/share/OpenSCAD/libraries/boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
difference() {
|
||||
rotate_extrude(angle=360, convexity=10)
|
||||
import("../svg/v2_bottom.svg");
|
||||
translate([0,0,-1]) {
|
||||
for(i=[1:1:3]) {
|
||||
rotate([0,0,i*120]) {
|
||||
linear_extrude(26)
|
||||
import("../svg/v2_tripod_holes.svg");
|
||||
}
|
||||
}
|
||||
}
|
||||
// Legs screw holes
|
||||
color("red") {
|
||||
for(i=[1:1:3]) {
|
||||
translate ([0,0,10]) {
|
||||
rotate([0,90,i*120-90]) {
|
||||
linear_extrude(height=35,center=true)
|
||||
import("../svg/v2_screw_holes.svg");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Hexagonal screw hole
|
||||
color("green") {
|
||||
rotate([0,0,150]) {
|
||||
translate ([0,-15,10]) {
|
||||
union() {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
translate ([0,3,0]) {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
tir_sportif/tripod/scad/v2_mid.scad
Normal file
42
tir_sportif/tripod/scad/v2_mid.scad
Normal file
@@ -0,0 +1,42 @@
|
||||
$fn = 128;
|
||||
|
||||
include </home/julien/.local/share/OpenSCAD/libraries/boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
difference() {
|
||||
rotate_extrude(angle=360, convexity=10)
|
||||
import("../svg/v2_mid.svg");
|
||||
for(i=[1:1:3]) {
|
||||
rotate([0,0,i*120]) {
|
||||
linear_extrude(25)
|
||||
import("../svg/v2_tripod_holes.svg");
|
||||
}
|
||||
}
|
||||
// Legs screw holes
|
||||
color("red") {
|
||||
for(i=[1:1:3]) {
|
||||
translate ([0,0,10]) {
|
||||
rotate([0,90,i*120-90]) {
|
||||
linear_extrude(height=35,center=true)
|
||||
import("../svg/v2_screw_holes.svg");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Hexagonal screw hole
|
||||
color("green") {
|
||||
rotate([0,0,150]) {
|
||||
translate ([0,-13,42]) {
|
||||
union() {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
translate ([0,3,0]) {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
27
tir_sportif/tripod/scad/v2_top.scad
Normal file
27
tir_sportif/tripod/scad/v2_top.scad
Normal file
@@ -0,0 +1,27 @@
|
||||
$fn = 128;
|
||||
|
||||
include </home/julien/.local/share/OpenSCAD/libraries/boltsos_0.4.1/BOLTS.scad>
|
||||
|
||||
// Reduc 20x16
|
||||
difference() {
|
||||
rotate_extrude(angle=360, convexity=10)
|
||||
import("../svg/reduc_20x16.svg");
|
||||
|
||||
// Hexagonal screw hole
|
||||
color("green") {
|
||||
rotate([0,0,150]) {
|
||||
translate ([0,-12,30]) {
|
||||
union() {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
translate ([0,3,0]) {
|
||||
rotate([90,90,0]) {
|
||||
DIN931("M5");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user