Oversikt over sømmetyper i TurtleThread

Oversikt over sømmetyper i TurtleThread#

TurtleThread støtter for øyeblikket to sømmetyper: rettsøm og hoppesøm (sikksakksøm er under utvikling). I denne guiden skal vi se på hva en sømmetype gjør og hva forskjellen på disse to sømmetypene er.

Ingen søm#

La oss starte med å opprette en skilpadde som skal styre nåla vår og be den gå 60 steg fremover.

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

Hva skjer hvis vi visualiserer dette?

1from turtlethread import Turtle
2
3nål = Turtle()
4nål.forward(60)
5nål.visualise()
Resultat fra koden over. Et bilde med kun en trekant som markerer hvor nåla er.

Her ser vi kun markøren for nåla! Grunnen til det er at vi kun har bedt skilpadden gå fremover, vi har ikke bedt den om å sy med en søm. Vi kan se dette enda tydeligere hvis vi lagrer broderimønsteret som tekstfil og ser på innholdet i fila.

1from turtlethread import Turtle
2
3nål = Turtle()
4nål.forward(60)
5nål.save("pattern_no_stitch.txt")
0.0,0.0 color:6806995 command:END flags:4

Her ser vi at broderimønsteret vårt ikke inneholder noen sting!

Rettsøm#

For å få skilpadden til å sy mens den beveger seg kan vi bruke en konteksthåndterer som bestemmer sømtype. Hvis vi for eksempel ønsker rettsøm (running stitch på engelsk) kan vi skrive

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(20):
5    nål.forward(60)
6
7nål.visualise()
8nål.save("pattern_running_stitch_20.txt")
Resultat fra koden over. En horisontal blå strek med fire korte vertikale streker med lik avstand mellom hver strek.
0.0,0.0 color:6490456 command:STITCH flags:0
20.0,0.0 color:6490456 command:STITCH flags:0
40.0,0.0 color:6490456 command:STITCH flags:0
60.0,0.0 color:6490456 command:STITCH flags:0
60.0,0.0 color:6490456 command:END flags:4

I visualiseringen har det nå dukket opp noen små linjer på tvers som indikerer hvor stingene skal plasseres. Vi ser at det er sting på posisjonene (0, 0), (20, 0), (40, 0) og (60, 0) altså med 20 steg mellom hvert sting. Grunnen til at det er akkurat 20 steg mellom hvert sting er at vi bestemte det på linje 4 ved å skrive with nål.running_stitch(20). Hvis vi ønsker at stingene skal være 30 steg lange kan vi isteden skrive:

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(30):
5    nål.forward(60)
6
7nål.visualise()
8nål.save("pattern_running_stitch_30.txt")
Resultat fra koden over. En horisontal blå strek med tre korte vertikale streker, en i hver ende og en på midten.
0.0,0.0 color:3868203 command:STITCH flags:0
30.0,0.0 color:3868203 command:STITCH flags:0
60.0,0.0 color:3868203 command:STITCH flags:0
60.0,0.0 color:3868203 command:END flags:4

Innrykk er viktig#

Legg merke til at line 5 ligger et innrykknivå inn. Innrykknivå er det Python bruker for å gruppere linjer med kode sammen til en blokk. Hvis vi legger til nye linjer på samme innrykknivå vil de høre til i samme blokk, altså rettsømblokken, og de vil også utføres med rettsøm:

 1from turtlethread import Turtle
 2
 3nål = Turtle()
 4with nål.running_stitch(30):
 5    nål.forward(60)
 6    nål.right(90)
 7    nål.forward(30)
 8
 9nål.visualise()
10nål.save("pattern_angle.txt")
Resultat fra koden over. En horisontal blå strek etterfulgt av en vertikal strek nedover som er halvparten så stor som den horisontale streken. Hver strek har små tverrstreker som markerer hvor stingene skal være.
0.0,0.0 color:11603411 command:STITCH flags:0
30.0,0.0 color:11603411 command:STITCH flags:0
60.0,0.0 color:11603411 command:STITCH flags:0
60.0,-30.0 color:11603411 command:STITCH flags:0
60.0,-30.0 color:11603411 command:END flags:4

Her ser vi at linje 5-7 hører sammen i en blokk som hører under rettsøm konteksten. Vi kan fortsette å legge så mange linjer vi vil innenfor samme innrykksnivå og de vil bli utført med rettsøm. Her er et eksempel hvor vi har en for løkke innenfor rettsømkonteksten:

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(30):
5    for side in range(4):
6        nål.forward(60)
7        nål.right(90)
8
9nål.visualise()
Resultat fra koden over. En blå firkant med korte tverrstreker som markerer sting.

Hvis vi derimot legger til en linje på et innrykksnivå utenfor vil den ikke bli utført med rettsøm

1from turtlethread import Turtle
2
3nål = Turtle()
4with nål.running_stitch(30):
5    nål.forward(60)
6nål.right(90)
7nål.forward(30)
8
9nål.visualise()
Resultat fra koden over. En horisontal blå strek med tre korte vertikale streker, en i hver ende og en på midten.

Hoppesøm#

Hvis vi ønsker å flytte nåla uten å lage sting kan vi bruke hoppesøm (også kjent som forbindende sting, eller jump stitch på engelsk). Koden under viser hvordan vi kan bruke hoppesøm til å tegne to streker med et mellomrom mellom

 1from turtlethread import Turtle
 2
 3nål = Turtle()
 4# Sy først 2 sting med 30 steg mellom hvert sting
 5with nål.running_stitch(30):
 6    nål.forward(60)
 7    
 8# Hopp 45 steg fremover uten å sy sting. Om maskina støtter det kuttes tråden.
 9with nål.jump_stitch():
10    nål.forward(45)
11
12# Sy så 2 sting med 30 steg mellom hvert sting
13with nål.running_stitch(30):
14    nål.forward(60)
15
16nål.visualise()
17nål.save("pattern_jump.txt")
Resultat fra koden over. En horisontal blå strek med tre korte vertikale streker, en i hver ende og en på midten, etterfulgt av ett sort kryss som indikerer at tråden skal kuttes, en rød strek som ender i en rød sirkel, som indikerer at nåla skal flyttes dit uten å sy og til slutt en ny horisontal blå strek med tre korte vertikale streker.
0.0,0.0 color:12826448 command:STITCH flags:0
30.0,0.0 color:12826448 command:STITCH flags:0
60.0,0.0 color:12826448 command:STITCH flags:0
60.0,0.0 color:12826448 command:TRIM flags:2
105.0,0.0 color:12826448 command:JUMP flags:1
105.0,0.0 color:12826448 command:STITCH flags:0
135.0,0.0 color:12826448 command:STITCH flags:0
165.0,0.0 color:12826448 command:STITCH flags:0
165.0,0.0 color:12826448 command:END flags:4

I visualiseringen ser vi at den første blå linja slutter med et sort kryss. Hvis broderimaskinen du skal bruke til å utføre instruksjonene støtter det vil tråden bli kuttet her, men ikke alle maskiner støtter dette. Hvis maskinen din ikke støtter å kutte tråden, må du gjøre det manuelt til slutt. I mønsterfila ser vi kommandoene TRIM på linje 4, som indikerer at tråden skal kuttes her, og JUMP på linje 5 som indikerer at nåla skal flyttes hit uten å sy.

Hva er en konteksthåndterer?#

Som vi nevnte på starten er with nål.running_stitch(30) og with nål.jump_stitch() konteksthåndterere som bestemmer hvilken søm skilpadde skal sy med mens den beveger seg. Konteksthåndterere i Python brukes når vi har noe som består av en startinstruks og en sluttinstruks. I vårt tilfelle er det å starte og avslutte en sømtype. Bak scenen blir

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

Det samme som

1from turtlethread import Turtle
2
3nål = Turtle()
4nål.start_running_stitch(30)
5nål.forward(60)
6nål.cleanup_stitch_type()

Men det anbefales å bruke konteksthåndtereren i de aller fleste tilfeller fordi det er ryddigere og det garanterer at man alltid avslutter den sømmetypen man har startet på.