4 spoolinnerrad = 39.8 / 2;
5 spoolouterrad = spoolinnerrad + 61.5;
7 include <doveclip.scad>
24 hubbasestalkwidth = 4;
27 hubbaserad = spoolinnerrad + 10;
28 hubmainrad = spoolinnerrad - spoolradslop;
35 plugwmax = plugwmin + plugh * plugslope * 2;
44 topblockbasedepth = 5;
53 pinstraightlen = 30-pintaperlen;
55 spoolouterpad = AxlePin_holerad()*2 * 1.5;
56 spoolbarlen = spoolwidth +
57 2*(Washer_thick() + hubbasethick + AxlePin_holerad()
58 + spoolinnerslop + spoolouterpad);
60 axlepin_x = spoolwidth/2 + hubbasethick +
61 Washer_thick() + spoolinnerslop + AxlePin_holerad()*0.5;
63 trestleheight = spoolouterrad + spoolradclear - barz;
64 trestlebase = trestleheight * 1.2;
72 bdx = dw / cos(a) + bdy * plugslope;
74 tdx = bdx + tdy * plugslope;
75 translate([-d,0,0]) rotate([90,0,90]) linear_extrude(height=plugl+0.1+d*2){
76 polygon([[-(plugwmin/2 + bdx), bdy],
77 [-(plugwmax/2 + tdx), plugh + tdy],
78 [+(plugwmax/2 + tdx), plugh + tdy],
79 [+(plugwmin/2 + bdx), bdy]]);
83 module Bar(){ ////toplevel
85 biggestw = spoolw + 50;
90 translate([spoolw/2, 0, 0])
92 translate([-1, -50, -50])
93 cube([spoolw/2+1.1, 100, 100]);
97 translate([-biggestw/2, -50, 0])
98 cube([biggestw, 100, 100]);
101 translate([axlepin_x, 0, -50])
102 cylinder(r=AxlePin_holerad(), 100, $fn=15);
105 translate([0,0,barz]) {
106 translate([-100,0,0])
107 rotate([0,90,0]) cylinder(r=axlerad, h=200, $fn=60);
112 module FtAxlePin(){ ////toplevel
113 AxlePin(axlerad, (axlerad + barwasherrad*2)/3 * 2);
116 module AxleWasher(){ ////toplevel
117 Washer(axlerad, barwasherrad);
120 module Trestle(){ ////toplevel
121 legang = atan2(trestlebase/2, trestleheight);
122 eplen = sqrt(trestleheight*trestleheight + trestlebase*trestlebase*0.25);
123 topblockw = plugwmax + trestleplugd*2 + topblockthick*2;
125 pinholebasew = pinbasew + pindwidth*2;
126 pinholeh = pinmaxh + pindh;
132 rotate([0,0, -90-legang])
133 ExtenderPillars(length=eplen+trestlelegw,
138 translate([-trestlebase/2, -trestleheight, 0])
139 cylinder(r=trestlelegw/2*1.2, h=trestlefoot);
142 translate([-topblockw/2, -topblockbasedepth, 0])
144 topblockbasedepth + plugh + topblockthick
145 + (pinmaxh - pinminh)*0.5,
148 translate([-trestlebase/2, -trestleheight, 0])
149 ExtenderPillars(length=trestlebase, width=trestlebaseh*2, height=legw);
151 translate([-300, -trestleheight-50, -1])
155 Plug(d=trestleplugd);
158 translate([0,0,plugl/2]) rotate([0,rot,0]) translate([0,0,-plugl/2]) {
160 plugh - (pinmaxh - pinminh)*1.00,
161 (plugl - pinholebasew*2)/3]) {
162 translate([-(topblockw*0.25+1), 0, pinholebasew/2])
163 rotate([-90,0,0]) %Pin();
164 translate([-(topblockw+1), 0, 0]) {
166 linear_extrude(height = topblockw*2.0+2) {
167 polygon([[-1.0 * pinholebasew, -0.01],
168 [-0.5 * pinholebasew, pinholeh],
179 module Pin(){ ////toplevel
184 linear_extrude(height=0.1) {
187 [pinbasew*0.5*(pinminh/pinmaxh), 0]]);
189 translate([0,0,pintaperlen])
190 linear_extrude(height=pinstraightlen) {
201 module HubEnd(){ ////toplevel
202 thick = hubmainthick+hubbasethick;
205 for (ang=[0 : 60 : 359]) {
207 translate([hubmainrad - hubwalls/2, -hubbasestalkwidth/2, 0])
208 cube([hubbaserad - (hubmainrad - hubwalls/2),
209 hubbasestalkwidth, hubbasethick]);
210 ExtenderPillar(length = hubmainrad-hubwalls/2,
211 height = hubbasethick + hubmainthick,
212 pillarw = hubpillarw);
215 cylinder(r=axlerad+hubwalls, h=thick);
216 cylinder(r=hubmainrad-0.1, h=hubbaseweb);
218 cylinder(r=hubmainrad, h=thick, $fn=100);
220 cylinder(r=hubmainrad-hubwalls, h=thick+2);
223 cylinder(r=hubbaserad, h=hubbasethick, $fn=50);
225 cylinder(r=hubbaserad-hubwalls, h=hubbasethick+2);
229 cylinder(r=axlerad+axleslop, h=thick+2, $fn=50);
234 module TestKit(){ ////toplevel
235 translate([60,0,0]) mirror([1,0,0]) Pin();
236 translate([60,15,0]) mirror([1,0,0]) Pin();
237 translate([0,40,0]) intersection(){
239 translate([-50,-10,-1]) cube([100,100,100]);
242 translate([-60,10,0]) Bar();
243 cube(50,center=true);
245 %translate([50,40, AxlePin_zoffset()]) FtAxlePin();
246 %translate([0,-20,0]) AxleWasher();
250 rotate([0,90,0]) translate([0,0,-spoolwidth/2])
252 cylinder(r=spoolouterrad, h=spoolwidth);
253 translate([0,0,-1]) cylinder(r=spoolinnerrad, h=spoolwidth+2);
257 module Demo(){ ////toplevel
261 color("red") translate([spoolbarlen/2,0,0])
262 rotate([90,0,90]) Trestle();
264 translate([spoolwidth/2 + hubbasethick + spoolinnerslop*2/3, 0, barz])
265 rotate([0,90,0]) AxleWasher();
266 color("orange") translate([axlepin_x, 0, barz])
267 rotate([90,0,90]) FtAxlePin();
269 translate([spoolwidth/2 + hubbasethick + spoolinnerslop*1/3, 0, barz])
270 rotate([0,-90,0]) HubEnd();
273 %translate([0,0,barz]) DemoSpool();
283 //ExtenderPillars(80,12,8, baseweb=true);