CircularKnitic Parametric: Difference between revisions
Jump to navigation
Jump to search
(→Code) |
|||
Line 144: | Line 144: | ||
==CKp3.scad== | ==CKp3.scad== | ||
[[Image:CKp3.png|200px]] | |||
<nowiki> | <nowiki> |
Revision as of 22:40, 11 February 2018
Goal: Replicate CircularKnitic's designs with OpenScad to allow for larger machines to be built
Code
CKvars.scad
needleWidth=1.8; p2needlegrooveID=274.4; p2needlegrooveDepth=2.8; p2H=104; p2W=4.8; p2ID=270; p2OD=p2ID+(p2W*2); p2holeH=75; p2holeD=2; p2holeCSD=4.01726; p2holeCSL=1.5; p2number=12; //number of sections around circle p2needles=5; //needles mounted on each p2 p3wiggle=0.1; p3number=4; p3baseH=3; p3baseID=p2ID-20-(p3wiggle*2); p3baseOD=p2OD+20+(p3wiggle*2); p3ridgeW1=3; p3ridgeW2=5; p3ridgeH=5; p3wallW=3; p3wallchamfW=2; p3wallchamfH=3; p3wallHaboveholesc=5; p3grooveH1=18; p3grooveH2=73; p3grooveW=2.2; 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;
CKp2.scad
include <CKvars.scad>; CKp2(); module CKp2(){ rez=360/p2number*2*2; $fn=rez; //defines resolution of circles. translate([p2OD/2,0,0]){ difference(){ cylinder(h=p2H,d=p2OD); cylinder(h=p2H,d=p2ID); translate([-p2OD/2,-p2OD/2,0]){ cube([p2OD,p2OD/2,p2H]); } rotate([0,0,-360/p2number]){ translate([-p2OD/2,0,0]) cube([p2OD,p2OD/2,p2H]); } for(i=[1:p2needles]){ rotate([0,0,(360/p2number/p2needles/2)-(360/p2number/p2needles*i)]){ translate([-p2OD/2-0.2,-needleWidth/2,0]) cube([p2needlegrooveDepth+0.2,needleWidth,p2H]); } } rotate([0,0,-360/p2number/p2needles]){ translate([-p2OD/2-0.2,0,p2holeH]) rotate([0,90,0]){ union(){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); translate([0,0,((p2OD-p2ID)/2)-p2holeCSL]){ cylinder(h=p2holeCSL+2, d=p2holeCSD); } } //end union } } rotate([0,0,-360/p2number/p2needles*(p2needles-1)]){ translate([-p2OD/2-0.2,0,p2holeH]) rotate([0,90,0]){ union(){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); translate([0,0,((p2OD-p2ID)/2)-p2holeCSL]){ cylinder(h=p2holeCSL+2, d=p2holeCSD); } } //end union } } echo(((((360/p2number/p2needles/2)/360*(p2OD*PI))-(needleWidth/2))/((360/p2number/p2needles/2)/360*(p2OD*PI)))*(360/p2number/p2needles/2)); firstcenter=(((((360/p2number/p2needles/2)/360*(p2OD*PI))-(needleWidth/2))/((360/p2number/p2needles/2)/360*(p2OD*PI)))*(360/p2number/p2needles/2))/2; rotate([0,0,-firstcenter]){ translate([-p2OD/2-0.2,0,p2holeH]) rotate([0,90,0]){ union(){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); translate([0,0,((p2OD-p2ID)/2)-p2holeCSL]){ cylinder(h=p2holeCSL+2, d=p2holeCSD); } } //end union } } rotate([0,0,-360/p2number+firstcenter]){ translate([-p2OD/2-0.2,0,p2holeH]) rotate([0,90,0]){ union(){ cylinder(h=p2OD-p2ID+0.2, d=p2holeD); translate([0,0,((p2OD-p2ID)/2)-p2holeCSL]){ cylinder(h=p2holeCSL+2, d=p2holeCSD); } } //end union } } } } } //end module
CKp3.scad
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]); } } //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
Original Files
Notes
- all measurements in millimeters as used in original design