示例#1
0
## Set up the turtle
t.name("braille-ca.gcode")
t.setup(x=100, y=100)
t.rate(FEEDRATE)
t.set_density(EXT_DENSITY)

ca = [0] * NUM_SIDES
ca[0] = 1
on_states = [1, 2, 3, 4]  # Wolfram's "Rule 30"

for l in range(LAYERS):
    for k in range(NUM_SIDES):
        t.right(dtheta)
        t.forward(dx)
        if ca[k] == 1:
            t.left(BUMP_ANGLE)
            t.forward(BUMPLENGTH)
            t.forward(-BUMPLENGTH)
            t.right(BUMP_ANGLE)
        t.lift(LAYER_HEIGHT / NUM_SIDES)

    ## Update cellular automaton
    if l % 3 == 2:
        new_ca = [0] * NUM_SIDES
        for i in range(NUM_SIDES):
            state_num = ca[(i - 1) % NUM_SIDES] * 4 + ca[i] * 2 + ca[(i + 1) %
                                                                     NUM_SIDES]
            if state_num in on_states: new_ca[i] = 1
        ca = new_ca

## Save to a GCODE file
示例#2
0
from extruder_turtle import ExtruderTurtle
import math

t = ExtruderTurtle()

t.name("stretchy-line.gcode")
t.setup(x=100, y=100)
t.rate(900)
t.set_density(0.05)

for l in range(10):
    t.forward(20)
    t.right(math.pi / 2)
    t.forward(5)
    t.left(math.pi / 2)
    t.forward(2)
    t.left(math.pi / 2)
    t.forward(10)
    t.right(math.pi / 2)
    t.forward(2)
    t.right(math.pi / 2)
    t.forward(5)
    t.left(math.pi / 2)
    t.forward(20)
    t.right(math.pi)
    t.lift(0.3)

t.finish()
示例#3
0
t = ExtruderTurtle()

t.name("square-string-art.gcode")
t.setup(x=100, y=100)
t.rate(500)

t.set_density(0.06)
for l in range(50):
    x = 5 * (l % 10)
    y = 5 * (l % 10)
    theta = math.atan(y / (50 - x))
    r = math.sqrt((50 - x)**2 + y**2)
    for i in range(3):
        t.forward(50)
        t.left(math.pi / 2)
        t.forward(50)
        t.left(math.pi * 3 / 4)
        t.forward(50 * math.sqrt(2))
        t.left(math.pi * 3 / 4)
        t.lift(0.3)
    t.lift(-0.2)
    t.set_density(0.03)
    t.forward(x)
    t.left(theta)
    t.forward(r)
    t.forward(-r)
    t.right(theta)
    t.forward(-x)
    t.lift(0.2)
    t.set_density(0.06)
SIDELENGTH = 25
NUM_SIDES = 5
LAYERS = 100
dx = SIDELENGTH/(NUM_HAIRS+1)

t = ExtruderTurtle()

## Set up the turtle
t.name("furry-prism.gcode")
t.setup(x=100, y=100)
t.rate(FEEDRATE)
t.set_density(EXT_DENSITY)

for l in range(LAYERS):
    ## Draw a pentagon
    for k in range(NUM_SIDES):
        t.move(dx)
        for n in range(NUM_HAIRS):
            t.left(HAIR_ANGLE)
            t.move(HAIRLENGTH)
            t.move(-HAIRLENGTH)
            t.right(HAIR_ANGLE)
            t.move(dx)
        t.right(2*math.pi/NUM_SIDES)

    ## Move to the next layer
    t.lift(LAYER_HEIGHT)

## Save to a GCODE file
t.finish()
示例#5
0
dx = RADIUS * dtheta
dr = -0.5 / N
MAX_HEIGHT = 6

t = ExtruderTurtle()

t.name("nonplanar-bump.gcode")
t.setup(x=100, y=100)
t.set_density(0.05)
t.rate(1000)

for l in range(10):
    radius = RADIUS
    prop = l / 10
    while radius > 0:
        t.move_lift(
            dx, prop * radius * 2 * MAX_HEIGHT / (-RADIUS**2 / dr - RADIUS))
        t.right(dtheta)
        radius += dr
        dx = radius * dtheta
    t.lift(0.15)
    while radius < RADIUS:
        radius += -dr
        dx = radius * dtheta
        t.left(dtheta)
        t.move_lift(
            -dx, -prop * radius * 2 * MAX_HEIGHT / (-RADIUS**2 / dr - RADIUS))
    t.lift(0.15)

t.finish()