CircularKnitic Parametric: Difference between revisions
Jump to navigation
Jump to search
| Line 332: | Line 332: | ||
//ramps | //ramps | ||
for(i=[1:p2needles*(p2number/p4number)]){ | |||
rotate([0,0,(360/p2number/p2needles)-(360/p2number/p2needles*i)-(((360/p2number/p2needles))/2)]){ | |||
difference(){ | difference(){ | ||
union(){ | union(){ | ||
| Line 351: | Line 354: | ||
}//end union | }//end union | ||
translate([-p4rampC2/2,0,0]) | |||
translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4rampH+p4baseH-(p4rampC2/2)]) | |||
cube([p4rampC2,p4rampC2,p4rampC2],center=true); | |||
translate([0,0,0]) | |||
translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4baseH-(p4rampC2/2)]) | |||
cube([p4rampC2,p4rampC2,p4rampC2],center=true); | |||
translate([0,-p4clawW/2,0]) | |||
translate([-(p4baseID/2)-p4rampfromID,0,p4baseW]) | |||
#cube([(p4baseID/2)+p4rampfromID,p4clawW,p4rampoverhangH]); | |||
}//end ramps difference | }//end ramps difference | ||
} //end for rotate | |||
}//end for | |||
//claws | //claws | ||
| Line 382: | Line 396: | ||
//first and last holes | //first and last holes | ||
Revision as of 20:49, 17 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); p3baseholefromODID=3; p3baseholeD=3; p3baseholenumber=4; p3ridgeW1=3; p3ridgeW2=5; p3ridgeH=5; p3wallW=3; p3wallchamfW=2; p3wallchamfH=3; p3wallHaboveholesc=5; p3grooveH1=18; p3grooveH2=73; p3grooveW=2.2; p4number=4; p4rampW=4; p4rampH=14.57; p4rampfromID=2.5; p4rampoverhang=2; 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; //calculations 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;
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]);
}
}
//base 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
CKp4.scad
include <CKvars.scad>;
CKp4();
module CKp4(){
rez=360/p2number*2*2;
$fn=rez; //defines resolution of circles.
translate([p4baseOD/2,0,0]){
difference(){
union(){
cylinder(h=p4baseH,d=p4baseOD-(p4basegapW*2)-((p4baseW-p4basegapW)/2*2));
//ramps
for(i=[1:p2needles*(p2number/p4number)]){
rotate([0,0,(360/p2number/p2needles)-(360/p2number/p2needles*i)-(((360/p2number/p2needles))/2)]){
difference(){
union(){
translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4rampH+p4baseH-(p4rampC1/2)])
rotate([90,0,0])
#cylinder(h=p4rampW,d=p4rampC1);
intersection(){
translate([-10,0,3.82])
translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4rampH+p4baseH-(p4rampC2/2)])
rotate([90,0,0])
#cylinder(h=p4rampW,d=p4rampC2);
translate([-7,0,-2.86/2])
translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4rampH+p4baseH-(p4rampC2/2)])
#cube([p4rampC2,p4rampC2,p4rampC2],center=true);
}
}//end union
translate([-p4rampC2/2,0,0])
translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4rampH+p4baseH-(p4rampC2/2)])
cube([p4rampC2,p4rampC2,p4rampC2],center=true);
translate([0,0,0])
translate([-p4baseOD/2+p4rampfromOD,p4rampW/2,p4baseH-(p4rampC2/2)])
cube([p4rampC2,p4rampC2,p4rampC2],center=true);
translate([0,-p4clawW/2,0])
translate([-(p4baseID/2)-p4rampfromID,0,p4baseW])
#cube([(p4baseID/2)+p4rampfromID,p4clawW,p4rampoverhangH]);
}//end ramps difference
} //end for rotate
}//end for
//claws
for(i=[1:p2needles*(p2number/p4number)]){
rotate([0,0,(360/p2number/p2needles)-(360/p2number/p2needles*i)-(((360/p2number/p2needles))/2)]){
translate([-p4baseOD/2,-p4clawW/2,0])
cube([(p4baseOD-p4baseID)/2,p4clawW,p4baseH]);
}
}//end for
} //end main union
cylinder(h=p4baseH,d=p4baseID);
translate([-p4baseOD/2,-p4baseOD/2,0]){
cube([p4baseOD,p4baseOD/2,p4baseH]);
}
rotate([0,0,-360/p4number]){
translate([-p4baseOD/2,0,0])
cube([p4baseOD,p4baseOD/2,p4baseH]);
}
difference(){
cylinder(h=p4basegapH,d=p4basegapOD);
cylinder(h=p4basegapH,d=p4basegapID);
}
//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