3D

Colour-block Tube

const fs = require('fs');
let kCode = "";
//Parameters:
const width = 16;
const height = 80; //even for convenience
const carrierA = "3";
const carrierB = "2";
//Operation:
//Makes a tube with circumference of width * 2 and height of height/2
//Bottom half is one colour, top half is another colour
kCode += (";!knitout-2" + "\n");
kCode += (";;Carriers: 1 2 3 4 5 6 7 8 9 10" + "\n");
//Alternating tucks cast-on:
kCode += ("inhook " + carrierA + "\n");
let min = 1;
let max = min + width - 1;
//cast-on on the front bed first...
for (let n = max; n >= min; --n) {
if ((max-n) % 2 == 0) {
kCode += ("tuck - f" + n + " " + carrierA + "\n");
}
}
for (let n = min; n <= max; ++n) {
if ((max-n)%2 == 1) {
kCode += ("tuck + f" + n + " " + carrierA + "\n");
}
}
//and then on the back bed
for (let n = max; n >= min; --n) {
if ((max-n) % 2 == 0) {
kCode += ("tuck - b" + n + " " + carrierA + "\n");
}
}
for (let n = min; n <= max; ++n) {
if ((max-n)%2 == 1) {
kCode += ("tuck + b" + n + " " + carrierA + "\n");
}
}
kCode += ("miss + f" + max + " " + carrierA + "\n");
kCode += ("releasehook " + carrierA + "\n");
//knit first half in yarn A
for (let r = 0; r < height/2; ++r) {
//essentially, knit going in only one way on each bed, so they only meet on the edges
if (r % 2 == 0) {
for (let n = max; n >= min; --n) {
kCode += ("knit - f" + n + " " + carrierA + "\n");
}
} else {
for (let n = min; n <= max; ++n) {
kCode += ("knit + b" + n + " " + carrierA + "\n");
}
}
}
kCode += ("outhook " + carrierA + "\n");
//bring in yarn B
kCode += ("inhook " + carrierB + "\n");
for (let r = 0; r < 4; ++r) {
//essentially, knit going in only one way on each bed, so they only meet on the edges
if (r % 2 == 0) {
for (let n = max; n >= min; --n) {
kCode += ("knit - f" + n + " " + carrierB + "\n");
}
} else {
for (let n = min; n <= max; ++n) {
kCode += ("knit + b" + n + " " + carrierB + "\n");
}
}
}
kCode += ("releasehook " + carrierB + "\n");
//knit second half in yarn B
for (let r = 0; r < height/2 - 4; ++r) {
//essentially, knit going in only one way on each bed, so they only meet on the edges
if (r % 2 == 0) {
for (let n = max; n >= min; --n) {
kCode += ("knit - f" + n + " " + carrierB + "\n");
}
} else {
for (let n = min; n <= max; ++n) {
kCode += ("knit + b" + n + " " + carrierB + "\n");
}
}
}
kCode += ("outhook " + carrierB + "\n");
//write to file
fs.writeFile("./../knitout-backend-swg/examples/in/colourblock_tube.knitout", kCode, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});

Graphic generated by the Carnegie Mellon Textiles Lab's Knitout visualizer.

HOME