Ditt første skilpaddebroderi

Ditt første skilpaddebroderi#

Nå skal vi lage vårt første skilpaddebroderi. Det første vi må gjøre er å importere TurtleThread (pass på at det er installert).

1from turtlethread import Turtle

Så oppretter vi et skilpaddeobjekt som vi skal bruke for å tegne med

1from turtlethread import Turtle
2
3nål = Turtle()

Nå har vi alt vi trenger for å begynne å lage mønster. La oss begynne med en strek. For å tegne en strek bruker vi forward og bestemmer hvor langt vi vil gå (f.eks 300 steg).

1from turtlethread import Turtle
2
3nål = Turtle()
4nål.forward(300)

Denne koden flytter skilpadden 300 steg, men den lager ingen søm. For at skilpadden skal sy mens den flytter seg må vi bruke forward kommandoen inne i en søm-blokk.

Få skilpadda til å brodere mens den går#

Den enkleste søm-blokken er en som heter running_stitch (Se Oversikt over sømmetyper i TurtleThread for mer detaljer). I en running stitch-block så broderer vi en rett strek med et fast mellomrom mellom hvert sting.

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(30):
5    nål.forward(300)

Her har vi lagd kode som flytter skilpadda 300 steg fremover, med en running stitch søm, hvor vi setter et sting for hvert trettiende steg. Dette tilsvarer at vi setter ca et sting per tredje millimeter. La oss se på hvordan dette ser ut. For å gjøre det kan vi bruke visualise-funksjonen, som bruker det innebygde turtle-biblioteket for å tegne broderiet vårt.

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(30):
5    nål.forward(300)
6nål.visualise()
En rett linje med korte vertikale linjer på tvers som indikerer hvor stingene plasseres.

Nå har vi en søm som gir en rett strek fremover. For å skifte retning kan vi bruke right og sende inn antall grader vi vil rotere (f.eks 90 grader).

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(30):
5    nål.forward(300)
6    nål.right(90)
7    nål.forward(300)
8
9nål.visualise()
En rett horisontal linje etterfulgt av en vertikal linje nedover med samme lengde. Begge linjene har korte vertikale linjer på tvers som indikerer hvor stingene plasseres.

Med en for løkke kan vi gjenta dette fire ganger for å få en firkant:

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(30):
5    for side in range(4):
6        nål.forward(300)
7        nål.right(90)
8
9nål.visualise()
En firkant med korte vertikale linjer på tvers som indikerer hvor stingene plasseres.

Hvis vi bruker en ny løkke og tegner firkanten åtte ganger, så får vi en fin blomst:

 1from turtlethread import Turtle
 2
 3nål = Turtle()
 4with nål.running_stitch(30):
 5    for kronblad in range(8):
 6        for side in range(4):
 7            nål.forward(300)
 8            nål.right(90)
 9        nål.right(45)
10
11nål.visualise()
Eight squares placed on top of each other to form what looks like a flower.

Det kan ofte være lurt å finne de variable størrelsene i programmet, og la de være pythonvariabler. En variabel størrelse i programmet vi akkurat lagde er hvor mange kronblader, så la oss lage en pythonvariabel som lagrer antallet kronblader

 1from turtlethread import Turtle
 2
 3nål = Turtle()
 4
 5antall_kronblader = 8
 6with nål.running_stitch(30):
 7    for kronblad in range(antall_kronblader):
 8        for side in range(4):
 9            nål.forward(300)
10            nål.right(90)
11        nål.right(360 / antall_kronblader)
12
13nål.visualise()
Åtte roterte firkanter plassert opp å hverandre som tilsammen danner en blomst

Prøv selv:

  • Prøv å endre koden for å endre antall kronblader for å få en blomst slik som den under:

Ti roterte firkanter plassert opp å hverandre som tilsammen danner en blomst
Trykk her for å se hvordan den ferdige koden kan se ut
 1from turtlethread import Turtle
 2
 3nål = Turtle()
 4
 5antall_kronblader = 10
 6with nål.running_stitch(30):
 7    for kronblad in range(antall_kronblader):
 8        for side in range(4):
 9            nål.forward(300)
10            nål.right(90)
11        nål.right(360 / antall_kronblader)
12
13nål.visualise()

Lagre mønsteret#

Nå som vi har et fint motiv kan vi for eksempel lagre det som PNG eller SVG bilder

 1from turtlethread import Turtle
 2
 3nål = Turtle()
 4
 5antall_kronblader = 8
 6with nål.running_stitch(30):
 7    for kronblad in range(antall_kronblader):
 8        for side in range(4):
 9            nål.forward(300)
10            nål.right(90)
11        nål.right(360 / antall_kronblader)
12
13nål.visualise()
14nål.save("blomst.png")
15nål.save("blomst.svg")

Under er blomst.svg fila csom vi nettopp lagde

Åtte roterte firkanter plassert opp å hverandre som tilsammen danner en blomst

Eller vi kan lagre DST-fil for å bruke det med en broderimasking

 1from turtlethread import Turtle
 2
 3nål = Turtle()
 4
 5antall_kronblader = 8
 6with nål.running_stitch(30):
 7    for kronblad in range(antall_kronblader):
 8        for side in range(4):
 9            nål.forward(300)
10            nål.right(90)
11        nål.right(360 / antall_kronblader)
12
13nål.visualise()
14nål.save("blomst.png")
15nål.save("blomst.svg")
16nål.save("blomst.dst")
Eksempelbroderi laget med TurtleThread