Test design for large hoop.

master
Martin 2018-11-10 08:47:17 +01:00
rodzic 0ccdfc15e8
commit 1f583bea3b
2 zmienionych plików z 91 dodań i 3 usunięć

Wyświetl plik

@ -13,10 +13,13 @@ hoop(workareaWidth = 130, workareaHeight = 150);
innerOuterFramesSpacing = 0.5;
mountingHolesSpacing = 40;
module hoop(workareaWidth = 130, workareaHeight = 150, frameHeight = 8, innerFrameThickness = 3, outerFrameThickness = 5, roundness = 5, tightenerSpace = 3, sizeOffset = 0, withHandle = true){
// inner frame
module hoop(workareaWidth = 130, workareaHeight = 150, frameHeight = 8, innerFrameThickness = 3, outerFrameThickness = 5, roundness = 5, tightenerSpace = 3, sizeOffset = 0, withHandle = true, partsMode = 3)
{
innerFrameWidth = workareaWidth+innerFrameThickness*2+sizeOffset;
innerFrameHeight = workareaHeight+innerFrameThickness*2+sizeOffset;
// inner frame
if (partsMode == 3 || partsMode == 1)
{
linear_extrude(height = 1.5) difference(){
roundRectangle(innerFrameWidth, innerFrameHeight, roundness, center=true);
intersection(){
@ -28,8 +31,10 @@ module hoop(workareaWidth = 130, workareaHeight = 150, frameHeight = 8, innerFra
roundRectangle(innerFrameWidth, innerFrameHeight, roundness, center=true);
roundRectangle(workareaWidth+sizeOffset, workareaHeight+sizeOffset, roundness, center=true);
}
}
// outer frame
if (partsMode == 3 || partsMode == 2)
{
spacing = innerOuterFramesSpacing*2;
outerFrameWidth = innerFrameWidth+outerFrameThickness*2+spacing;
outerFrameHeight = innerFrameHeight+outerFrameThickness*2+spacing;
@ -56,6 +61,7 @@ module hoop(workareaWidth = 130, workareaHeight = 150, frameHeight = 8, innerFra
translate([outerFrameWidth/15+ innerFrameWidth/2,0,0]) {
handle(frameHeight);
}
}
}
module handle(frameHeight)

Wyświetl plik

@ -0,0 +1,82 @@
use <hoop.scad>
// some of the coordinates were set in messy way
// be careful when changing area size and correct things when needed
workareaWidth = 160;
workareaHeight = 260;
frameHeight = 9;
innerFrameThickness = 5;
outerFrameThickness = 10;
// print all quarters from 0 to 3
// infill at least 50%
hoop_quarter(0);
//hoop_large();
module hoop_large()
{
sizeOffset = 8;
innerFrameWidth = workareaWidth+innerFrameThickness*2+sizeOffset;
innerFrameHeight = workareaHeight+innerFrameThickness*2+sizeOffset;
spacing = 0.5*2;
outerFrameWidth = innerFrameWidth+outerFrameThickness*2+spacing;
outerFrameHeight = innerFrameHeight+outerFrameThickness*2+spacing;
hoop(workareaWidth, workareaHeight, frameHeight, innerFrameThickness, outerFrameThickness,
roundness = 1.5,
tightenerSpace = 6,
sizeOffset = sizeOffset,
withHandle = false
);
// here connectors are placed
// its offsets (bigger magic numbers) position is hardcoded by trial, messy way
for (pos = [[1,0],[-1,0],[0,1],[0,-1]])
{
// inner frame connectors
translate([(outerFrameWidth/2 - outerFrameWidth/80)*pos[0],(outerFrameHeight/2 + 0)*pos[1],0])
if(pos != [0,1]) rotate([0,0,90*pos[0]]) connector(0.5);
else rotate([0,0,180]) connector(0.5);
// outer frame connectors
translate([(outerFrameWidth/2 + outerFrameWidth/28)*pos[0],(outerFrameHeight/2 + outerFrameHeight/26)*pos[1],0])
if(pos != [0,1]) rotate([0,0,180+90*pos[0]]) connector();
}
// mounting handle
translate([workareaWidth/2+workareaWidth/7, -40])
{
linear_extrude(height=2) polygon([[-10,-80],[40,-20],[0,0]]);
linear_extrude(height=1.0) polygon([[0,0],[40,20],[-5,150]]);
handle(frameHeight);
}
}
module hoop_quarter(index)
{
quarters = [[1,1],[-1,1],[-1,-1],[1,-1]];
x = quarters[index][0];
y = quarters[index][1];
intersection(){
scale([x,y,1]) cube([workareaWidth ,workareaHeight,frameHeight+10]);
hoop_large();
}
}
module connector(holeHoffset = 0)
{
tightnWidth = 30;
translate([-tightnWidth/2,0,0]) difference(){
cube([tightnWidth ,12,frameHeight]);
//screw hole
translate([tightnWidth,8,frameHeight/2+holeHoffset]) rotate([0,-90,0])
{
cylinder(r=1.8, h=tightnWidth+1); cylinder(r=3.5*0.95, h=3, $fn=6);
translate([0,0,tightnWidth-3]) cylinder(r=3.5, h=3);
}
}
}