OSE CircularKnitic v18.03: Difference between revisions
Jump to navigation
Jump to search
Line 19: | Line 19: | ||
==CKvars.scad== | ==CKvars.scad== | ||
*need to define nominal distance between top of needle to top of CKp4. | |||
<nowiki> | <nowiki> |
Revision as of 00:43, 3 May 2018
Basics
- OSE's Fork of CircularKnitic
Goals
Needle Accomidation
- Long tails
- Bent back tails
- Test 3D printed needles
Fabric Spool
- Apply constant tension on fabric
- Roll onto spool for easy handling and storage
Part Code
CKvars.scad
- need to define nominal distance between top of needle to top of CKp4.
////MAIN SETTINGS//// //select needle size file that will be used include <CKneedleVars-KH260.scad>; //diameter from inside edge of needles p2needlegrooveID=274.4; //number of "p2" parts around circle p2number=12; //number of needles mounted on each "p2" part p2needles=5; //number of "p3" parts around circle p3number=4; //number of "p4" parts around circle p4number=4; ////MATERIALS//// upper_surfaceH=5; //thickness of upper rotating plate bottom_surface_motor_gearsH=6; //thickness of geared rotating plate ////PART SETTINGS//// //"connector0912" connects upper_surface plate to bottom_surface geared plate connector0912H=12; connector0912L=25; connector0912W=8; connector0912HoleOD=3; //hole diameter connector0912HoleC2C=17; //center of hole to center of other hole //p2 needleWidth=1.8; p2needlegroovefromID=2.2; p2ID=p2needlegrooveID-(p2needlegroovefromID*2); p2needlegrooveDepth=2.8; p2H=104; p2W=4.8; p2OD=p2ID+(p2W*2); p2holeH=75; p2holeD=2; p2holeCSD=4.01726; p2holeCSL=1.5; //p3 p3wiggle=0.1; p3baseH=3; p3wallW=(nH-nY)/2; //half of needle butt p3baseID=p2ID-20-(p3wiggle*2); //need change to base on p3ridgeW2 p3baseholeD + some extra clearance p3baseOD=p2OD+20+(p3wiggle*2)+p3wallW+3; //need change to base off of p3baseholeD and p3wallchamfW + some extra clearance p3baseholefromODID=3; p3baseholeD=3; p3baseholenumber=4; p3ridgeW1=3; p3ridgeW2=5; p3ridgeH=5; p3wallchamfW=2; p3wallchamfH=3; p3wallHaboveholesc=5; p3grooveH1=18; p3grooveH2=73; p3grooveW=2.2; //p4 p4rampW=4; p4rampH=14.57; p4rampfromID=2.5; p4rampoverhangH=4; p4rampfromOD=1.34; p4rampC1=10; p4rampC2=40; p4rampC2transX=10; p4rampC2transZ=3.82; p4baseH=11; p4basegapH=8; p4baseW=11.2; p4basegapW=5.09; p4clawW=9; p4holesnumber=3; p4holeH=5; //plate pPspace1=12; //? space from main table top to first plate pPplate1=6; //thickness of geared plated pPspace2=12; //space between geared plate and mountain plate pPplate2=5; //mountain pMwallT=7.5; //min thickness from groove to back wall pMgroove=nH-nY-p3wallW+1; //depth of groove pMgrooveAngle=45; pMgrooveC1=pPspace2; //top of groove at position 1 "entrance" pMgrooveC2=nC+2; //top of groove at position 2 "push down" pMgrooveC3=44.25; //top of groove at position 3 "top center" pMgrooveSlop=2; pMwallHextra=5.75; //extra height above groove at heighest point //calculated settings centerlineD=p2ID+(p2W+(p3wiggle*2)); p4baseOD=centerlineD+p4baseW; p4baseID=centerlineD-p4baseW; p4basegapOD=centerlineD+p4basegapW; p4basegapID=centerlineD-p4basegapW; firstcenter=(((((360/p2number/p2needles/2)/360*(p2OD*PI))-(needleWidth/2))/((360/p2number/p2needles/2)/360*(p2OD*PI)))*(360/p2number/p2needles/2))/2; p3wallH=p3wallHaboveholesc+p2holeH+p3baseH; ////SETTINGS OUTPUT ECHOS/// echo("Total Needles:", p2number*p2needles); echo("Millimeters Between Needles:", PI*p2needlegrooveID/(p2number*p2needles));
CKp3.scad
- Added holes in base for long tails
- does this need to be bigger to allow for some slop?
- need to tweak CKvars.scad to make p3wall thicker
- need to optimize groove height to go as low as possible
- what to do if needle has bent back tail?
include <CKvars.scad>; CKp3(); module CKp3(){ rez=360/p2number*2*2; $fn=rez; //defines resolution of circles. centerlineD=p2ID+(p2W+(p3wiggle*2)); echo(centerlineD); translate([p3baseOD/2,0,0]){ difference(){ union(){ cylinder(h=p3baseH,d=p3baseOD); difference(){ cylinder(h=p3ridgeH+p3baseH,d=centerlineD-((p2W+(p3wiggle*2)/2))); translate([0,0,p3baseH]) cylinder(h=p3ridgeH,d1=centerlineD-(p3ridgeW2*2)-((p2W+(p3wiggle*2)/2)),d2=centerlineD-(p3ridgeW1*2)-((p2W+(p3wiggle*2)/2))); } difference(){ translate([0,0,p3baseH]) cylinder(h=p3wallchamfH,d1=centerlineD+((p3wallchamfW+p3wallW)*2)+((p2W+(p3wiggle*2)/2)),d2=centerlineD+(p3wallW*2)+((p2W+(p3wiggle*2)/2))); cylinder(h=p3wallchamfH+p3baseH,d=centerlineD+((p2W+(p3wiggle*2)/2))); } difference(){ cylinder(h=p3wallH,d=centerlineD+(p3wallW*2)+((p2W+(p3wiggle*2)/2))); cylinder(h=p3wallH,d=centerlineD+((p2W+(p3wiggle*2)/2))); } } //end main union cylinder(h=p3wallH,d=p3baseID); translate([-p3baseOD/2,-p3baseOD/2,0]){ cube([p3baseOD,p3baseOD/2,p3wallH]); } rotate([0,0,-360/p3number]){ translate([-p3baseOD/2,0,0]) cube([p3baseOD,p3baseOD/2,p3wallH]); } //slots for(i=[1:p2needles*(p2number/p3number)]){ rotate([0,0,(360/p2number/p2needles/2)-(360/p2number/p2needles*i)]){ translate([((-centerlineD-(p3wallW*2)-((p2W+(p3wiggle*2)/2)))/2)-0.1,-p3grooveW/2,p3grooveH1]) cube([p3wallW+0.2,p3grooveW,p3grooveH2-p3grooveH1]); } } //base needle holes for(i=[1:p2needles*(p2number/p3number)]){ rotate([0,0,(360/p2number/p2needles/2)-(360/p2number/p2needles*i)]){ translate([-p2OD/2-0.2,-needleWidth/2,-0.01]) #cube([p2needlegrooveDepth+0.2,needleWidth,p3wallH+0.02]); } } //base mounting holes for(i=[1:p3baseholenumber]){ rotate([0,0,(((360/p3number/p3baseholenumber))/2)-((360/p3number/p3baseholenumber)*i)]){ translate([-(p3baseID/2)-p3baseholefromODID,0,0]) #cylinder(h=p3baseH,d=p3baseholeD); } } for(i=[1:p3baseholenumber]){ rotate([0,0,(((360/p3number/p3baseholenumber))/2)-((360/p3number/p3baseholenumber)*i)]){ translate([-(p3baseOD/2)+p3baseholefromODID,0,0]) #cylinder(h=p3baseH,d=p3baseholeD); } } //first and last holes rotate([0,0,-firstcenter]){ translate([((-centerlineD-(p3wallW*2)-((p2W+(p3wiggle*2)/2)))/2)-0.1,0,p2holeH+p3baseH]) rotate([0,90,0]){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); } } rotate([0,0,-(360/p2number*(p3number-1))+firstcenter]){ translate([((-centerlineD-(p3wallW*2)-((p2W+(p3wiggle*2)/2)))/2)-0.1,0,p2holeH+p3baseH]) rotate([0,90,0]){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); } } //middle holes for(i=[0:(p2number/p3number)-1]){ rotate([0,0,(-360/p2number/p2needles)+(i*-360/p2number)]){ translate([((-centerlineD-(p3wallW*2)-((p2W+(p3wiggle*2)/2)))/2)-0.1,0,p2holeH+p3baseH]) rotate([0,90,0]){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); } } } //end for for(i=[0:(p2number/p3number)-1]){ rotate([0,0,(-360/p2number/p2needles*(p2needles-1))+(i*-360/p2number)]){ translate([((-centerlineD-(p3wallW*2)-((p2W+(p3wiggle*2)/2)))/2)-0.1,0,p2holeH+p3baseH]) rotate([0,90,0]){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); } } }//end for //end middle holes } } } //end module
CKpM.scad "mountain"
- need to test with different size needle and spaces between plates
- takes a long time to render, have to be patient
include <CKvars.scad>; CKpM(); //mountain CKpMgrooveturnR=15; //radius of upper curved path in groove CKpMgrooveturnR2=8; //radius of lower curved path in groove CKpMgrooveD=nC+pMgrooveSlop; //diamter of groove cut CKpMID=p2OD+2; //inside diameter of main wall CKpMgrooveOD=pMgroove+(CKpMID/2); //center to OD of groove CKpMp7X=5; //half of length of plateu of groove. preferably whole number CKpMp3X=2.5; //length of flat area of section 3 CKpMcutRez=2; //cuts per degree CKpMcutDeg=(((CKpMp7X/2)*360/(PI*CKpMID))/CKpMp7X); //degrees per unit diameter CKpMcutcylRez=36; //number of sides on groove cutting clylinder CKpMcutA=45; //angle of cut path //calc'd mi=(CKpMID*PI)/360; //degrees in mm at CKpMID echo("mi="); echo(mi); CKpMd7=round((CKpMp7X)*360/(PI*CKpMID)*10)/10; //degrees around ID echo(CKpMd7); CKpMd6=round((cos(CKpMcutA)*CKpMgrooveturnR)*360/(PI*CKpMID)*10)/10; echo(CKpMd6); CKpMp6Y=0; CKpMd5=round((tan(CKpMcutA)*(((pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin((((CKpMd7+CKpMd6)-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR))-((CKpMgrooveD/2)+((sin(CKpMcutA)*CKpMgrooveturnR2)*360/(PI*CKpMID))))))*360/(PI*CKpMID)*10)/10; // not good code CKpMd5=round((cos(CKpMcutA)*(pMgrooveC3+pMwallHextra+(CKpMgrooveD/2)))*360/(PI*CKpMID)*10)/10; //height of center of circle at top of 5 //pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin((((CKpMd7+CKpMd6)-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR) //height of center of circle at bottom of 5 //CKpMgrooveD+((sin(CKpMcutA)*CKpMgrooveturnR2)*360/(PI*CKpMID)) //total height of 5 //((pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin((((CKpMd7+CKpMd6)-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR))-(CKpMgrooveD+((sin(CKpMcutA)*CKpMgrooveturnR2)*360/(PI*CKpMID)))) echo(CKpMd5); //center to center degrees in section 4 CKpMd4=round((cos(CKpMcutA)*CKpMgrooveturnR2)*360/(PI*CKpMID)*10)/10; //old bad code CKpMd4=(cos(CKpMcutA)*((pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((((CKpMd7+(CKpMd6))-(0.1))-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR))-((cos(CKpMcutA)*CKpMgrooveturnR)))); echo(CKpMd4); CKpMd3=round((CKpMp3X)*360/(PI*CKpMID)*10)/10; //degrees around ID echo(CKpMd3); CKpMd2=round((cos(CKpMcutA)*CKpMgrooveturnR2)*360/(PI*CKpMID)*10)/10; echo(CKpMd2); //height of center of circle at top of 2 //CKpMgrooveD+((sin(CKpMcutA)*CKpMgrooveturnR2)*360/(PI*CKpMID)) //need to fix below CKpMd1=round(((cos(CKpMcutA)*((pMgrooveC1-(((((CKpMgrooveD/2)-(CKpMgrooveturnR2*cos(asin((((CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2)-(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3))*(PI*CKpMID)/360)/CKpMgrooveturnR2))-CKpMgrooveturnR2)))))-(sin(CKpMcutA)*(CKpMgrooveD/2)))*(1/sin(CKpMcutA)))))*360/(PI*CKpMID)*10)/10; echo("degrees 1:"); echo(CKpMd1); CKpMd0=(cos(CKpMcutA)*(CKpMgrooveD/2))*360/(PI*CKpMID); pMH=pMgrooveC3+pMwallHextra; pMbwOD=((p2OD+2)/2)+pMwallT+pMgroove; echo(pMbwOD); module CKpM(){ //test cube // translate([-71.4,120,0]) // cube([pMgrooveC1,pMgrooveC1,pMgrooveC1]); union(){ difference(){ translate([-(p2OD+2),0,0]) cube([(p2OD+2)*2,((p2OD+2)/2)+pMwallT+pMgroove,pMH]); cylinder($fn=180,d=CKpMID, h=pMH); //cut main end //need to calc exactly so height of path entrance matches bottom of top plate rotate([0,0,(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2+CKpMd1-CKpMd0)]) mirror([1,0,0]) cube([CKpMID*4,CKpMID*4,pMH]); mirror([1,0,0]) rotate([0,0,(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2+CKpMd1-CKpMd0)]) mirror([1,0,0]) cube([CKpMID*4,CKpMID*4,pMH]); //left needle path cut needlepathLEFT(); //right needle path cut mirror([1,0,0]) needlepathLEFT(); } //end main difference pMsidetab(); mirror([1,0,0]) pMsidetab(); } //end main union } //end main module module pMsidetab(){ translate([0,0,pPspace2+pPplate2]) difference(){ rotate([0,0,-(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2+CKpMd1-CKpMd0)]) difference(){ union(){ cube([12.5,(pMbwOD*2),4]); translate([0,0,4]) difference(){ cube([4,(pMbwOD*2),4]); translate([4,0,0]) rotate([0,-45,0]) cube([8,(pMbwOD*2),8]); } } translate([4+(8.5/2),(CKpMID/2)+13.5,0]) cylinder($fn=36,d=3,h=5); translate([4+(8.5/2),(pMbwOD*(1/cos(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2+CKpMd1-CKpMd0)))-5.5,0]) cylinder($fn=36,d=3,h=5); } translate([0,-50,0]) cube([(CKpMID/2),((CKpMID/2)+3.5)*cos(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2+CKpMd1-CKpMd0)+50,(CKpMID/2)]); translate([0,pMbwOD,0]) cube([(pMbwOD*2),(pMbwOD*2),(pMbwOD*2)]); } } //end sidetab module module needlepathLEFT(){ ////////////////////// // needle path // ////////////////////// //7 for(i=[(0.1):(0.2):CKpMd7-(0.1)]){ hull(){ //odd translate([0,0,pMgrooveC3-(CKpMgrooveD/2)]) rotate([270,0,i-(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //even translate([0,0,pMgrooveC3-(CKpMgrooveD/2)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 1 hull(){ //even translate([0,0,pMgrooveC3-(CKpMgrooveD/2)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //odd translate([0,0,pMgrooveC3-(CKpMgrooveD/2)]) rotate([270,0,i+(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 2 }//end fors //6 for(i=[(CKpMd7)+(0.1):(0.2):(CKpMd7+(CKpMd6))-(0.1)]){ hull(){ //odd translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((i-CKpMd7-(0.1))*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)]) rotate([270,0,i-(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //even translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((i-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 1 hull(){ //even translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((i-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //odd translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((i-CKpMd7+(0.1))*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)]) rotate([270,0,i+(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 2 }//end fors //5 for(i=[(CKpMd7+CKpMd6)+(0.1):(0.2):(CKpMd7+CKpMd6+CKpMd5+CKpMd4)-(0.1)]){ hull(){ //odd translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((((CKpMd7+(CKpMd6))-(0.0))-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)-((tan(CKpMcutA)*(i-0.1-(CKpMd7+CKpMd6))*mi))]) rotate([270,0,i-(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //even translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((((CKpMd7+(CKpMd6))-(0.0))-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)-((tan(CKpMcutA)*(i-(CKpMd7+CKpMd6-0.0))*mi))]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); } //end hull 1 hull(){ //even translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((((CKpMd7+(CKpMd6))-(0.0))-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)-((tan(CKpMcutA)*(i-(CKpMd7+CKpMd6-0.0))*mi))]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //odd translate([0,0,pMgrooveC3-(CKpMgrooveD/2)+(CKpMgrooveturnR*cos(asin(((((CKpMd7+(CKpMd6))-(0.0))-CKpMd7)*(PI*CKpMID)/360)/CKpMgrooveturnR))-CKpMgrooveturnR)-((tan(CKpMcutA)*(i+0.1-(CKpMd7+CKpMd6))*mi))]) rotate([270,0,i+(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); } //end hull 2 } //end for //4 for(i=[(CKpMd7+CKpMd6+CKpMd5)-(0.1):(0.2):(CKpMd7+CKpMd6+CKpMd5+CKpMd4)+(0.1)]){ translate([0,0,(CKpMgrooveD/2)-(CKpMgrooveturnR2*cos(asin(((i-(CKpMd7+CKpMd6+CKpMd5)-(0.0))*(PI*CKpMID)/360)/CKpMgrooveturnR2))-CKpMgrooveturnR2)]) rotate([270,0,((CKpMd7+CKpMd6+CKpMd5+CKpMd4)+(CKpMd7+CKpMd6+CKpMd5))-i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); } ///3 for(i=[((CKpMd7+CKpMd6+CKpMd5+CKpMd4)+(0.1)):(0.2):((CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3)-(0.1))]){ hull(){ //even translate([0,0,(CKpMgrooveD/2)]) rotate([270,0,i-(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //even translate([0,0,(CKpMgrooveD/2)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 1 hull(){ //even translate([0,0,(CKpMgrooveD/2)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //odd translate([0,0,(CKpMgrooveD/2)]) rotate([270,0,i+(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 2 }//end fors //2 for(i=[(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3)+(0.1):(0.2):(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2)-(0.1)]){ hull(){ //even translate([0,0,(CKpMgrooveD/2)-(CKpMgrooveturnR2*cos(asin(((i-(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3)-(0.1))*(PI*CKpMID)/360)/CKpMgrooveturnR2))-CKpMgrooveturnR2)]) rotate([270,0,i-(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //even translate([0,0,(CKpMgrooveD/2)-(CKpMgrooveturnR2*cos(asin(((i-(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3))*(PI*CKpMID)/360)/CKpMgrooveturnR2))-CKpMgrooveturnR2)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 1 hull(){ //even translate([0,0,(CKpMgrooveD/2)-(CKpMgrooveturnR2*cos(asin(((i-(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3))*(PI*CKpMID)/360)/CKpMgrooveturnR2))-CKpMgrooveturnR2)]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); //odd translate([0,0,(CKpMgrooveD/2)-(CKpMgrooveturnR2*cos(asin(((i-(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3)+(0.1))*(PI*CKpMID)/360)/CKpMgrooveturnR2))-CKpMgrooveturnR2)]) rotate([270,0,i+(0.1)]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); }//end hull 2 }//end fors difference(){ for(i=[(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3)+(0.1):(0.2):(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2)-(0.1)]){ translate([0,0,0]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); } cylinder($fn=180,d=CKpMID, h=pMH); } //1 hull(){ difference(){ for(i=[(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2)+(0.1):(0.2):(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2+CKpMd1+1)-(0.1)]){ translate([0,0,((CKpMgrooveD/2)+((sin(CKpMcutA)*CKpMgrooveturnR2)*360/(PI*CKpMID)))+((tan(CKpMcutA)*(i-(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2-0.0))*mi))]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); } cylinder($fn=180,d=CKpMID, h=pMH); } //end diff difference(){ for(i=[(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2)+(0.1):(0.2):(CKpMd7+CKpMd6+CKpMd5+CKpMd4+CKpMd3+CKpMd2+CKpMd1)-(0.1)]){ translate([0,0,0]) rotate([270,0,i]) cylinder($fn=CKpMcutcylRez,d=CKpMgrooveD,h=CKpMgrooveOD); } cylinder($fn=180,d=CKpMID, h=pMH); } //end difference } //end hull /////////////////////////// } //end needlepathLEFT module
Needles
CKneedleVars-KH260.scad
- purchased here: http://shop.sckmcl.com.hk/product_info.php?products_id=136
//NEEDLE for Brother KH260 //measurements by dorkmo nX=1.4; //typical thickness from side to side nY=2.44; //typical thickness from front to back nA=157.9; //total length of needle nB=53; //distance from bottom of needle to bottom of bent tab. nC=4.82; //thickness of bent tab. top to bottom. nD=5.48; //hook front to back nE=4.10; //from top of loop to bottom of hook nF=22.0; //from top of loop to bottom of flipper in down position nG=1.10; //minimum thickness of hook. front to back. nH=17.03; //max distance from front to back nT=0; //0=straight tail 1=bent tail aka folded back. Y of tail = C if T=1.
CKneedleVars-SK120.scad
- difficult to find these exact needles for sale
//NEEDLE for SK120 //measured by original CircularKnitic team nX=1.4; //typical thickness from side to side nY=2.44; //typical thickness from front to back nA=97.73; //total length of needle nB=7.72; //distance from bottom of needle to bottom of bent tab. nC=4.92; //thickness of bent tab. top to bottom. nD=5.09; //hook front to back nE=4.62; //from top top loop to bottom of hook nF=19.94; //top to bottom of flipper in down position nG=1.04; //minimum thickness of hook. front to back. nH=16.4; //max distance from front to back nT=0; //0=straight tail 1=bent tail aka folded back. Y of tail = C of T=1.
See Also
- Open Source Textile Construction Set
- Open Source Circular Knitting Machine
- CircularKnitic Parametric