3 spoolwidth = 80; // fixme needs to be measured
4 spoolinnerrad = 25; // fixme needs to be checked
5 spoolouterrad = 60; // fixme needs to be checked
7 include <doveclip.scad>
22 hubbasestalkwidth = 4;
25 hubbaserad = spoolinnerrad + 10;
26 hubmainrad = spoolinnerrad - spoolradslop;
33 plugwmax = plugwmin + plugh * plugslope * 2;
40 topblockbasedepth = 5;
48 pintaperlen = plugwmax * 0.85;
49 pinstraightlen = 17.5;
51 spoolouterpad = AxlePin_holerad()*2 * 1.5;
52 spoolbarlen = spoolwidth +
53 2*(Washer_thick() + hubbasethick + AxlePin_holerad()
54 + spoolinnerslop + spoolouterpad);
56 axlepin_x = spoolwidth/2 + hubbasethick +
57 Washer_thick() + spoolinnerslop + AxlePin_holerad()*0.5;
59 trestleheight = spoolouterrad + spoolradclear - barz;
60 trestlebase = trestleheight * 1.2;
68 bdx = dw / cos(a) + bdy * plugslope;
70 tdx = bdx + tdy * plugslope;
71 translate([-d,0,0]) rotate([90,0,90]) linear_extrude(height=plugl+0.1+d*2){
72 polygon([[-(plugwmin/2 + bdx), bdy],
73 [-(plugwmax/2 + tdx), plugh + tdy],
74 [+(plugwmax/2 + tdx), plugh + tdy],
75 [+(plugwmin/2 + bdx), bdy]]);
79 module Bar(){ ////toplevel
81 biggestw = spoolw + 50;
86 translate([spoolw/2, 0, 0])
88 translate([-1, -50, -50])
89 cube([spoolw/2+1.1, 100, 100]);
93 translate([-biggestw/2, -50, 0])
94 cube([biggestw, 100, 100]);
97 translate([axlepin_x, 0, -50])
98 cylinder(r=AxlePin_holerad(), 100, $fn=15);
101 translate([0,0,barz]) {
102 translate([-100,0,0])
103 rotate([0,90,0]) cylinder(r=axlerad, h=200, $fn=30);
108 module FtAxlePin(){ ////toplevel
109 AxlePin(axlerad, (axlerad + barwasherrad*2)/3 * 2);
112 module AxleWasher(){ ////toplevel
113 Washer(axlerad, barwasherrad);
116 module Trestle(){ ////toplevel
117 legang = atan2(trestlebase/2, trestleheight);
118 eplen = sqrt(trestleheight*trestleheight + trestlebase*trestlebase*0.25);
119 topblockw = plugwmax + trestleplugd*2 + topblockthick*2;
121 pinholebasew = pinbasew + pindwidth*2;
122 pinholeh = pinmaxh + pindh;
128 rotate([0,0, -90-legang])
129 ExtenderPillars(length=eplen+trestlelegw,
134 translate([-trestlebase/2, -trestleheight, 0])
135 cylinder(r=trestlelegw/2*1.2, h=plugl);
138 translate([-topblockw/2, -topblockbasedepth, 0])
140 topblockbasedepth + plugh + topblockthick
141 + (pinmaxh - pinminh)*0.6 + pindh,
144 translate([-trestlebase/2, -trestleheight, 0])
145 ExtenderPillars(length=trestlebase, width=trestlebaseh*2, height=legw);
147 translate([-300, -trestleheight-50, -1])
148 cube([600, 50, plugl+2]);
151 Plug(d=trestleplugd);
154 translate([0,0,plugl/2]) rotate([0,rot,0]) translate([0,0,-plugl/2]) {
156 plugh + pindh - (pinmaxh - pinminh)*0.75,
157 (plugl - pinholebasew*2)/3]) {
158 translate([-(topblockw*0.25+1), 0, pinholebasew/2])
159 rotate([-90,0,0]) %Pin();
160 translate([-(topblockw+1), 0, 0]) {
162 linear_extrude(height = topblockw*2.0+2) {
163 polygon([[-1.0 * pinholebasew, -0.01],
164 [-0.5 * pinholebasew, pinholeh],
175 module Pin(){ ////toplevel
180 linear_extrude(height=0.1) {
183 [pinbasew*0.5*(pinminh/pinmaxh), 0]]);
185 translate([0,0,pintaperlen])
186 linear_extrude(height=pinstraightlen) {
197 module HubEnd(){ ////toplevel
198 thick = hubmainthick+hubbasethick;
201 for (ang=[0 : 60 : 359]) {
203 translate([hubmainrad - hubwalls/2, -hubbasestalkwidth/2, 0])
204 cube([hubbaserad - (hubmainrad - hubwalls/2),
205 hubbasestalkwidth, hubbasethick]);
206 ExtenderPillar(length = hubmainrad-hubwalls/2,
207 height = hubbasethick + hubmainthick,
208 pillarw = hubpillarw);
211 cylinder(r=axlerad+hubwalls, h=thick);
212 cylinder(r=hubmainrad-0.1, h=hubbaseweb);
214 cylinder(r=hubmainrad, h=thick, $fn=100);
216 cylinder(r=hubmainrad-hubwalls, h=thick+2);
219 cylinder(r=hubbaserad, h=hubbasethick, $fn=50);
221 cylinder(r=hubbaserad-hubwalls, h=hubbasethick+2);
225 cylinder(r=axlerad+axleslop, h=thick+2, $fn=50);
230 module TestKit(){ ////toplevel
231 translate([60,0,0]) mirror([1,0,0]) Pin();
232 translate([60,15,0]) mirror([1,0,0]) Pin();
233 translate([0,40,0]) intersection(){
235 translate([-50,-10,-1]) cube([100,100,100]);
238 translate([-60,10,0]) Bar();
239 cube(50,center=true);
241 translate([50,40, AxlePin_zoffset()]) FtAxlePin();
242 translate([0,-20,0]) AxleWasher();
246 rotate([0,90,0]) translate([0,0,-spoolwidth/2])
248 cylinder(r=spoolouterrad, h=spoolwidth);
249 translate([0,0,-1]) cylinder(r=spoolinnerrad, h=spoolwidth+2);
253 module Demo(){ ////toplevel
257 color("red") translate([spoolbarlen/2,0,0])
258 rotate([90,0,90]) Trestle();
260 translate([spoolwidth/2 + hubbasethick + spoolinnerslop*2/3, 0, barz])
261 rotate([0,90,0]) AxleWasher();
262 color("orange") translate([axlepin_x, 0, barz])
263 rotate([90,0,90]) FtAxlePin();
265 translate([spoolwidth/2 + hubbasethick + spoolinnerslop*1/3, 0, barz])
266 rotate([0,-90,0]) HubEnd();
269 %translate([0,0,barz]) DemoSpool();
279 //ExtenderPillars(80,12,8, baseweb=true);