kopia lustrzana https://gitlab.com/markol/embroiderino
Test design for large hoop.
rodzic
0ccdfc15e8
commit
1f583bea3b
|
@ -13,10 +13,13 @@ hoop(workareaWidth = 130, workareaHeight = 150);
|
||||||
innerOuterFramesSpacing = 0.5;
|
innerOuterFramesSpacing = 0.5;
|
||||||
mountingHolesSpacing = 40;
|
mountingHolesSpacing = 40;
|
||||||
|
|
||||||
module hoop(workareaWidth = 130, workareaHeight = 150, frameHeight = 8, innerFrameThickness = 3, outerFrameThickness = 5, roundness = 5, tightenerSpace = 3, sizeOffset = 0, withHandle = true){
|
module hoop(workareaWidth = 130, workareaHeight = 150, frameHeight = 8, innerFrameThickness = 3, outerFrameThickness = 5, roundness = 5, tightenerSpace = 3, sizeOffset = 0, withHandle = true, partsMode = 3)
|
||||||
// inner frame
|
{
|
||||||
innerFrameWidth = workareaWidth+innerFrameThickness*2+sizeOffset;
|
innerFrameWidth = workareaWidth+innerFrameThickness*2+sizeOffset;
|
||||||
innerFrameHeight = workareaHeight+innerFrameThickness*2+sizeOffset;
|
innerFrameHeight = workareaHeight+innerFrameThickness*2+sizeOffset;
|
||||||
|
// inner frame
|
||||||
|
if (partsMode == 3 || partsMode == 1)
|
||||||
|
{
|
||||||
linear_extrude(height = 1.5) difference(){
|
linear_extrude(height = 1.5) difference(){
|
||||||
roundRectangle(innerFrameWidth, innerFrameHeight, roundness, center=true);
|
roundRectangle(innerFrameWidth, innerFrameHeight, roundness, center=true);
|
||||||
intersection(){
|
intersection(){
|
||||||
|
@ -28,8 +31,10 @@ module hoop(workareaWidth = 130, workareaHeight = 150, frameHeight = 8, innerFra
|
||||||
roundRectangle(innerFrameWidth, innerFrameHeight, roundness, center=true);
|
roundRectangle(innerFrameWidth, innerFrameHeight, roundness, center=true);
|
||||||
roundRectangle(workareaWidth+sizeOffset, workareaHeight+sizeOffset, roundness, center=true);
|
roundRectangle(workareaWidth+sizeOffset, workareaHeight+sizeOffset, roundness, center=true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// outer frame
|
// outer frame
|
||||||
|
if (partsMode == 3 || partsMode == 2)
|
||||||
|
{
|
||||||
spacing = innerOuterFramesSpacing*2;
|
spacing = innerOuterFramesSpacing*2;
|
||||||
outerFrameWidth = innerFrameWidth+outerFrameThickness*2+spacing;
|
outerFrameWidth = innerFrameWidth+outerFrameThickness*2+spacing;
|
||||||
outerFrameHeight = innerFrameHeight+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]) {
|
translate([outerFrameWidth/15+ innerFrameWidth/2,0,0]) {
|
||||||
handle(frameHeight);
|
handle(frameHeight);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module handle(frameHeight)
|
module handle(frameHeight)
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Ładowanie…
Reference in New Issue