trestlebase = 80; // fixme needs to be checked
include <doveclip.scad>
+include <axlepin.scad>
-spoolwidthgap = 2;
-barrady = 5;
-barradz = 7;
-guidewidth = 3;
-guiderad = 20;
+spoolinnerslop = 2;
+
+barrad = 7;
+barwasherrad = 17;
legw = 12;
plugl = 20;
trestleplugd = 1;
topblockthick = 4;
-topblockbasedepth = 4;
+topblockbasedepth = 5;
pinbasew = 5.0;
pinminh = 1.5;
-pinmaxh = 4.0;
-pindh = 0.75;
+pinmaxh = 4.5;
+pindh = 0.50;
pindwidth = 0.75;
pintaperlen = plugwmax * 0.85;
pinstraightlen = 10;
+spoolouterpad = AxlePin_holerad()*2 * 1.5;
+spoolbarlen = spoolwidth +
+ 2*(Washer_thick() + AxlePin_holerad() + spoolinnerslop + spoolouterpad);
+
module Plug(d=0){
dw = d;
dh = d;
+ dhb = d*2;
a = atan(plugslope);
- bdx = dw / cos(a);
+ bdy = -dhb;
+ bdx = dw / cos(a) + bdy * plugslope;
tdy = dh;
- tdx = bdx + dh * plugslope;
+ tdx = bdx + tdy * plugslope;
translate([-d,0,0]) rotate([90,0,90]) linear_extrude(height=plugl+0.1+d*2){
- polygon([[-(plugwmin/2 + bdx), 0],
+ polygon([[-(plugwmin/2 + bdx), bdy],
[-(plugwmax/2 + tdx), plugh + tdy],
[+(plugwmax/2 + tdx), plugh + tdy],
- [+(plugwmin/2 + bdx), 0]]);
+ [+(plugwmin/2 + bdx), bdy]]);
}
}
-module Bar(){
- spoolw = spoolwidth + spoolwidthgap*2;
- barz = barradz * 0.5;
+module Bar(){ ////toplevel
+ spoolw = spoolbarlen;
+ barz = barrad * 0.5;
biggestw = spoolw + 50;
intersection(){
for (mir=[0,1]) {
mirror([mir,0,0]) {
- translate([0,0,barz]) {
- scale([1,barrady,barradz]) translate([-1,0,0])
- rotate([0,90,0]) cylinder(r=1, h=spoolw/2+2, $fn=30);
- translate([spoolw/2,0,0])
- rotate([0,90,0]) cylinder(r=guiderad, h=guidewidth, $fn=60);
- }
- translate([spoolw/2 + guidewidth, 0, 0])
+ translate([spoolw/2, 0, 0])
Plug();
+ translate([-1, -50, -50])
+ cube([spoolw/2+1.1, 100, 100]);
}
}
- translate([-biggestw/2, -50, 0])
- cube([biggestw, 100, 100]);
+ difference(){
+ translate([-biggestw/2, -50, 0])
+ cube([biggestw, 100, 100]);
+ for (mir=[0,1]) {
+ mirror([mir,0,0])
+ translate([spoolwidth/2 + Washer_thick() + spoolinnerslop +
+ AxlePin_holerad()*0.5,
+ 0, -50])
+ cylinder(r=AxlePin_holerad(), 100, $fn=15);
+ }
+ }
+ translate([0,0,barz]) {
+ translate([-100,0,0])
+ rotate([0,90,0]) cylinder(r=barrad, h=200, $fn=30);
+ }
}
}
-module Trestle(){
+module FtAxlePin(){ ////toplevel
+ AxlePin(barrad, (barrad + barwasherrad*2)/3 * 2);
+}
+
+module AxleWasher(){ ////toplevel
+ Washer(barrad, barwasherrad);
+}
+
+module Trestle(){ ////toplevel
legang = atan2(trestlebase/2, trestleheight);
eplen = sqrt(trestleheight*trestleheight + trestlebase*trestlebase*0.25);
topblockw = plugwmax + trestleplugd*2 + topblockthick*2;
for (rot=[0,180]) {
translate([0,0,plugl/2]) rotate([0,rot,0]) translate([0,0,-plugl/2]) {
translate([-(topblockw*0.25+1),
- plugh + pindh - (pinmaxh - pinminh)*0.5,
+ plugh + pindh - (pinmaxh - pinminh)*0.75,
(plugl - pinholebasew*2)/3]) {
translate([0,0,pinholebasew/2]) rotate([-90,0,0]) %Pin();
rotate([0,90,0]) {
}
}
-module Pin(){
+module Pin(){ ////toplevel
rotate([90,0,90]) {
hull(){
for (mir=[0,1]) {
}
}
-module TestKit(){
+module TestKit(){ ////toplevel
translate([30,0,0]) Pin();
translate([30,30,0]) Pin();
translate([0,40,0]) intersection(){
}
}
-//Bar();
+Bar();
+//FtAxlePin();
+//AxleWasher();
//Trestle();
//Pin();
-
-TestKit();
-
+//TestKit();
//Plug(d=1);
//ExtenderPillars(80,12,8, baseweb=true);