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()
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:133123 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")
0.0,0.0 color:2063334 command:STITCH flags:0
20.0,0.0 color:2063334 command:STITCH flags:0
40.0,0.0 color:2063334 command:STITCH flags:0
60.0,0.0 color:2063334 command:STITCH flags:0
60.0,0.0 color:2063334 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")
0.0,0.0 color:15977525 command:STITCH flags:0
30.0,0.0 color:15977525 command:STITCH flags:0
60.0,0.0 color:15977525 command:STITCH flags:0
60.0,0.0 color:15977525 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")
0.0,0.0 color:9560853 command:STITCH flags:0
30.0,0.0 color:9560853 command:STITCH flags:0
60.0,0.0 color:9560853 command:STITCH flags:0
60.0,-30.0 color:9560853 command:STITCH flags:0
60.0,-30.0 color:9560853 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()
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()
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")
0.0,0.0 color:11413873 command:STITCH flags:0
30.0,0.0 color:11413873 command:STITCH flags:0
60.0,0.0 color:11413873 command:STITCH flags:0
60.0,0.0 color:11413873 command:TRIM flags:2
105.0,0.0 color:11413873 command:JUMP flags:1
105.0,0.0 color:11413873 command:STITCH flags:0
135.0,0.0 color:11413873 command:STITCH flags:0
165.0,0.0 color:11413873 command:STITCH flags:0
165.0,0.0 color:11413873 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å.