## Introduction: Project4_G-Code

I am choosing option 2 for my project, which is to create my own slicer and generate g-code. I was thinking about what the 3D printer as a tool/device affords, which is primarily the physical creation of a 3 dimensional form. However, the method to obtain this 3D form is actually a 2D layered "drawing" pattern, which is in contrast to its affordance. I wanted to play with this thought a little bit and explore the 3D-printed output of a mark-driven layered drawing (as opposed to a 3D printed object) using a "random print generator" that I created. Leveraging aspects of generativity (randomness, repetition), my Grasshopper Python code outputs an executable g-code script for a layered "gestural" drawing.

## Step 1: First Draft of Python Script

I wanted to create a "random print generator" that generates a G-Code script based on two input integers: the total number of G-code commands in your print ("lines") and how many lines per layer of print ("linesPerLayer").

For my first iteration, "linesPerLayer" is a constant throughout the program to reduce complexity (so if I pick the value "5", all layers will have 5 lines per layer, except for the top which will just print the remaining lines). Before starting the print, I want to auto-home the printer and clean the nozzle (G28 and G12, respectively). Then, I use a double for loop to generate G-Code based on the variables "lines" and "linesPerLayer" using (G0-3: commands for drawing lines/curves).

Python Code:

```<p>__author__ = "stejaraiulia"</p><p>import rhinoscriptsyntax as rs
import random as r
import math as m</p><p># create a random print generator
# G12: clean the nozzle -> do this before and after?
# G2/3: arc clockwise/counterclockwise</p><p>def generateCoordinatePoint(s, e) :
#x_val = "X"+str(r.uniform(s, e))
#y_val = "Y"+str(r.uniform(s, e))
return (r.uniform(s, e), r.uniform(s, e))
#return (str(x_val) + " " + str(y_val))

def makeGcodeSpeed(frX, frY, toX, toY, speed):
l = m.sqrt((toX - frX)**2 + (toY - frY)**2)
numerator = (nozzleWidth * l)
denominator = (1.75 / 2) * (1.75 / 2) * m.pi</p><p>    e = numerator / denominator</p><p>    return e</p><p>startVal = 1
endVal = 3
instructions = []
nozzleWidth = 0.4</p><p>xPos = 0
yPos = 0
zPos = 0.3
xPrev = 0
yPrev = 0</p><p># starting instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("M104 S200\n") # Set Extruder temperature
instructions.append("M140 S50\n") # Set Heat Bed temperature
instructions.append("M190 S200\n") # Wait for Heat Bed temperature
instructions.append("M109 S50\n") # Wait for Extruder temperature
instructions.append("G28\n") # auto-home before starting the print
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed
instructions.append("G1 X0.1 Y20 Z" + str(zPos) + " F5000.0\n") # Move to start position
instructions.append("G1 X0.1 Y200.0 Z0.3 F1500.0 E15\n") # Draw the first line
instructions.append("G1 X0.4 Y200.0 Z0.3 F5000.0\n") # Move to side a little
instructions.append("G1 X0.4 Y20 Z0.3 F1500.0 E30\n") # Draw the second line
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed</p><p># now, randomly generate g-code for layer drawing
for i in range(lines): # go through based on total amount of commands (parameter)
if (i % linesPerLayer != 0):
num = r.randint(startVal, endVal)
coord = generateCoordinatePoint(10, 220)
xPrev = xPos
yPrev = yPos
xPos = coord[0]
yPos = coord[1]
e = makeGcodeSpeed(xPrev, yPrev, xPos, yPos, 1500.0)
inst = "G" + str(num) + " X" + str(xPos) + " Y" + str(yPos) + " Z" + str(zPos) + " F1500.0 E" + str(e) + "\n"
instructions.append(inst)
else: # move to the next layer
zPos += nozzleWidth # increment z up one layer by adding the nozzleWidth value
instructions.append("G1 Z" + str(zPos) + " F5000.0\n") # move to start position
#instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n")# move to start position</p><p># ending instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("G4\n") # Wait
instructions.append("M220 S100\n") # Reset Speed factor override percentage to default (100%)
instructions.append("M221 S100\n") # Reset Extrude factor override percentage to default (100%)
instructions.append("G91n") # Set coordinates to relative
instructions.append("G1 F1800 E-3\n") # Retract filament 3 mm to prevent oozing
instructions.append("G1 F3000 Z10\n") # Move Z Axis up 10 mm to allow filament ooze freely
instructions.append("G90\n") # Set coordinates to absolute
instructions.append("G1 X0 Y200 F1000\n") # Move Heat Bed to the front for easy print removal
instructions.append("M104 S0\n") # Turn off Extruder temperature
instructions.append("M140 S0\n") # Turn off Heat Bed
instructions.append("M106 S0\n") # Turn off Cooling Fan
instructions.append("M107\n") # Turn off Fan
instructions.append("M84\n") # Disable stepper motors</p><p>
f = open("/Users/stejaraiulia/Desktop/draftOne.gcode", "w")
str_instructions = ''.join(instructions)
f.write(str_instructions)
f.close()</p><p>print(str_instructions)</p>```

Generated G-Code (First Draft):

```<p>M104 S200<br>M140 S50
M190 S200
M109 S50
G28
G92 E0
G1 Z5.0 F3000
G1 X0.1 Y20 Z0.3 F5000.0
G1 X0.1 Y200.0 Z0.3 F1500.0 E15
G1 X0.4 Y200.0 Z0.3 F5000.0
G1 X0.4 Y20 Z0.3 F1500.0 E30
G92 E0
G1 Z5.0 F3000
G1 Z0.7 F5000.0
G2 X191.076085385 Y148.465580202 Z0.7 F1500.0 E40.2406740262
G2 X15.5820308180 Y113.423273021 Z0.7 F1500.0 E29.7609109127
G1 X49.7596834451 Y13.3216947459 Z0.7 F1500.0 E17.5905225395
G1 X32.9885168013 Y19.0962942020 Z0.7 F1500.0 E2.94975411671
G1 Z1.1 F5000.0
G2 X108.557252098 Y39.5409070785 Z1.1 F1500.0 E13.0189277293
G1 X109.900830515 Y50.0839713641 Z1.1 F1500.0 E1.76749852524
G2 X199.752097619 Y183.767377924 Z1.1 F1500.0 E26.7865445628
G2 X184.313418390 Y45.1581869908 Z1.1 F1500.0 E23.1933468922
G1 Z1.5 F5000.0
G1 X210.633980481 Y74.4342473136 Z1.5 F1500.0 E6.54696780110
G2 X154.883195586 Y172.644080872 Z1.5 F1500.0 E18.7804357761
G2 X181.897237258 Y89.8967489536 Z1.5 F1500.0 E14.4756875184
G1 X153.995136114 Y194.346202315 Z1.5 F1500.0 E17.9791070698
G1 Z1.9 F5000.0
G1 X48.2927709167 Y109.862785045 Z1.9 F1500.0 E22.5031531972
G3 X111.222129730 Y104.028190028 Z1.9 F1500.0 E10.5100799215
G2 X11.8551393594 Y156.723030304 Z1.9 F1500.0 E18.7046088178
G3 X145.547446349 Y14.6632218852 Z1.9 F1500.0 E32.4412604364
G1 Z2.3 F5000.0
G3 X101.004410501 Y12.9073438131 Z2.3 F1500.0 E7.41329006983
G1 X120.535314845 Y20.1689508543 Z2.3 F1500.0 E3.46523347637
G1 X177.982165059 Y70.4643198098 Z2.3 F1500.0 E12.6975381718
G1 X200.147968746 Y92.4734208445 Z2.3 F1500.0 E5.19466288541
G1 Z2.7 F5000.0
G2 X36.9260612396 Y181.853026031 Z2.7 F1500.0 E30.9471682623
G3 X11.0948342964 Y181.698243469 Z2.7 F1500.0 E4.29582760130
G1 X173.260864801 Y15.1063313617 Z2.7 F1500.0 E38.6629172790
G2 X171.294868657 Y41.8704040194 Z2.7 F1500.0 E4.46287537848
G1 Z3.1 F5000.0
G1 X179.592057342 Y171.579519975 Z3.1 F1500.0 E21.6148007005
G1 X67.0291701115 Y25.6160047301 Z3.1 F1500.0 E30.6533925953
G2 X96.4036242439 Y135.999484347 Z3.1 F1500.0 E18.9957095534
G3 X100.345074123 Y211.603753729 Z3.1 F1500.0 E12.5901150349
G1 Z3.5 F5000.0
G1 X190.433599275 Y22.6514123053 Z3.5 F1500.0 E34.8116729946
G2 X131.116772244 Y214.773469790 Z3.5 F1500.0 E33.4381702453
G1 X214.298481682 Y118.874844787 Z3.5 F1500.0 E21.1115042942
G1 X66.8231005585 Y40.7241369178 Z3.5 F1500.0 E27.7560366454
G1 Z3.9 F5000.0
G1 X143.573733672 Y36.9906706818 Z3.9 F1500.0 E12.7787742162
G2 X117.724015239 Y14.7207609752 Z3.9 F1500.0 E5.67413619972
G3 X211.968256580 Y138.726521872 Z3.9 F1500.0 E25.9020472851
G3 X175.938085236 Y42.5162991416 Z3.9 F1500.0 E17.0849807902
G4
M220 S100
M221 S100
G91nG1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y200 F1000
M104 S0
M140 S0
M106 S0
M107
M84</p>```

## Step 2: 3D Print First Draft Drawing!

I exported my first draft G-code file and tried to print it as a test run. However, I ran into 2 issues right off the bat.

1. Heating the bed: even though I set the bed temp to 50 in the code, my printer says the bed temp is set to 125.

2. Levels of my drawing: the first mark goes down fine but then the z-axis bumps up a level due to a bug in the code.

Round 2 Python Script:

```<p>"""Provides a scripting component.<br>    Inputs:
x: The x script variable
y: The y script variable
Output:
a: The a output variable"""</p><p>__author__ = "stejaraiulia"</p><p>import rhinoscriptsyntax as rs
import random as r
import math as m</p><p># create a random print generator
# G12: clean the nozzle -> do this before and after?
# G2/3: arc clockwise/counterclockwise</p><p>def generateCoordinatePoint(s, e) :
#x_val = "X"+str(r.uniform(s, e))
#y_val = "Y"+str(r.uniform(s, e))
return (r.uniform(s, e), r.uniform(s, e))
#return (str(x_val) + " " + str(y_val))

def makeGcodeSpeed(frX, frY, toX, toY, speed):
l = m.sqrt((toX - frX)**2 + (toY - frY)**2)
numerator = (nozzleWidth * l)
denominator = (1.75 / 2) * (1.75 / 2) * m.pi</p><p>    e = numerator / denominator</p><p>    return e</p><p>startVal = 1
endVal = 3
instructions = []
nozzleWidth = 0.4</p><p>xPos = 0
yPos = 0
zPos = 0.3
xPrev = 0
yPrev = 0</p><p># starting instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("M104 S200\n") # Set Extruder temperature
instructions.append("M140 S50\n") # Set Heat Bed temperature
instructions.append("M190 S50\n") # Wait for Heat Bed temperature
instructions.append("M109 S200\n") # Wait for Extruder temperature
instructions.append("G28\n") # auto-home before starting the print
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed
instructions.append("G1 X0.1 Y20 Z" + str(zPos) + " F5000.0\n") # Move to start position
instructions.append("G1 X0.1 Y200.0 Z0.3 F1500.0 E15\n") # Draw the first line
instructions.append("G1 X0.4 Y200.0 Z0.3 F5000.0\n") # Move to side a little
instructions.append("G1 X0.4 Y20 Z0.3 F1500.0 E30\n") # Draw the second line
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z0.3 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed</p><p># now, randomly generate g-code for layer drawing
for i in range(lines): # go through based on total amount of commands (parameter)
if (i <= 1 or i % linesPerLayer != 0):
num = r.randint(startVal, endVal)
coord = generateCoordinatePoint(10, 220)
xPrev = xPos
yPrev = yPos
xPos = coord[0]
yPos = coord[1]
e = makeGcodeSpeed(xPrev, yPrev, xPos, yPos, 1500.0)
inst = "G" + str(num) + " X" + str(xPos) + " Y" + str(yPos) + " Z" + str(zPos) + " F1500.0 E" + str(e) + "\n"
instructions.append(inst)
else: # move to the next layer
zPos += nozzleWidth # increment z up one layer by adding the nozzleWidth value
instructions.append("G1 Z" + str(zPos) + " F5000.0\n") # move to start position
#instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n")# move to start position</p><p># ending instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("G4\n") # Wait
instructions.append("M220 S100\n") # Reset Speed factor override percentage to default (100%)
instructions.append("M221 S100\n") # Reset Extrude factor override percentage to default (100%)
instructions.append("G91n") # Set coordinates to relative
instructions.append("G1 F1800 E-3\n") # Retract filament 3 mm to prevent oozing
instructions.append("G1 F3000 Z10\n") # Move Z Axis up 10 mm to allow filament ooze freely
instructions.append("G90\n") # Set coordinates to absolute
instructions.append("G1 X0 Y200 F1000\n") # Move Heat Bed to the front for easy print removal
instructions.append("M104 S0\n") # Turn off Extruder temperature
instructions.append("M140 S0\n") # Turn off Heat Bed
instructions.append("M106 S0\n") # Turn off Cooling Fan
instructions.append("M107\n") # Turn off Fan
instructions.append("M84\n") # Disable stepper motors</p><p>
f = open("/Users/stejaraiulia/Desktop/draftOne.gcode", "w")
str_instructions = ''.join(instructions)
f.write(str_instructions)
f.close()</p><p>print(str_instructions)</p>```

Round 2 G-Code Draft:

```<p>M104 S200<br>M140 S50
M190 S50
M109 S200
G28
G92 E0
G1 Z5.0 F3000
G1 X0.1 Y20 Z0.3 F5000.0
G1 X0.1 Y200.0 Z0.3 F1500.0 E15
G1 X0.4 Y200.0 Z0.3 F5000.0
G1 X0.4 Y20 Z0.3 F1500.0 E30
G92 E0
G1 Z0.3 F3000
G3 X180.791794908 Y78.2529806208 Z0.3 F1500.0 E32.7613183158
G3 X208.868746749 Y161.039183763 Z0.3 F1500.0 E14.5376381195
G2 X78.6501454924 Y72.6680257874 Z0.3 F1500.0 E26.1712808343
G3 X207.545519849 Y94.9220863672 Z0.3 F1500.0 E21.7525229265
G2 X118.087817224 Y122.754881733 Z0.3 F1500.0 E15.5802922037
G1 Z0.7 F5000.0
G1 X50.5716374999 Y159.844971568 Z0.7 F1500.0 E12.8106681950
G2 X149.480007056 Y152.212419920 Z0.7 F1500.0 E16.4974305027
G3 X48.0963034234 Y85.9035281301 Z0.7 F1500.0 E20.1460927184
G3 X122.034958437 Y119.584627267 Z0.7 F1500.0 E13.5117033277
G1 Z1.1 F5000.0
G1 X84.3715512989 Y97.5580523864 Z1.1 F1500.0 E7.25593732684
G2 X120.442170684 Y69.3356830586 Z1.1 F1500.0 E7.61648326005
G2 X98.8344292594 Y99.5690872928 Z1.1 F1500.0 E6.17992915198
G1 X125.088752981 Y57.8986912818 Z1.1 F1500.0 E8.19055967393
G1 Z1.5 F5000.0
G2 X212.378795808 Y186.973203571 Z1.5 F1500.0 E25.9129226003
G1 X146.377664385 Y189.603320128 Z1.5 F1500.0 E10.9847441690
G3 X104.678115651 Y68.4170162173 Z1.5 F1500.0 E21.3130861162
G2 X88.3711256290 Y17.8030024583 Z1.5 F1500.0 E8.84321930517
G1 Z1.9 F5000.0
G2 X159.735891663 Y120.141444415 Z1.9 F1500.0 E20.7483579963
G1 X204.040391222 Y209.027432426 Z1.9 F1500.0 E16.5162673677
G1 X29.1706965803 Y192.816057283 Z1.9 F1500.0 E29.2056461720
G2 X89.8497024713 Y60.0902030108 Z1.9 F1500.0 E24.2696986492
G1 Z2.3 F5000.0
G2 X117.739843482 Y129.873469416 Z2.3 F1500.0 E12.4975419225
G2 X138.199270167 Y10.9383123910 Z2.3 F1500.0 E20.0695081427
G2 X205.036406231 Y86.2135071925 Z2.3 F1500.0 E16.7407528633
G2 X212.872407414 Y190.219606938 Z2.3 F1500.0 E17.3453052804
G1 Z2.7 F5000.0
G1 X77.0614818773 Y79.6675230372 Z2.7 F1500.0 E29.1222686274
G3 X154.989338749 Y147.258762401 Z2.7 F1500.0 E17.1550464048
G1 X184.073545364 Y62.3852308836 Z2.7 F1500.0 E14.9202454480
G3 X75.9942068636 Y202.967014339 Z2.7 F1500.0 E29.4893730342
G1 Z3.1 F5000.0
G3 X176.809721437 Y98.1037148424 Z3.1 F1500.0 E24.1909353450
G3 X102.272682180 Y168.876441202 Z3.1 F1500.0 E17.0930472775
G2 X51.9509404862 Y39.8429919510 Z3.1 F1500.0 E23.0324386221
G3 X30.3776264069 Y138.521104545 Z3.1 F1500.0 E16.7978317332
G1 Z3.5 F5000.0
G2 X106.317379079 Y134.655503739 Z3.5 F1500.0 E12.6451832767
G3 X35.5546768511 Y127.169426881 Z3.5 F1500.0 E11.8335538142
G3 X170.624479789 Y15.6914549584 Z3.5 F1500.0 E29.1245567816
G3 X95.8769102073 Y147.575742681 Z3.5 F1500.0 E25.2101426936
G4
M220 S100
M221 S100
G91nG1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y200 F1000
M104 S0
M140 S0
M106 S0
M107
M84</p>```

This worked better, but I'm still having issues with layers. 2 problems again:

1. Too few "lines" drawn in a layer. I adjusted lines = 100 and linesPerLayer = 50 (to get 2 layers of 50 commands).

2. Nozzle is incrementing too far up. Not sure if this is due to problem 1, so I did not do anything to directly affect this issue yet. I did however remove the line of code to take the drawing back to the start for each layer.

New Python Code:

```<p>__author__ = "stejaraiulia"</p><p>import rhinoscriptsyntax as rs
import random as r
import math as m</p><p># create a random print generator
# G12: clean the nozzle -> do this before and after?
# G2/3: arc clockwise/counterclockwise</p><p>def generateCoordinatePoint(s, e) :
#x_val = "X"+str(r.uniform(s, e))
#y_val = "Y"+str(r.uniform(s, e))
return (r.uniform(s, e), r.uniform(s, e))
#return (str(x_val) + " " + str(y_val))

def makeGcodeSpeed(frX, frY, toX, toY, speed):
l = m.sqrt((toX - frX)**2 + (toY - frY)**2)
numerator = (nozzleWidth * l)
denominator = (1.75 / 2) * (1.75 / 2) * m.pi</p><p>    e = numerator / denominator</p><p>    return e</p><p>startVal = 1
endVal = 3
instructions = []
nozzleWidth = 0.4</p><p>xPos = 0
yPos = 0
zPos = 0.3
xPrev = 0
yPrev = 0</p><p># starting instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("M104 S200\n") # Set Extruder temperature
instructions.append("M140 S50\n") # Set Heat Bed temperature
instructions.append("M190 S50\n") # Wait for Heat Bed temperature
instructions.append("M109 S200\n") # Wait for Extruder temperature
instructions.append("G28\n") # auto-home before starting the print
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed
instructions.append("G1 X0.1 Y20 Z" + str(zPos) + " F5000.0\n") # Move to start position
instructions.append("G1 X0.1 Y200.0 Z0.3 F1500.0 E15\n") # Draw the first line
instructions.append("G1 X0.4 Y200.0 Z0.3 F5000.0\n") # Move to side a little
instructions.append("G1 X0.4 Y20 Z0.3 F1500.0 E30\n") # Draw the second line
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z0.3 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed</p><p># now, randomly generate g-code for layer drawing
for i in range(lines): # go through based on total amount of commands (parameter)
if (i <= 1 or i % linesPerLayer != 0):
num = r.randint(startVal, endVal)
coord = generateCoordinatePoint(10, 220)
xPrev = xPos
yPrev = yPos
xPos = coord[0]
yPos = coord[1]
e = makeGcodeSpeed(xPrev, yPrev, xPos, yPos, 1500.0)
inst = "G" + str(num) + " X" + str(xPos) + " Y" + str(yPos) + " Z" + str(zPos) + " F1500.0 E" + str(e) + "\n"
instructions.append(inst)
else: # move to the next layer
instructions.append("G4 P500\n") # Wait for half a second
zPos += nozzleWidth # increment z up one layer by adding the nozzleWidth value
#instructions.append("G1 Z" + str(zPos) + " F5000.0\n") # move to start position
#instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n")# move to start position</p><p># ending instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("G4\n") # Wait
instructions.append("M220 S100\n") # Reset Speed factor override percentage to default (100%)
instructions.append("M221 S100\n") # Reset Extrude factor override percentage to default (100%)
instructions.append("G91n") # Set coordinates to relative
instructions.append("G1 F1800 E-3\n") # Retract filament 3 mm to prevent oozing
instructions.append("G1 F3000 Z10\n") # Move Z Axis up 10 mm to allow filament ooze freely
instructions.append("G90\n") # Set coordinates to absolute
instructions.append("G1 X0 Y200 F1000\n") # Move Heat Bed to the front for easy print removal
instructions.append("M104 S0\n") # Turn off Extruder temperature
instructions.append("M140 S0\n") # Turn off Heat Bed
instructions.append("M106 S0\n") # Turn off Cooling Fan
instructions.append("M107\n") # Turn off Fan
instructions.append("M84\n") # Disable stepper motors</p><p>
f = open("/Users/stejaraiulia/Desktop/draftOne.gcode", "w")
str_instructions = ''.join(instructions)
f.write(str_instructions)
f.close()</p><p>print(str_instructions)</p>```

New G-Code:

```<p>M104 S200<br>M140 S50
M190 S50
M109 S200
G28
G92 E0
G1 Z5.0 F3000
G1 X0.1 Y20 Z0.3 F5000.0
G1 X0.1 Y200.0 Z0.3 F1500.0 E15
G1 X0.4 Y200.0 Z0.3 F5000.0
G1 X0.4 Y20 Z0.3 F1500.0 E30
G92 E0
G1 Z0.3 F3000
G1 X198.991397369 Y98.2751220238 Z0.3 F1500.0 E36.9081020645
G2 X137.344431715 Y86.1533683815 Z0.3 F1500.0 E10.4482431390
G3 X112.067790442 Y35.1073657004 Z0.3 F1500.0 E9.47272204663
G2 X215.743785073 Y87.3106793881 Z0.3 F1500.0 E19.3037034602
G3 X141.157233209 Y215.844845389 Z0.3 F1500.0 E24.7135256317
G2 X215.604199481 Y62.7118301429 Z0.3 F1500.0 E28.3161127834
G3 X25.8056767678 Y48.2729471320 Z0.3 F1500.0 E31.6548259603
G1 X67.4768190190 Y192.681592235 Z0.3 F1500.0 E24.9951302793
G3 X77.8206807369 Y171.986369387 Z0.3 F1500.0 E3.84757996286
G3 X153.561855764 Y44.5567431786 Z0.3 F1500.0 E24.6523771119
G2 X108.621797904 Y145.010649666 Z0.3 F1500.0 E18.3010822653
G2 X23.8079330200 Y206.745346199 Z0.3 F1500.0 E17.4453803043
G2 X134.544585862 Y49.2886236612 Z0.3 F1500.0 E32.0124375565
G1 X34.7230895486 Y213.211970650 Z0.3 F1500.0 E31.9172524100
G3 X113.760132274 Y71.3130346263 Z0.3 F1500.0 E27.0115313042
G2 X41.5816383363 Y134.695468843 Z0.3 F1500.0 E15.9744484471
G3 X194.784410277 Y60.7543945216 Z0.3 F1500.0 E28.2898769651
G1 X46.2762824127 Y32.6665219878 Z0.3 F1500.0 E25.1348452629
G3 X66.3380563624 Y198.747728841 Z0.3 F1500.0 E27.8201904147
G3 X120.976953596 Y54.4246898248 Z0.3 F1500.0 E25.6634589282
G1 X125.426883393 Y89.9102707323 Z0.3 F1500.0 E5.94749511767
G1 X134.771075443 Y41.2031538514 Z0.3 F1500.0 E8.24773754145
G2 X174.757245236 Y124.563182030 Z0.3 F1500.0 E15.3752039597
G1 X75.7350079431 Y211.316039480 Z0.3 F1500.0 E21.8933192062
G3 X170.580408368 Y38.8217482952 Z0.3 F1500.0 E32.7362912871
G3 X85.9170005523 Y197.728017660 Z0.3 F1500.0 E29.9429411379
G2 X53.5802702789 Y198.974264054 Z0.3 F1500.0 E5.38161230015
G3 X41.7060639215 Y19.8343048185 Z0.3 F1500.0 E29.8564700947
G1 X110.769055071 Y96.1026117191 Z0.3 F1500.0 E17.1108375247
G1 X60.0774979624 Y160.677089958 Z0.3 F1500.0 E13.6523609293
G2 X132.139648147 Y191.939684316 Z0.3 F1500.0 E13.0631305925
G1 X199.065693358 Y87.0903324139 Z0.3 F1500.0 E20.6858803037
G3 X51.7096558622 Y118.166418350 Z0.3 F1500.0 E25.0444206061
G3 X123.224712382 Y175.504143370 Z0.3 F1500.0 E15.2435393746
G3 X202.472448378 Y12.8595588312 Z0.3 F1500.0 E30.0877699291
G3 X120.465858534 Y84.6341070048 Z0.3 F1500.0 E18.1234675336
G2 X165.602347482 Y122.566544706 Z0.3 F1500.0 E9.80493389846
G2 X86.5182960834 Y157.531586024 Z0.3 F1500.0 E14.3798082163
G1 X33.1361240007 Y96.9066334743 Z0.3 F1500.0 E13.4333905321
G2 X218.085826589 Y110.522616452 Z0.3 F1500.0 E30.8404983241
G1 X33.7472273303 Y143.948443944 Z0.3 F1500.0 E31.1555361310
G3 X72.6365281282 Y202.981518203 Z0.3 F1500.0 E11.7560364208
G2 X188.828056860 Y195.126276232 Z0.3 F1500.0 E19.3668372703
G1 X207.410993797 Y28.6698153412 Z0.3 F1500.0 E27.8537888682
G1 X50.3252891401 Y85.1008357914 Z0.3 F1500.0 E27.7579583707
G1 X14.2891950491 Y204.364906968 Z0.3 F1500.0 E20.7193014524
G1 X163.119206237 Y90.4216154116 Z0.3 F1500.0 E31.1712620752
G2 X204.430297415 Y82.3395888778 Z0.3 F1500.0 E7.00030125843
G3 X169.391546227 Y22.0760528550 Z0.3 F1500.0 E11.5927291292
G3 X134.189420642 Y24.3005225454 Z0.3 F1500.0 E5.86581382228
G4 P500
G2 X184.918405196 Y200.340821202 Z0.7 F1500.0 E30.4669085149
G1 X120.747582223 Y16.5493781078 Z0.7 F1500.0 E32.3740856858
G2 X130.820861878 Y11.5095695871 Z0.7 F1500.0 E1.87315866584
G1 X130.231522640 Y23.1542851136 Z0.7 F1500.0 E1.93900254976
G3 X65.1507975367 Y140.611035165 Z0.7 F1500.0 E22.3311460241
G3 X163.857099413 Y34.1052659501 Z0.7 F1500.0 E24.1487894972
G2 X217.045993519 Y125.735271127 Z0.7 F1500.0 E17.6193319312
G2 X67.8083536254 Y118.097565263 Z0.7 F1500.0 E24.8508011356
G1 X53.2561068706 Y189.371568161 Z0.7 F1500.0 E12.0974470038
G2 X172.385033571 Y64.0294267592 Z0.7 F1500.0 E28.7572066904
G2 X53.5895562612 Y30.1524119162 Z0.7 F1500.0 E20.5433624870
G3 X76.0375085571 Y167.139292654 Z0.7 F1500.0 E23.0848556183
G1 X34.7949925252 Y168.541181245 Z0.7 F1500.0 E6.86261940689
G1 X39.9199298759 Y119.938318461 Z0.7 F1500.0 E8.12749912100
G1 X52.1545873205 Y58.3092916729 Z0.7 F1500.0 E10.4489558043
G1 X167.641005306 Y204.979657332 Z0.7 F1500.0 E31.0449594980
G3 X93.0698671654 Y142.870813064 Z0.7 F1500.0 E16.1391898064
G1 X174.226878472 Y152.764815189 Z0.7 F1500.0 E13.5963914836
G1 X99.2406803336 Y187.203161407 Z0.7 F1500.0 E13.7225061652
G1 X101.040945246 Y138.441843178 Z0.7 F1500.0 E8.11456490755
G2 X68.0436829518 Y208.850436318 Z0.7 F1500.0 E12.9310825153
G1 X60.6819421711 Y218.563266207 Z0.7 F1500.0 E2.02678358135
G1 X134.821498593 Y59.0041850407 Z0.7 F1500.0 E29.2593617044
G2 X203.280350907 Y124.814819557 Z0.7 F1500.0 E15.7921331949
G3 X12.6831786073 Y56.3391950156 Z0.7 F1500.0 E33.6799693716
G1 X204.405047626 Y12.2530149014 Z0.7 F1500.0 E32.7155598099
G2 X119.133043778 Y206.196761384 Z0.7 F1500.0 E35.2327875315
G3 X101.502002717 Y22.2211172299 Z0.7 F1500.0 E30.7354473326
G1 X73.3164951707 Y136.214613206 Z0.7 F1500.0 E19.5280758326
G3 X117.617337293 Y85.8132820613 Z0.7 F1500.0 E11.1593314396
G2 X98.8903812644 Y43.8237166278 Z0.7 F1500.0 E7.64589394077
G1 X78.3262908994 Y73.3393119824 Z0.7 F1500.0 E5.98232367908
G3 X12.6270955069 Y18.4069624401 Z0.7 F1500.0 E14.2417351513
G1 X175.779462634 Y182.076134197 Z0.7 F1500.0 E38.4317559915
G2 X58.4007658631 Y75.0831885847 Z0.7 F1500.0 E26.4126357633
G2 X106.982166376 Y199.316120110 Z0.7 F1500.0 E22.1835213196
G2 X64.6098378357 Y80.5312291236 Z0.7 F1500.0 E20.9731885481
G2 X152.154548229 Y135.855183494 Z0.7 F1500.0 E17.2222124590
G3 X181.559812575 Y60.4505264797 Z0.7 F1500.0 E13.4596043732
G3 X97.9008140404 Y86.4053556020 Z0.7 F1500.0 E14.5667252476
G2 X171.665785586 Y153.145113578 Z0.7 F1500.0 E16.5429190697
G1 X12.5881118349 Y109.625926500 Z0.7 F1500.0 E27.4268213869
G3 X173.069209906 Y73.6764606794 Z0.7 F1500.0 E27.3495336645
G1 X176.565202162 Y68.5769317696 Z0.7 F1500.0 E1.02820571255
G1 X169.014671266 Y137.262804357 Z0.7 F1500.0 E11.4913160222
G3 X163.237191476 Y12.8076907504 Z0.7 F1500.0 E20.7192586221
G1 X148.157370701 Y193.747161986 Z0.7 F1500.0 E30.1946770355
G1 X80.7101211031 Y199.110410530 Z0.7 F1500.0 E11.2519286500
G3 X127.526363824 Y38.5121818886 Z0.7 F1500.0 E27.8192507709
G4
M220 S100
M221 S100
G91nG1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y200 F1000
M104 S0
M140 S0
M106 S0
M107
M84</p>```

While this fixed most of the visible issues, unfortunately, the filament either isn't extruding or isn't sticking to the bed plate. Will mess around with the Z values some more and also see if rounding the decimals works. There could also be a bug in the extrusion calculation.

## Step 3: Second Round of Trials and Edits

I re-calculated the extrusion volume based on Sam's question in the slack about extruder volume. I realized that before, I had neglected the layerHeight parameter in Jennifer's code (that I borrowed for the extrusion function calculation). I realized that this assumption was probably why my filament wasn't extruding properly, so here is the new code with this change:

Python Script:

```<p>__author__ = "stejaraiulia"</p><p>import rhinoscriptsyntax as rs
import random as r
import math as m</p><p># create a random print generator
# G12: clean the nozzle -> do this before and after?
# G2/3: arc clockwise/counterclockwise</p><p>def generateCoordinatePoint(s, e) :
#x_val = "X"+str(r.uniform(s, e))
#y_val = "Y"+str(r.uniform(s, e))
return (r.uniform(s, e), r.uniform(s, e))
#return (str(x_val) + " " + str(y_val))

def makeGcodeSpeed(frX, frY, toX, toY, speed):
l = m.sqrt((toX - frX)**2 + (toY - frY)**2) #calculate the distance
e = ( (nozzleWidth/2)**2 * l ) / ( (1.75/2)**2 )
return e</p><p>startVal = 1
endVal = 3
instructions = []
nozzleWidth = 0.4</p><p>xPos = 0
yPos = 0
zPos = 0.3
xPrev = 0
yPrev = 0</p><p># starting instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("M104 S200\n") # Set Extruder temperature
instructions.append("M140 S50\n") # Set Heat Bed temperature
instructions.append("M190 S50\n") # Wait for Heat Bed temperature
instructions.append("M109 S200\n") # Wait for Extruder temperature
instructions.append("G28\n") # auto-home before starting the print
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed
instructions.append("G1 X0.1 Y20 Z" + str(zPos) + " F5000.0\n") # Move to start position
instructions.append("G1 X0.1 Y200.0 Z0.3 F1500.0 E15\n") # Draw the first line
instructions.append("G1 X0.4 Y200.0 Z0.3 F5000.0\n") # Move to side a little
instructions.append("G1 X0.4 Y20 Z0.3 F1500.0 E30\n") # Draw the second line
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z0.3 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed</p><p># now, randomly generate g-code for layer drawing
for i in range(lines): # go through based on total amount of commands (parameter)
if (i <= 1 or i % linesPerLayer != 0):
num = r.randint(startVal, endVal)
coord = generateCoordinatePoint(10, 220)
xPrev = xPos
yPrev = yPos
xPos = coord[0]
yPos = coord[1]
e = makeGcodeSpeed(xPrev, yPrev, xPos, yPos, 1500.0)
inst = "G" + str(num) + " X" + str(xPos) + " Y" + str(yPos) + " Z" + str(zPos) + " F1500.0 E" + str(e) + "\n"
instructions.append(inst)
else: # move to the next layer
instructions.append("G4 P500\n") # Wait for half a second
zPos += nozzleWidth # increment z up one layer by adding the nozzleWidth value
#instructions.append("G1 Z" + str(zPos) + " F5000.0\n") # move to start position
#instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n")# move to start position</p><p># ending instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("G4\n") # Wait
instructions.append("M220 S100\n") # Reset Speed factor override percentage to default (100%)
instructions.append("M221 S100\n") # Reset Extrude factor override percentage to default (100%)
instructions.append("G91n") # Set coordinates to relative
instructions.append("G1 F1800 E-3\n") # Retract filament 3 mm to prevent oozing
instructions.append("G1 F3000 Z10\n") # Move Z Axis up 10 mm to allow filament ooze freely
instructions.append("G90\n") # Set coordinates to absolute
instructions.append("G1 X0 Y200 F1000\n") # Move Heat Bed to the front for easy print removal
instructions.append("M104 S0\n") # Turn off Extruder temperature
instructions.append("M140 S0\n") # Turn off Heat Bed
instructions.append("M106 S0\n") # Turn off Cooling Fan
instructions.append("M107\n") # Turn off Fan
instructions.append("M84\n") # Disable stepper motors</p><p>
f = open("/Users/stejaraiulia/Desktop/draftOne.gcode", "w")
str_instructions = ''.join(instructions)
f.write(str_instructions)
f.close()</p><p>print(str_instructions)</p>```

G-Code:

```M104 S200
M140 S50
M190 S50
M109 S200
G28
G92 E0
G1 Z5.0 F3000
G1 X0.1 Y20 Z0.3 F5000.0
G1 X0.1 Y200.0 Z0.3 F1500.0 E15
G1 X0.4 Y200.0 Z0.3 F5000.0
G1 X0.4 Y20 Z0.3 F1500.0 E30
G92 E0
G1 Z0.3 F3000
G1 X205.353775573 Y27.7556401467 Z0.3 F1500.0 E10.8262407389
G2 X43.3776479867 Y104.374181355 Z0.3 F1500.0 E9.36141493979
G1 X122.910574239 Y24.2860643796 Z0.3 F1500.0 E5.89687143521
G2 X58.5332695031 Y125.258379920 Z0.3 F1500.0 E6.25627927458
G2 X92.1578335259 Y16.2023884558 Z0.3 F1500.0 E5.96228988632
G2 X101.197223872 Y48.0038016068 Z0.3 F1500.0 E1.72727705362
G1 X58.6133398338 Y185.553318766 Z0.3 F1500.0 E7.52276766615
G3 X161.964177264 Y169.611977254 Z0.3 F1500.0 E5.46340812178
G3 X42.2866763977 Y101.379688122 Z0.3 F1500.0 E7.19735800138
G1 X139.759019415 Y159.761221266 Z0.3 F1500.0 E5.93600936069
G1 X191.990939624 Y77.9902958720 Z0.3 F1500.0 E5.06927851970
G2 X209.358823188 Y48.2286678098 Z0.3 F1500.0 E1.80028814105
G1 X82.1798292440 Y100.637082532 Z0.3 F1500.0 E7.18650143905
G1 X166.432000633 Y96.7335888135 Z0.3 F1500.0 E4.40646788937
G3 X20.5435401845 Y118.653865875 Z0.3 F1500.0 E7.70748449272
G2 X143.397351841 Y130.973805411 Z0.3 F1500.0 E6.45067734974
G2 X185.077598803 Y78.0038118075 Z0.3 F1500.0 E3.52142363630
G2 X13.8346409899 Y20.5107723849 Z0.3 F1500.0 E9.43734347122
G3 X33.7563524890 Y77.8076738633 Z0.3 F1500.0 E3.16925040060
G2 X142.771573804 Y73.4457624031 Z0.3 F1500.0 E5.70004640420
G2 X71.3886234014 Y46.3769521477 Z0.3 F1500.0 E3.98852966074
G2 X92.9106312945 Y49.5072002532 Z0.3 F1500.0 E1.13624579070
G3 X47.0595086829 Y73.3271860903 Z0.3 F1500.0 E2.69945761327
G3 X119.071174994 Y81.7134976941 Z0.3 F1500.0 E3.78766873745
G3 X59.7484688629 Y127.229992871 Z0.3 F1500.0 E3.90648444139
G3 X63.6359777115 Y11.9922031014 Z0.3 F1500.0 E6.02401139143
G1 X150.259615896 Y169.412025019 Z0.3 F1500.0 E9.38732730108
G1 X132.756239875 Y16.8895362258 Z0.3 F1500.0 E8.02082175409
G2 X20.9920899883 Y30.4566899642 Z0.3 F1500.0 E5.88197110196
G3 X119.018947934 Y163.421173591 Z0.3 F1500.0 E8.63050590340
G1 X217.264992385 Y84.8536289154 Z0.3 F1500.0 E6.57230523556
G3 X159.614109203 Y27.4946126935 Z0.3 F1500.0 E4.24879237977
G1 X184.239154377 Y213.964262368 Z0.3 F1500.0 E9.82666994341
G2 X197.153643325 Y83.4304834576 Z0.3 F1500.0 E6.85301953709
G1 X161.869994271 Y95.0535256994 Z0.3 F1500.0 E1.94083361992
G3 X57.7155718744 Y138.497384104 Z0.3 F1500.0 E5.89592701973
G3 X141.849540955 Y119.067018270 Z0.3 F1500.0 E4.51126869771
G1 X124.479143375 Y178.969323499 Z0.3 F1500.0 E3.25851427893
G1 X109.253099272 Y14.5607510590 Z0.3 F1500.0 E8.62626569349
G1 X219.477661130 Y152.782412773 Z0.3 F1500.0 E9.23637221568
G2 X98.9215089200 Y105.935213573 Z0.3 F1500.0 E6.75727639665
G2 X55.1571777918 Y203.433590183 Z0.3 F1500.0 E5.58342525375
G3 X51.3423669577 Y38.2739356046 Z0.3 F1500.0 E8.63105073180
G3 X147.541622682 Y167.730271293 Z0.3 F1500.0 E8.42638127850
G2 X44.0654029955 Y173.252472099 Z0.3 F1500.0 E5.41379741656
G1 X156.458301035 Y186.637802444 Z0.3 F1500.0 E5.91345102661
G3 X123.018702334 Y65.0554657570 Z0.3 F1500.0 E6.58792861579
G2 X149.670141188 Y90.0207675991 Z0.3 F1500.0 E1.90788001708
G1 X187.597783896 Y139.533982017 Z0.3 F1500.0 E3.25853421502
G3 X32.0898262667 Y144.074888154 Z0.3 F1500.0 E8.12796038840
G4 P500
G2 X82.2768962199 Y81.6664277680 Z0.7 F1500.0 E4.18401656995
G2 X163.767689844 Y187.370944553 Z0.7 F1500.0 E6.97311741293
G1 X40.9719173024 Y209.483231120 Z0.7 F1500.0 E6.51863822484
G3 X41.2288484628 Y218.865558769 Z0.7 F1500.0 E0.490362512518
G2 X16.1994453100 Y141.591653039 Z0.7 F1500.0 E4.24366480981
G3 X47.4345280172 Y171.674427112 Z0.7 F1500.0 E2.26564846903
G2 X157.992349037 Y113.575726748 Z0.7 F1500.0 E6.52507000568
G2 X40.0057431849 Y182.052166190 Z0.7 F1500.0 E7.12714280381
G1 X209.010709010 Y70.4881334922 Z0.7 F1500.0 E10.5799739097
G2 X94.9302250258 Y21.5256045673 Z0.7 F1500.0 E6.48588079166
G2 X216.235097988 Y206.499785399 Z0.7 F1500.0 E11.5566753249
G1 X33.5226807236 Y55.1749432428 Z0.7 F1500.0 E12.3946035601
G1 X105.679896554 Y67.1580299117 Z0.7 F1500.0 E3.82147703811
G3 X207.912408611 Y99.5733860415 Z0.7 F1500.0 E5.60318720237
G3 X158.096308302 Y111.894480748 Z0.7 F1500.0 E2.68106096580
G1 X43.4502161794 Y57.6170011772 Z0.7 F1500.0 E6.62702821828
G3 X176.017201995 Y95.8598909686 Z0.7 F1500.0 E7.20838069004
G3 X174.346797892 Y88.0188995296 Z0.7 F1500.0 E0.4188444392
G2 X69.4819666117 Y210.847652587 Z0.7 F1500.0 E8.43775893266
G3 X145.634298609 Y77.2031208492 Z0.7 F1500.0 E8.03621614303
G1 X59.0288037376 Y94.5553074368 Z0.7 F1500.0 E4.61462066727
G3 X49.3605381875 Y118.872342470 Z0.7 F1500.0 E1.36717376598
G1 X143.711480100 Y150.855878572 Z0.7 F1500.0 E5.20487336309
G3 X39.9265183670 Y69.8293310778 Z0.7 F1500.0 E6.87901246326
G3 X138.426430798 Y87.9688244470 Z0.7 F1500.0 E5.23265294506
G1 X140.034774916 Y162.808870735 Z0.7 F1500.0 E3.91091337347
G3 X143.104523427 Y15.5796935439 Z0.7 F1500.0 E7.69364511619
G2 X118.987498297 Y137.917617900 Z0.7 F1500.0 E6.51454255628
G2 X13.0303255913 Y25.9944651217 Z0.7 F1500.0 E8.05210912801
G3 X155.208005128 Y56.0630605355 Z0.7 F1500.0 E7.59235630442
G1 X10.1588104768 Y39.4610589721 Z0.7 F1500.0 E7.62755745003
G3 X177.774022500 Y72.4798215716 Z0.7 F1500.0 E8.92533371397
G1 X168.650415381 Y127.242927045 Z0.7 F1500.0 E2.90052735330
G3 X122.066193110 Y176.800509715 Z0.7 F1500.0 E3.55343809416
G2 X13.0313508541 Y26.3667262937 Z0.7 F1500.0 E9.70671961922
G2 X37.9079530826 Y64.3900819871 Z0.7 F1500.0 E2.37390888935
G1 X101.132904477 Y36.0098495788 Z0.7 F1500.0 E3.62070036877
G3 X28.1329756846 Y21.7679004623 Z0.7 F1500.0 E3.88577824112
G3 X193.282816402 Y49.1997646002 Z0.7 F1500.0 E8.74645395758
G1 X129.558684816 Y153.707415048 Z0.7 F1500.0 E6.39495775620
G3 X168.771302215 Y126.262965091 Z0.7 F1500.0 E2.50057595338
G2 X61.2269773839 Y191.562687940 Z0.7 F1500.0 E6.57327932608
G1 X151.542470787 Y60.4367455957 Z0.7 F1500.0 E8.31841504956
G1 X74.5314279816 Y15.9686724294 Z0.7 F1500.0 E4.64601109751
G3 X193.226068270 Y107.397765795 Z0.7 F1500.0 E7.82762080052
G3 X60.5082476157 Y95.3139578432 Z0.7 F1500.0 E6.96251004422
G1 X90.2970800437 Y128.845052586 Z0.7 F1500.0 E2.34329220993
G2 X113.446884592 Y84.3746111870 Z0.7 F1500.0 E2.61930597481
G3 X23.7926242642 Y78.9751290978 Z0.7 F1500.0 E4.69246467638
G4
M220 S100
M221 S100
G91nG1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y200 F1000
M104 S0
M140 S0
M106 S0
M107
M84
```

## Step 4: Some More Trial and Error...

I'm guessing that my biggest issue right now is the extrusion amount, which is being incorrectly calculated in my current code. Here is a fix that I did, including a layer height of 0.2.

Python Code:

```<p>__author__ = "stejaraiulia"</p><p>import rhinoscriptsyntax as rs
import random as r
import math as m</p><p># create a random print generator
# G12: clean the nozzle -> do this before and after?
# G2/3: arc clockwise/counterclockwise</p><p>def generateCoordinatePoint(s, e) :
#x_val = "X"+str(r.uniform(s, e))
#y_val = "Y"+str(r.uniform(s, e))
return (r.uniform(s, e), r.uniform(s, e))
#return (str(x_val) + " " + str(y_val))

def makeGcodeSpeed(frX, frY, toX, toY, speed):
l = m.sqrt((toX - frX)**2 + (toY - frY)**2) #calculate the distance
numerator = (nozzleWidth/2 * l * layerHeight)
denominator = (1.75 / 2) * (1.75 / 2) * m.pi
e = numerator / denominator
return e</p><p>startVal = 1
endVal = 3
instructions = []
nozzleWidth = 0.4
layerHeight = 0.2</p><p>xPos = 0
yPos = 0
zPos = 0.3
xPrev = 0
yPrev = 0</p><p># starting instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("M104 S200\n") # Set Extruder temperature
instructions.append("M140 S50\n") # Set Heat Bed temperature
instructions.append("M190 S50\n") # Wait for Heat Bed temperature
instructions.append("M109 S200\n") # Wait for Extruder temperature
instructions.append("G28\n") # auto-home before starting the print
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed
instructions.append("G1 X0.1 Y20 Z" + str(zPos) + " F5000.0\n") # Move to start position
instructions.append("G1 X0.1 Y200.0 Z0.3 F1500.0 E15\n") # Draw the first line
instructions.append("G1 X0.4 Y200.0 Z0.3 F5000.0\n") # Move to side a little
instructions.append("G1 X0.4 Y20 Z0.3 F1500.0 E30\n") # Draw the second line
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z0.3 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed</p><p># now, randomly generate g-code for layer drawing
for i in range(lines): # go through based on total amount of commands (parameter)
if (i <= 1 or i % linesPerLayer != 0):
num = r.randint(startVal, endVal)
coord = generateCoordinatePoint(10, 220)
xPrev = xPos
yPrev = yPos
xPos = coord[0]
yPos = coord[1]
e = makeGcodeSpeed(xPrev, yPrev, xPos, yPos, 1500.0)
inst = "G" + str(num) + " X" + str(xPos) + " Y" + str(yPos) + " Z" + str(zPos) + " F1500.0 E" + str(e) + "\n"
instructions.append(inst)
else: # move to the next layer
instructions.append("G4 P500\n") # Wait for half a second
zPos += layerHeight # increment z up one layer by adding the layerHeight value
#instructions.append("G1 Z" + str(zPos) + " F5000.0\n") # move to start position
#instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n")# move to start position</p><p># ending instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("G4\n") # Wait
instructions.append("M220 S100\n") # Reset Speed factor override percentage to default (100%)
instructions.append("M221 S100\n") # Reset Extrude factor override percentage to default (100%)
instructions.append("G91n") # Set coordinates to relative
instructions.append("G1 F1800 E-3\n") # Retract filament 3 mm to prevent oozing
instructions.append("G1 F3000 Z10\n") # Move Z Axis up 10 mm to allow filament ooze freely
instructions.append("G90\n") # Set coordinates to absolute
instructions.append("G1 X0 Y200 F1000\n") # Move Heat Bed to the front for easy print removal
instructions.append("M104 S0\n") # Turn off Extruder temperature
instructions.append("M140 S0\n") # Turn off Heat Bed
instructions.append("M106 S0\n") # Turn off Cooling Fan
instructions.append("M107\n") # Turn off Fan
instructions.append("M84\n") # Disable stepper motors</p><p>
f = open("/Users/stejaraiulia/Desktop/draftOne.gcode", "w")
str_instructions = ''.join(instructions)
f.write(str_instructions)
f.close()</p><p>print(str_instructions)</p>```

G-code:

```<p>M104 S200<br>M140 S50
M190 S50
M109 S200
G28
G92 E0
G1 Z5.0 F3000
G1 X0.1 Y20 Z0.3 F5000.0
G1 X0.1 Y200.0 Z0.3 F1500.0 E15
G1 X0.4 Y200.0 Z0.3 F5000.0
G1 X0.4 Y20 Z0.3 F1500.0 E30
G92 E0
G1 Z0.3 F3000
G2 X51.9521815682 Y192.948859677 Z0.3 F1500.0 E3.32303087929
G1 X153.786568644 Y180.957576467 Z0.3 F1500.0 E1.70521320036
G2 X69.3139244545 Y189.558288774 Z0.3 F1500.0 E1.4120484345
G3 X181.448290578 Y54.2988955776 Z0.3 F1500.0 E2.92184273720
G2 X72.8700230540 Y67.7149756818 Z0.3 F1500.0 E1.81939561605
G1 X105.769643331 Y208.586564086 Z0.3 F1500.0 E2.40574429944
G3 X207.957714165 Y148.153895414 Z0.3 F1500.0 E1.97432657956
G2 X50.7560506146 Y198.435549708 Z0.3 F1500.0 E2.74474756940
G3 X96.7997520853 Y44.2365449345 Z0.3 F1500.0 E2.67621944563
G3 X194.554175882 Y93.9507255157 Z0.3 F1500.0 E1.82381330499
G3 X50.8447300540 Y80.1821520861 Z0.3 F1500.0 E2.40084146771
G3 X176.176521465 Y55.8379501841 Z0.3 F1500.0 E2.12323035587
G3 X124.372507194 Y192.818072079 Z0.3 F1500.0 E2.43545108590
G2 X78.3610876331 Y118.365048597 Z0.3 F1500.0 E1.45551605105
G1 X217.176153654 Y166.957820897 Z0.3 F1500.0 E2.44585725599
G2 X186.710583072 Y194.290708669 Z0.3 F1500.0 E0.680663147044
G2 X79.6955862304 Y85.8842996074 Z0.3 F1500.0 E2.53324345715
G2 X208.278049683 Y159.774484767 Z0.3 F1500.0 E2.46625692038
G3 X180.878285895 Y41.5553303082 Z0.3 F1500.0 E2.01810618098
G1 X88.3142598215 Y101.424410712 Z0.3 F1500.0 E1.83326455899
G3 X205.937278151 Y165.604834304 Z0.3 F1500.0 E2.22832363166
G1 X104.699696719 Y186.676481514 Z0.3 F1500.0 E1.71966977966
G2 X203.510682410 Y90.1215449964 Z0.3 F1500.0 E2.29750667375
G3 X207.915429377 Y122.327863061 Z0.3 F1500.0 E0.540579196046
G3 X179.630816425 Y190.084331553 Z0.3 F1500.0 E1.22103187390
G3 X36.9894515592 Y78.6892502386 Z0.3 F1500.0 E3.00978601180
G1 X79.2943989439 Y205.157450891 Z0.3 F1500.0 E2.21772499689
G1 X121.401779123 Y215.377371743 Z0.3 F1500.0 E0.720578781609
G1 X20.3724190372 Y15.2988914634 Z0.3 F1500.0 E3.72744813465
G1 X111.709476083 Y110.349454178 Z0.3 F1500.0 E2.19221051321
G3 X16.2502059479 Y87.1237821469 Z0.3 F1500.0 E1.63380609386
G3 X91.6802125758 Y23.2310255978 Z0.3 F1500.0 E1.64393666009
G1 X31.4095774500 Y21.4182710378 Z0.3 F1500.0 E1.00275798208
G1 X142.838360088 Y100.273258718 Z0.3 F1500.0 E2.27014021889
G2 X21.3837317724 Y126.184607672 Z0.3 F1500.0 E2.06525250889
G3 X186.181432893 Y106.121627133 Z0.3 F1500.0 E2.76083190769
G2 X214.242360082 Y94.7130343817 Z0.3 F1500.0 E0.503748771082
G2 X197.945035901 Y52.1585499856 Z0.3 F1500.0 E0.757806999354
G3 X59.0359647372 Y93.0611088158 Z0.3 F1500.0 E2.40813193468
G2 X154.058404596 Y82.8854705561 Z0.3 F1500.0 E1.58926445059
G2 X46.3816512900 Y128.613680764 Z0.3 F1500.0 E1.94545865368
G2 X178.936651409 Y200.255654408 Z0.3 F1500.0 E2.50575997136
G3 X183.953563450 Y98.4557558048 Z0.3 F1500.0 E1.69499378244
G3 X168.183581485 Y21.3458845041 Z0.3 F1500.0 E1.30888505355
G1 X66.7821676626 Y113.777457229 Z0.3 F1500.0 E2.28176661446
G1 X29.0010292358 Y219.973024539 Z0.3 F1500.0 E1.87447589199
G2 X215.916902720 Y155.604578203 Z0.3 F1500.0 E3.28757720921
G3 X67.3659581866 Y42.7149030124 Z0.3 F1500.0 E3.10280972090
G3 X137.635443332 Y127.588453209 Z0.3 F1500.0 E1.83242819954
G3 X163.337187193 Y70.3840669504 Z0.3 F1500.0 E1.04292156720
G4 P500
G3 X88.6680360079 Y134.742995288 Z0.5 F1500.0 E1.63935303615
G3 X190.484915166 Y132.981068830 Z0.5 F1500.0 E1.69347508083
G1 X196.748952543 Y179.754735377 Z0.5 F1500.0 E0.784793668701
G3 X90.6677801553 Y189.674177709 Z0.5 F1500.0 E1.77183286335
G1 X189.519386530 Y158.993911030 Z0.5 F1500.0 E1.72126572191
G3 X161.669855629 Y159.616108766 Z0.5 F1500.0 E0.46325515035
G2 X188.127713266 Y52.6038367508 Z0.5 F1500.0 E1.83320714837
G1 X61.3875931632 Y131.131765613 Z0.5 F1500.0 E2.47948081040
G2 X178.298774184 Y30.2078134927 Z0.5 F1500.0 E2.56846363767
G3 X199.890949283 Y110.891670346 Z0.5 F1500.0 E1.38899464824
G1 X150.853574967 Y144.637552884 Z0.5 F1500.0 E0.989935925647
G1 X114.180422495 Y91.0739556253 Z0.5 F1500.0 E1.07954363057
G1 X109.428668662 Y100.188518392 Z0.5 F1500.0 E0.170937695804
G2 X18.6269549592 Y135.097995062 Z0.5 F1500.0 E1.61779214685
G3 X96.4796082236 Y196.251919954 Z0.5 F1500.0 E1.64636309091
G3 X167.367780174 Y92.0518220596 Z0.5 F1500.0 E2.09583676723
G1 X24.1558246912 Y95.0222386160 Z0.5 F1500.0 E2.38213672892
G3 X198.326235998 Y40.0082025949 Z0.5 F1500.0 E3.03752070313
G2 X181.463947987 Y181.114092946 Z0.5 F1500.0 E2.36329637671
G1 X144.876015550 Y146.228423771 Z0.5 F1500.0 E0.840713110725
G2 X130.787402212 Y188.797951974 Z0.5 F1500.0 E0.745697449125
G3 X134.388783240 Y202.209526678 Z0.5 F1500.0 E0.23093666554
G3 X44.7810484156 Y24.4145669714 Z0.5 F1500.0 E3.31103741621
G3 X111.188418663 Y41.4184916629 Z0.5 F1500.0 E1.13998746281
G1 X14.7414231759 Y174.998375522 Z0.5 F1500.0 E2.73995734403
G2 X114.435987014 Y14.9466153220 Z0.5 F1500.0 E3.13579632982
G2 X214.371320401 Y45.9905928512 Z0.5 F1500.0 E1.74027116512
G2 X130.519099460 Y210.318453370 Z0.5 F1500.0 E3.06800366232
G3 X45.5510869875 Y46.7167085543 Z0.5 F1500.0 E3.06576068559
G2 X92.9118556536 Y148.478676756 Z0.5 F1500.0 E1.86661233834
G1 X65.7354545155 Y110.223510492 Z0.5 F1500.0 E0.780376355387
G2 X12.0623191611 Y101.981467375 Z0.5 F1500.0 E0.903050448354
G1 X186.265862101 Y182.617345172 Z0.5 F1500.0 E3.19232411631
G2 X149.471407513 Y186.389923186 Z0.5 F1500.0 E0.615102166954
G3 X139.897463959 Y140.621039384 Z0.5 F1500.0 E0.777613692025
G2 X184.103706171 Y38.6376453087 Z0.5 F1500.0 E1.84846806415
G3 X26.9732285771 Y124.524766322 Z0.5 F1500.0 E2.97797032073
G2 X78.4923601117 Y30.5442146757 Z0.5 F1500.0 E1.78233403304
G2 X203.408214415 Y170.260753122 Z0.5 F1500.0 E3.11673739479
G1 X155.032850745 Y23.9673254379 Z0.5 F1500.0 E2.56243076379
G3 X115.261087760 Y198.851847183 Z0.5 F1500.0 E2.98260106070
G2 X112.744859565 Y177.305957851 Z0.5 F1500.0 E0.360744748042
G1 X66.6220258694 Y137.246370659 Z0.5 F1500.0 E1.01594419294
G3 X137.033684642 Y218.936472591 Z0.5 F1500.0 E1.79351052783
G3 X103.902140732 Y219.222656398 Z0.5 F1500.0 E0.551000366748
G2 X145.580978585 Y108.691319516 Z0.5 F1500.0 E1.96448207678
G2 X168.224011759 Y189.680323127 Z0.5 F1500.0 E1.39850124027
G1 X19.6905673979 Y116.792847761 Z0.5 F1500.0 E2.75149822808
G3 X63.0609094988 Y109.027236851 Z0.5 F1500.0 E0.732722225714
G4
M220 S100
M221 S100
G91nG1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y200 F1000
M104 S0
M140 S0
M106 S0
M107
M84</p>```

This worked much better than my previous attempts. However, there is still not enough filament being extruded (the numbers are way too low, from what I see in my G-Code compared with other generated G-Code from previous projects sliced with Cura). I'm noticing that an extrusion of 30 is used for the lines being drawn on the side of my printer before the print starts (lines 8-11 in my G-Code script). These two lines are successful, so I tried hardcoding the E value (30) just to see if this changes my issue. While this did not change the majority of the lines drawn, the first 3 were actually successfully extruded. I'm wondering what I am missing here.

Some more things to try:

- Restricting the drawing space. Right now, I'm using the entire bed area as viable X Y coordinates for the marks. This might introduce too much spread in the drawing, which can cause issues in terms of adhesion.

- Limit the drawing to lines only (G1). Then introduce curves.

- Keep debugging extrusion calculation.

- Introduce retraction, according to Sam's suggestion via slack. I'm wondering if this will solve my problem, but it looks right now that the issue is in extrusion volume.

After making adjustments to the drawing space and limiting the drawing to lines only (G1), I am still finding the same results. Going to look into the extrusion calculation and retraction more.

## Step 5: Incorporate a Base "canvas"

After a lot of trial and error, I asked Sam about her way of approaching the retraction and extraction using G-Code. She mentioned that the problem looks like an adhesion issue and presented the idea of a base layer, similar to a "canvas." I really like this idea, so I incorporated it into my script to see if it fixes the issue.

Only problem: still having adhesion issues even when I'm trying to build the square.

Python Script:

```<p>__author__ = "stejaraiulia"</p><p>import rhinoscriptsyntax as rs
import random as r
import math as m</p><p># create a random print generator
# G12: clean the nozzle -> do this before and after?
# G2/3: arc clockwise/counterclockwise</p><p>def generateCoordinatePoint(s, e) :
#x_val = "X"+str(r.uniform(s, e))
#y_val = "Y"+str(r.uniform(s, e))
return (r.uniform(s, e), r.uniform(s, e))
#return (str(x_val) + " " + str(y_val))

def makeGcodeSpeed(frX, frY, toX, toY, speed):
l = m.sqrt((toX - frX)**2 + (toY - frY)**2) #calculate the distance
numerator = (nozzleWidth/2 * l * layerHeight)
denominator = (1.75 / 2) * (1.75 / 2) * m.pi
e = numerator / denominator
return e</p><p>startVal = 1
endVal = 3
instructions = []
nozzleWidth = 0.4
layerHeight = 0.2</p><p>xPos = 0
yPos = 0
zPos = 0.3
xPrev = 0
yPrev = 0</p><p># size of the drawing space -> 50-100 in the x and y planes
dimStart = 50
dimEnd = 100</p><p># starting instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("M104 S200\n") # Set Extruder temperature
instructions.append("M140 S50\n") # Set Heat Bed temperature
instructions.append("M190 S50\n") # Wait for Heat Bed temperature
instructions.append("M109 S200\n") # Wait for Extruder temperature
instructions.append("G28\n") # auto-home before starting the print
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed
instructions.append("G1 X0.1 Y20 Z" + str(zPos) + " F5000.0\n") # Move to start position
instructions.append("G1 X0.1 Y200.0 Z0.3 F1500.0 E15\n") # Draw the first line
instructions.append("G1 X0.4 Y200.0 Z0.3 F5000.0\n") # Move to side a little
instructions.append("G1 X0.4 Y20 Z0.3 F1500.0 E30\n") # Draw the second line
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed</p><p># build a "canvas" using the drawing dimensions
# bounding box
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimStart) + " F3000\n") # move the extruder to starting position (50, 50)
instructions.append("G1 Z0.3\n") #lower the extruder to start printing
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimEnd) + " Z0.3 F1500.0 E30\n") #draw first side of square
instructions.append("G1 X" + str(dimEnd) + " Y" + str(dimEnd) + " Z0.3 F1500.0 E30\n") # draw connecting side
instructions.append("G1 X" + str(dimEnd) + " Y" + str(dimStart) + " Z0.3 F1500.0 E30\n") # draw connecting side
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimStart) + " Z0.3 F1500.0 E30\n") # finish the square
instructions.append("G1 Z5.0 F3000\n") # move z axis up to travel to new starting position based on where the drawing dimensions are</p><p># now, fill the square
stepSize = 0.3
length = dimEnd - dimStart
reps = int(length/stepSize)
workingX = dimStart + stepSize</p><p>instructions.append("G1 X" + str(workingX) + " Y" + str(dimStart) + " Z0.3 F5000.0\n") # move to starting position, don't extrude
for i in range(reps):
instructions.append("G1 X" + str(workingX) + " Y" + str(dimEnd) + " Z0.3 F1500.0 E30\n")
workingX += stepSize
instructions.append("G1 X" + str(workingX) + " Y" + str(dimStart) + " Z0.3 F1500.0 E30\n")
workingX += stepSize</p><p>instructions.append("G1 Z5.0 F3000\n") # move the extruder head up
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimStart) + " Z0.3 F5000.0\n") #travel to the starting position again
instructions.append("G1 Z0.3 F3000\n") # move the extruder head down to start the drawing
# now, randomly generate g-code for layer drawing
for i in range(lines): # go through based on total amount of commands (parameter)
if (i <= 1 or i % linesPerLayer != 0):
#num = r.randint(startVal, endVal)
num = 1
coord = generateCoordinatePoint(dimStart, dimEnd) #restrict the drawing space
xPrev = xPos
yPrev = yPos
xPos = coord[0]
yPos = coord[1]
e = makeGcodeSpeed(xPrev, yPrev, xPos, yPos, 1500.0)
#e = 30
inst = "G" + str(num) + " X" + str(xPos) + " Y" + str(yPos) + " Z" + str(zPos) + " F1500.0 E" + str(e) + "\n"
instructions.append(inst)
else: # move to the next layer
instructions.append("G4 P2000\n") # Wait for 2 seconds
zPos += layerHeight # increment z up one layer by adding the layerHeight value
#instructions.append("G1 Z" + str(zPos) + " F5000.0\n") # move to start position
#instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n")# move to start position</p><p># ending instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("G4\n") # Wait
instructions.append("M220 S100\n") # Reset Speed factor override percentage to default (100%)
instructions.append("M221 S100\n") # Reset Extrude factor override percentage to default (100%)
instructions.append("G91n") # Set coordinates to relative
instructions.append("G1 F1800 E-3\n") # Retract filament 3 mm to prevent oozing
instructions.append("G1 F3000 Z10\n") # Move Z Axis up 10 mm to allow filament ooze freely
instructions.append("G90\n") # Set coordinates to absolute
instructions.append("G1 X0 Y200 F1000\n") # Move Heat Bed to the front for easy print removal
instructions.append("M104 S0\n") # Turn off Extruder temperature
instructions.append("M140 S0\n") # Turn off Heat Bed
instructions.append("M106 S0\n") # Turn off Cooling Fan
instructions.append("M107\n") # Turn off Fan
instructions.append("M84\n") # Disable stepper motors</p><p>
f = open("/Users/stejaraiulia/Desktop/marks.gcode", "w")
str_instructions = ''.join(instructions)
f.write(str_instructions)
f.close()</p><p>print(str_instructions)</p>```

G-Code:

```<p>M104 S200<br>M140 S50
M190 S50
M109 S200
G28
G92 E0
G1 Z5.0 F3000
G1 X0.1 Y20 Z0.3 F5000.0
G1 X0.1 Y200.0 Z0.3 F1500.0 E15
G1 X0.4 Y200.0 Z0.3 F5000.0
G1 X0.4 Y20 Z0.3 F1500.0 E30
G92 E0
G1 Z5.0 F3000
G1 X50 Y50 F3000
G1 Z0.3
G1 X50 Y100 Z0.3 F1500.0 E30
G1 X100 Y100 Z0.3 F1500.0 E30</p><p>G1 X100 Y50 Z0.3 F1500.0 E30
G1 X50 Y50 Z0.3 F1500.0 E30</p><p>G1 Z5.0 F3000
G1 X50.3 Y50 Z0.3 F5000.0
G1 X50.3 Y100 Z0.3 F1500.0 E30
G1 X50.6 Y50 Z0.3 F1500.0 E30
G1 X50.9 Y100 Z0.3 F1500.0 E30
G1 X51.2 Y50 Z0.3 F1500.0 E30
G1 X51.5 Y100 Z0.3 F1500.0 E30
G1 X51.8 Y50 Z0.3 F1500.0 E30
G1 X52.1 Y100 Z0.3 F1500.0 E30
G1 X52.4 Y50 Z0.3 F1500.0 E30
G1 X52.7 Y100 Z0.3 F1500.0 E30
G1 X53.0 Y50 Z0.3 F1500.0 E30
G1 X53.3 Y100 Z0.3 F1500.0 E30
G1 X53.6 Y50 Z0.3 F1500.0 E30
G1 X53.9 Y100 Z0.3 F1500.0 E30
G1 X54.2 Y50 Z0.3 F1500.0 E30
G1 X54.5 Y100 Z0.3 F1500.0 E30
G1 X54.8 Y50 Z0.3 F1500.0 E30
G1 X55.1 Y100 Z0.3 F1500.0 E30
G1 X55.4 Y50 Z0.3 F1500.0 E30
G1 X55.7 Y100 Z0.3 F1500.0 E30
G1 X56.0 Y50 Z0.3 F1500.0 E30
G1 X56.3 Y100 Z0.3 F1500.0 E30
G1 X56.6 Y50 Z0.3 F1500.0 E30
G1 X56.9 Y100 Z0.3 F1500.0 E30
G1 X57.2 Y50 Z0.3 F1500.0 E30
G1 X57.5 Y100 Z0.3 F1500.0 E30
G1 X57.8 Y50 Z0.3 F1500.0 E30
G1 X58.1 Y100 Z0.3 F1500.0 E30
G1 X58.4 Y50 Z0.3 F1500.0 E30
G1 X58.7 Y100 Z0.3 F1500.0 E30
G1 X59.0 Y50 Z0.3 F1500.0 E30
G1 X59.3 Y100 Z0.3 F1500.0 E30
G1 X59.6 Y50 Z0.3 F1500.0 E30
G1 X59.9 Y100 Z0.3 F1500.0 E30
G1 X60.2 Y50 Z0.3 F1500.0 E30
G1 X60.5 Y100 Z0.3 F1500.0 E30
G1 X60.8 Y50 Z0.3 F1500.0 E30
G1 X61.1 Y100 Z0.3 F1500.0 E30
G1 X61.4 Y50 Z0.3 F1500.0 E30
G1 X61.7 Y100 Z0.3 F1500.0 E30
G1 X62.0 Y50 Z0.3 F1500.0 E30
G1 X62.3 Y100 Z0.3 F1500.0 E30
G1 X62.6 Y50 Z0.3 F1500.0 E30
G1 X62.9 Y100 Z0.3 F1500.0 E30
G1 X63.2 Y50 Z0.3 F1500.0 E30
G1 X63.5 Y100 Z0.3 F1500.0 E30
G1 X63.8 Y50 Z0.3 F1500.0 E30
G1 X64.1 Y100 Z0.3 F1500.0 E30
G1 X64.4 Y50 Z0.3 F1500.0 E30
G1 X64.7 Y100 Z0.3 F1500.0 E30
G1 X65.0 Y50 Z0.3 F1500.0 E30
G1 X65.3 Y100 Z0.3 F1500.0 E30
G1 X65.6 Y50 Z0.3 F1500.0 E30
G1 X65.9 Y100 Z0.3 F1500.0 E30
G1 X66.2 Y50 Z0.3 F1500.0 E30
G1 X66.5 Y100 Z0.3 F1500.0 E30
G1 X66.8 Y50 Z0.3 F1500.0 E30
G1 X67.1 Y100 Z0.3 F1500.0 E30
G1 X67.4 Y50 Z0.3 F1500.0 E30
G1 X67.7 Y100 Z0.3 F1500.0 E30
G1 X68.0 Y50 Z0.3 F1500.0 E30
G1 X68.3 Y100 Z0.3 F1500.0 E30
G1 X68.6 Y50 Z0.3 F1500.0 E30
G1 X68.9 Y100 Z0.3 F1500.0 E30
G1 X69.2 Y50 Z0.3 F1500.0 E30
G1 X69.5 Y100 Z0.3 F1500.0 E30
G1 X69.8 Y50 Z0.3 F1500.0 E30
G1 X70.1 Y100 Z0.3 F1500.0 E30
G1 X70.4 Y50 Z0.3 F1500.0 E30
G1 X70.7 Y100 Z0.3 F1500.0 E30
G1 X71.0 Y50 Z0.3 F1500.0 E30
G1 X71.3 Y100 Z0.3 F1500.0 E30
G1 X71.6 Y50 Z0.3 F1500.0 E30
G1 X71.9 Y100 Z0.3 F1500.0 E30
G1 X72.2 Y50 Z0.3 F1500.0 E30
G1 X72.5 Y100 Z0.3 F1500.0 E30
G1 X72.8 Y50 Z0.3 F1500.0 E30
G1 X73.1 Y100 Z0.3 F1500.0 E30
G1 X73.4 Y50 Z0.3 F1500.0 E30
G1 X73.7 Y100 Z0.3 F1500.0 E30
G1 X74.0 Y50 Z0.3 F1500.0 E30
G1 X74.3 Y100 Z0.3 F1500.0 E30
G1 X74.6 Y50 Z0.3 F1500.0 E30
G1 X74.9 Y100 Z0.3 F1500.0 E30
G1 X75.2 Y50 Z0.3 F1500.0 E30
G1 X75.5 Y100 Z0.3 F1500.0 E30
G1 X75.8 Y50 Z0.3 F1500.0 E30
G1 X76.1 Y100 Z0.3 F1500.0 E30
G1 X76.4 Y50 Z0.3 F1500.0 E30
G1 X76.7 Y100 Z0.3 F1500.0 E30
G1 X77.0 Y50 Z0.3 F1500.0 E30
G1 X77.3 Y100 Z0.3 F1500.0 E30
G1 X77.6 Y50 Z0.3 F1500.0 E30
G1 X77.9 Y100 Z0.3 F1500.0 E30
G1 X78.2 Y50 Z0.3 F1500.0 E30
G1 X78.5 Y100 Z0.3 F1500.0 E30
G1 X78.8 Y50 Z0.3 F1500.0 E30
G1 X79.1 Y100 Z0.3 F1500.0 E30
G1 X79.4 Y50 Z0.3 F1500.0 E30
G1 X79.7 Y100 Z0.3 F1500.0 E30
G1 X80.0 Y50 Z0.3 F1500.0 E30
G1 X80.3 Y100 Z0.3 F1500.0 E30
G1 X80.6 Y50 Z0.3 F1500.0 E30
G1 X80.9 Y100 Z0.3 F1500.0 E30
G1 X81.2 Y50 Z0.3 F1500.0 E30
G1 X81.5 Y100 Z0.3 F1500.0 E30
G1 X81.8 Y50 Z0.3 F1500.0 E30
G1 X82.1 Y100 Z0.3 F1500.0 E30
G1 X82.4 Y50 Z0.3 F1500.0 E30
G1 X82.7 Y100 Z0.3 F1500.0 E30
G1 X83.0 Y50 Z0.3 F1500.0 E30
G1 X83.3 Y100 Z0.3 F1500.0 E30
G1 X83.6 Y50 Z0.3 F1500.0 E30
G1 X83.9 Y100 Z0.3 F1500.0 E30
G1 X84.2 Y50 Z0.3 F1500.0 E30
G1 X84.5 Y100 Z0.3 F1500.0 E30
G1 X84.8 Y50 Z0.3 F1500.0 E30
G1 X85.1 Y100 Z0.3 F1500.0 E30
G1 X85.4 Y50 Z0.3 F1500.0 E30
G1 X85.7 Y100 Z0.3 F1500.0 E30
G1 X86.0 Y50 Z0.3 F1500.0 E30
G1 X86.3 Y100 Z0.3 F1500.0 E30
G1 X86.6 Y50 Z0.3 F1500.0 E30
G1 X86.9 Y100 Z0.3 F1500.0 E30
G1 X87.2 Y50 Z0.3 F1500.0 E30
G1 X87.5 Y100 Z0.3 F1500.0 E30
G1 X87.8 Y50 Z0.3 F1500.0 E30
G1 X88.1 Y100 Z0.3 F1500.0 E30
G1 X88.4 Y50 Z0.3 F1500.0 E30
G1 X88.7 Y100 Z0.3 F1500.0 E30
G1 X89.0 Y50 Z0.3 F1500.0 E30
G1 X89.3 Y100 Z0.3 F1500.0 E30
G1 X89.6 Y50 Z0.3 F1500.0 E30
G1 X89.9 Y100 Z0.3 F1500.0 E30
G1 X90.2 Y50 Z0.3 F1500.0 E30
G1 X90.5 Y100 Z0.3 F1500.0 E30
G1 X90.8 Y50 Z0.3 F1500.0 E30
G1 X91.1 Y100 Z0.3 F1500.0 E30
G1 X91.4 Y50 Z0.3 F1500.0 E30
G1 X91.7 Y100 Z0.3 F1500.0 E30
G1 X92.0 Y50 Z0.3 F1500.0 E30
G1 X92.3 Y100 Z0.3 F1500.0 E30
G1 X92.6 Y50 Z0.3 F1500.0 E30
G1 X92.9 Y100 Z0.3 F1500.0 E30
G1 X93.2 Y50 Z0.3 F1500.0 E30
G1 X93.5 Y100 Z0.3 F1500.0 E30
G1 X93.8 Y50 Z0.3 F1500.0 E30
G1 X94.1 Y100 Z0.3 F1500.0 E30
G1 X94.4 Y50 Z0.3 F1500.0 E30
G1 X94.7 Y100 Z0.3 F1500.0 E30
G1 X95.0 Y50 Z0.3 F1500.0 E30
G1 X95.3 Y100 Z0.3 F1500.0 E30
G1 X95.6 Y50 Z0.3 F1500.0 E30
G1 X95.9 Y100 Z0.3 F1500.0 E30
G1 X96.2 Y50 Z0.3 F1500.0 E30
G1 X96.5 Y100 Z0.3 F1500.0 E30
G1 X96.8 Y50 Z0.3 F1500.0 E30
G1 X97.1 Y100 Z0.3 F1500.0 E30
G1 X97.4 Y50 Z0.3 F1500.0 E30
G1 X97.7 Y100 Z0.3 F1500.0 E30
G1 X98.0 Y50 Z0.3 F1500.0 E30
G1 X98.3 Y100 Z0.3 F1500.0 E30
G1 X98.6 Y50 Z0.3 F1500.0 E30
G1 X98.9 Y100 Z0.3 F1500.0 E30
G1 X99.2 Y50 Z0.3 F1500.0 E30
G1 X99.5 Y100 Z0.3 F1500.0 E30
G1 X99.8 Y50 Z0.3 F1500.0 E30
G1 X100.1 Y100 Z0.3 F1500.0 E30
G1 X100.4 Y50 Z0.3 F1500.0 E30
G1 X100.7 Y100 Z0.3 F1500.0 E30
G1 X101.0 Y50 Z0.3 F1500.0 E30
G1 X101.3 Y100 Z0.3 F1500.0 E30
G1 X101.6 Y50 Z0.3 F1500.0 E30
G1 X101.9 Y100 Z0.3 F1500.0 E30
G1 X102.2 Y50 Z0.3 F1500.0 E30
G1 X102.5 Y100 Z0.3 F1500.0 E30
G1 X102.800000000 Y50 Z0.3 F1500.0 E30
G1 X103.100000000 Y100 Z0.3 F1500.0 E30
G1 X103.400000000 Y50 Z0.3 F1500.0 E30
G1 X103.700000000 Y100 Z0.3 F1500.0 E30
G1 X104.000000000 Y50 Z0.3 F1500.0 E30
G1 X104.300000000 Y100 Z0.3 F1500.0 E30
G1 X104.600000000 Y50 Z0.3 F1500.0 E30
G1 X104.900000000 Y100 Z0.3 F1500.0 E30
G1 X105.200000000 Y50 Z0.3 F1500.0 E30
G1 X105.500000000 Y100 Z0.3 F1500.0 E30
G1 X105.800000000 Y50 Z0.3 F1500.0 E30
G1 X106.100000000 Y100 Z0.3 F1500.0 E30
G1 X106.400000000 Y50 Z0.3 F1500.0 E30
G1 X106.700000000 Y100 Z0.3 F1500.0 E30
G1 X107.000000000 Y50 Z0.3 F1500.0 E30
G1 X107.300000000 Y100 Z0.3 F1500.0 E30
G1 X107.600000000 Y50 Z0.3 F1500.0 E30
G1 X107.900000000 Y100 Z0.3 F1500.0 E30
G1 X108.200000000 Y50 Z0.3 F1500.0 E30
G1 X108.500000000 Y100 Z0.3 F1500.0 E30
G1 X108.800000000 Y50 Z0.3 F1500.0 E30
G1 X109.100000000 Y100 Z0.3 F1500.0 E30
G1 X109.400000000 Y50 Z0.3 F1500.0 E30
G1 X109.700000000 Y100 Z0.3 F1500.0 E30
G1 X110.000000000 Y50 Z0.3 F1500.0 E30
G1 X110.300000000 Y100 Z0.3 F1500.0 E30
G1 X110.600000000 Y50 Z0.3 F1500.0 E30
G1 X110.900000000 Y100 Z0.3 F1500.0 E30
G1 X111.200000000 Y50 Z0.3 F1500.0 E30
G1 X111.500000000 Y100 Z0.3 F1500.0 E30
G1 X111.800000000 Y50 Z0.3 F1500.0 E30
G1 X112.100000000 Y100 Z0.3 F1500.0 E30
G1 X112.400000000 Y50 Z0.3 F1500.0 E30
G1 X112.700000000 Y100 Z0.3 F1500.0 E30
G1 X113.000000000 Y50 Z0.3 F1500.0 E30
G1 X113.300000000 Y100 Z0.3 F1500.0 E30
G1 X113.600000000 Y50 Z0.3 F1500.0 E30
G1 X113.900000000 Y100 Z0.3 F1500.0 E30
G1 X114.200000000 Y50 Z0.3 F1500.0 E30
G1 X114.500000000 Y100 Z0.3 F1500.0 E30
G1 X114.800000000 Y50 Z0.3 F1500.0 E30
G1 X115.100000000 Y100 Z0.3 F1500.0 E30
G1 X115.400000000 Y50 Z0.3 F1500.0 E30
G1 X115.700000000 Y100 Z0.3 F1500.0 E30
G1 X116.000000000 Y50 Z0.3 F1500.0 E30
G1 X116.300000000 Y100 Z0.3 F1500.0 E30
G1 X116.600000000 Y50 Z0.3 F1500.0 E30
G1 X116.900000000 Y100 Z0.3 F1500.0 E30
G1 X117.200000000 Y50 Z0.3 F1500.0 E30
G1 X117.500000000 Y100 Z0.3 F1500.0 E30
G1 X117.800000000 Y50 Z0.3 F1500.0 E30
G1 X118.100000000 Y100 Z0.3 F1500.0 E30
G1 X118.400000000 Y50 Z0.3 F1500.0 E30
G1 X118.700000000 Y100 Z0.3 F1500.0 E30
G1 X119.000000000 Y50 Z0.3 F1500.0 E30
G1 X119.300000000 Y100 Z0.3 F1500.0 E30
G1 X119.600000000 Y50 Z0.3 F1500.0 E30
G1 X119.900000000 Y100 Z0.3 F1500.0 E30
G1 X120.200000000 Y50 Z0.3 F1500.0 E30
G1 X120.500000000 Y100 Z0.3 F1500.0 E30
G1 X120.800000000 Y50 Z0.3 F1500.0 E30
G1 X121.100000000 Y100 Z0.3 F1500.0 E30
G1 X121.400000000 Y50 Z0.3 F1500.0 E30
G1 X121.700000000 Y100 Z0.3 F1500.0 E30
G1 X122.000000000 Y50 Z0.3 F1500.0 E30
G1 X122.300000000 Y100 Z0.3 F1500.0 E30
G1 X122.600000000 Y50 Z0.3 F1500.0 E30
G1 X122.900000000 Y100 Z0.3 F1500.0 E30
G1 X123.200000000 Y50 Z0.3 F1500.0 E30
G1 X123.500000000 Y100 Z0.3 F1500.0 E30
G1 X123.800000000 Y50 Z0.3 F1500.0 E30
G1 X124.100000000 Y100 Z0.3 F1500.0 E30
G1 X124.400000000 Y50 Z0.3 F1500.0 E30
G1 X124.700000000 Y100 Z0.3 F1500.0 E30
G1 X125.000000000 Y50 Z0.3 F1500.0 E30
G1 X125.300000000 Y100 Z0.3 F1500.0 E30
G1 X125.600000000 Y50 Z0.3 F1500.0 E30
G1 X125.900000000 Y100 Z0.3 F1500.0 E30
G1 X126.200000000 Y50 Z0.3 F1500.0 E30
G1 X126.500000000 Y100 Z0.3 F1500.0 E30
G1 X126.800000000 Y50 Z0.3 F1500.0 E30
G1 X127.100000000 Y100 Z0.3 F1500.0 E30
G1 X127.400000000 Y50 Z0.3 F1500.0 E30
G1 X127.700000000 Y100 Z0.3 F1500.0 E30
G1 X128.000000000 Y50 Z0.3 F1500.0 E30
G1 X128.300000000 Y100 Z0.3 F1500.0 E30
G1 X128.600000000 Y50 Z0.3 F1500.0 E30
G1 X128.900000000 Y100 Z0.3 F1500.0 E30
G1 X129.200000000 Y50 Z0.3 F1500.0 E30
G1 X129.500000000 Y100 Z0.3 F1500.0 E30
G1 X129.800000000 Y50 Z0.3 F1500.0 E30
G1 X130.100000000 Y100 Z0.3 F1500.0 E30
G1 X130.400000000 Y50 Z0.3 F1500.0 E30
G1 X130.700000000 Y100 Z0.3 F1500.0 E30
G1 X131.000000000 Y50 Z0.3 F1500.0 E30
G1 X131.300000000 Y100 Z0.3 F1500.0 E30
G1 X131.600000000 Y50 Z0.3 F1500.0 E30
G1 X131.900000000 Y100 Z0.3 F1500.0 E30
G1 X132.200000000 Y50 Z0.3 F1500.0 E30
G1 X132.500000000 Y100 Z0.3 F1500.0 E30
G1 X132.800000000 Y50 Z0.3 F1500.0 E30
G1 X133.100000000 Y100 Z0.3 F1500.0 E30
G1 X133.400000000 Y50 Z0.3 F1500.0 E30
G1 X133.700000000 Y100 Z0.3 F1500.0 E30
G1 X134.000000000 Y50 Z0.3 F1500.0 E30
G1 X134.300000000 Y100 Z0.3 F1500.0 E30
G1 X134.6 Y50 Z0.3 F1500.0 E30
G1 X134.9 Y100 Z0.3 F1500.0 E30
G1 X135.2 Y50 Z0.3 F1500.0 E30
G1 X135.5 Y100 Z0.3 F1500.0 E30
G1 X135.8 Y50 Z0.3 F1500.0 E30
G1 X136.1 Y100 Z0.3 F1500.0 E30
G1 X136.4 Y50 Z0.3 F1500.0 E30
G1 X136.7 Y100 Z0.3 F1500.0 E30
G1 X137.0 Y50 Z0.3 F1500.0 E30
G1 X137.3 Y100 Z0.3 F1500.0 E30
G1 X137.6 Y50 Z0.3 F1500.0 E30
G1 X137.9 Y100 Z0.3 F1500.0 E30
G1 X138.2 Y50 Z0.3 F1500.0 E30
G1 X138.5 Y100 Z0.3 F1500.0 E30
G1 X138.8 Y50 Z0.3 F1500.0 E30
G1 X139.1 Y100 Z0.3 F1500.0 E30
G1 X139.4 Y50 Z0.3 F1500.0 E30
G1 X139.7 Y100 Z0.3 F1500.0 E30
G1 X140.0 Y50 Z0.3 F1500.0 E30
G1 X140.3 Y100 Z0.3 F1500.0 E30
G1 X140.6 Y50 Z0.3 F1500.0 E30
G1 X140.9 Y100 Z0.3 F1500.0 E30
G1 X141.2 Y50 Z0.3 F1500.0 E30
G1 X141.5 Y100 Z0.3 F1500.0 E30
G1 X141.8 Y50 Z0.3 F1500.0 E30
G1 X142.1 Y100 Z0.3 F1500.0 E30
G1 X142.4 Y50 Z0.3 F1500.0 E30
G1 X142.7 Y100 Z0.3 F1500.0 E30
G1 X143.0 Y50 Z0.3 F1500.0 E30
G1 X143.3 Y100 Z0.3 F1500.0 E30
G1 X143.6 Y50 Z0.3 F1500.0 E30
G1 X143.9 Y100 Z0.3 F1500.0 E30
G1 X144.2 Y50 Z0.3 F1500.0 E30
G1 X144.5 Y100 Z0.3 F1500.0 E30
G1 X144.8 Y50 Z0.3 F1500.0 E30
G1 X145.1 Y100 Z0.3 F1500.0 E30
G1 X145.4 Y50 Z0.3 F1500.0 E30
G1 X145.7 Y100 Z0.3 F1500.0 E30
G1 X146.0 Y50 Z0.3 F1500.0 E30
G1 X146.3 Y100 Z0.3 F1500.0 E30
G1 X146.6 Y50 Z0.3 F1500.0 E30
G1 X146.9 Y100 Z0.3 F1500.0 E30
G1 X147.2 Y50 Z0.3 F1500.0 E30
G1 X147.5 Y100 Z0.3 F1500.0 E30
G1 X147.8 Y50 Z0.3 F1500.0 E30
G1 X148.1 Y100 Z0.3 F1500.0 E30
G1 X148.4 Y50 Z0.3 F1500.0 E30
G1 X148.7 Y100 Z0.3 F1500.0 E30
G1 X149.0 Y50 Z0.3 F1500.0 E30
G1 X149.3 Y100 Z0.3 F1500.0 E30
G1 X149.6 Y50 Z0.3 F1500.0 E30
G1 Z5.0 F3000
G1 X50 Y50 Z0.3 F5000.0
G1 Z0.3 F3000
G1 X83.2755179447 Y95.3343021784 Z0.3 F1500.0 E2.10509600088
G1 X58.3454474616 Y76.1969041944 Z0.3 F1500.0 E0.522657496058
G1 X66.8791956174 Y55.4393836859 Z0.3 F1500.0 E0.373232779492
G1 X93.0747148048 Y54.9159380236 Z0.3 F1500.0 E0.435720216361
G1 X97.9880369551 Y73.4199523981 Z0.3 F1500.0 E0.318386229106
G1 X97.7697200403 Y97.5229725308 Z0.3 F1500.0 E0.400851294461
G1 X65.4176325948 Y64.2202121236 Z0.3 F1500.0 E0.772131619708
G1 X70.4919120753 Y93.6385213083 Z0.3 F1500.0 E0.496452842974
G1 X92.2743959414 Y80.5612342903 Z0.3 F1500.0 E0.422512398607
G1 X62.5564997992 Y95.1899077832 Z0.3 F1500.0 E0.55084232307
G1 X79.2710431683 Y71.8547103081 Z0.3 F1500.0 E0.477345919773
G1 X60.4742453349 Y75.3852442537 Z0.3 F1500.0 E0.318058151414
G1 X79.7481149539 Y53.3829406507 Z0.3 F1500.0 E0.486435420314
G1 X71.7499536024 Y75.5955843635 Z0.3 F1500.0 E0.392614771747
G1 X80.1389518332 Y53.8273593803 Z0.3 F1500.0 E0.38795880666
G1 X99.0385488555 Y57.5478988449 Z0.3 F1500.0 E0.320333772787
G1 X77.9187914490 Y56.2107640570 Z0.3 F1500.0 E0.351926211253
G1 X71.8761016740 Y60.9390836152 Z0.3 F1500.0 E0.127598364674
G1 X56.4673746659 Y69.6013930486 Z0.3 F1500.0 E0.293964126515
G1 X63.1750702201 Y77.0085574280 Z0.3 F1500.0 E0.166183611396
G1 X68.8108933386 Y95.7804336929 Z0.3 F1500.0 E0.325943316518
G1 X90.8822631337 Y76.1820139376 Z0.3 F1500.0 E0.490866923376
G1 X61.5036531339 Y65.7830394179 Z0.3 F1500.0 E0.51827183121
G1 X81.3303692942 Y69.0008860114 Z0.3 F1500.0 E0.334033943256
G1 X85.8336581134 Y86.4506304970 Z0.3 F1500.0 E0.29969817615
G1 X88.1067044208 Y58.9357156607 Z0.3 F1500.0 E0.459133630338
G1 X52.8967318685 Y82.5331521958 Z0.3 F1500.0 E0.704883647158
G1 X93.9705588913 Y56.2634960912 Z0.3 F1500.0 E0.810816691288
G1 X60.1154684740 Y58.8559798747 Z0.3 F1500.0 E0.564660741958
G1 X59.9329398917 Y87.3913342775 Z0.3 F1500.0 E0.4745545787
G1 X75.1413512440 Y64.4822727825 Z0.3 F1500.0 E0.457287812187
G1 X97.9653265919 Y81.3227040208 Z0.3 F1500.0 E0.471700359236
G1 X69.0610274906 Y71.4576691497 Z0.3 F1500.0 E0.507905627446
G1 X57.1857182364 Y80.0854222221 Z0.3 F1500.0 E0.244105993018
G1 X71.6253536653 Y94.7094085358 Z0.3 F1500.0 E0.341772790125
G1 X77.8658656019 Y67.1425489417 Z0.3 F1500.0 E0.470038712738
G1 X91.7751527287 Y63.1027711065 Z0.3 F1500.0 E0.240870941304
G1 X88.0266994269 Y56.1617469801 Z0.3 F1500.0 E0.131186588939
G1 X84.1266561090 Y57.4546445119 Z0.3 F1500.0 E0.0683289828912
G1 X91.8597455623 Y87.2344060456 Z0.3 F1500.0 E0.511664471028
G1 X88.8103381964 Y50.2424291795 Z0.3 F1500.0 E0.617265731874
G1 X52.6066278484 Y73.4900268981 Z0.3 F1500.0 E0.715510359282
G1 X97.3850329084 Y99.8222423539 Z0.3 F1500.0 E0.863882169088
G1 X92.4902062299 Y65.7717607453 Z0.3 F1500.0 E0.572082692392
G1 X80.1394797269 Y70.0517138705 Z0.3 F1500.0 E0.217376321855
G1 X65.2670385236 Y62.5600914803 Z0.3 F1500.0 E0.276936272471
G1 X77.1051133708 Y58.6164134704 Z0.3 F1500.0 E0.207504737001
G1 X76.6084192460 Y79.3646541340 Z0.3 F1500.0 E0.345143498207
G1 X69.2640881671 Y80.8216025717 Z0.3 F1500.0 E0.12451678824
G1 X70.7576888926 Y65.3482397980 Z0.3 F1500.0 E0.258519092639
G4 P2000
G1 X85.9000277236 Y94.6909482270 Z0.5 F1500.0 E0.549115905918
G1 X90.0542762465 Y91.3526900856 Z0.5 F1500.0 E0.0886271020872
G1 X84.2089182307 Y97.7830166808 Z0.5 F1500.0 E0.144516444994
G1 X93.8292870848 Y70.9668873458 Z0.5 F1500.0 E0.473783674367
G1 X90.5781662793 Y78.7127937389 Z0.5 F1500.0 E0.139701329719
G1 X66.9036897187 Y88.6234301674 Z0.5 F1500.0 E0.426813705681
G1 X92.1363782122 Y50.2202711744 Z0.5 F1500.0 E0.764167651572
G1 X56.7051295190 Y64.5028587370 Z0.5 F1500.0 E0.635295938179
G1 X58.6487737295 Y99.9210746465 Z0.5 F1500.0 E0.589893547688
G1 X65.9536871194 Y81.0529620714 Z0.5 F1500.0 E0.336473338112
G1 X71.1083588389 Y89.8545340051 Z0.5 F1500.0 E0.169625310262
G1 X85.4041194784 Y76.0013716071 Z0.5 F1500.0 E0.331050673992
G1 X97.4817308488 Y65.3842006240 Z0.5 F1500.0 E0.267425248709
G1 X87.5922405650 Y69.5018873252 Z0.5 F1500.0 E0.178149369821
G1 X83.7323116290 Y67.2970160205 Z0.5 F1500.0 E0.0739252964256
G1 X94.6647902326 Y58.2700569191 Z0.5 F1500.0 E0.235774877721
G1 X84.7134407177 Y91.2757349676 Z0.5 F1500.0 E0.573292276259
G1 X57.1693549941 Y55.4751382555 Z0.5 F1500.0 E0.751185761454
G1 X56.9279192085 Y98.7120056047 Z0.5 F1500.0 E0.719043233608
G1 X87.0918006659 Y83.0367722523 Z0.5 F1500.0 E0.565317782101
G1 X81.6070443745 Y83.0789094053 Z0.5 F1500.0 E0.0912145591975
G1 X81.8410193911 Y76.9143792370 Z0.5 F1500.0 E0.102590368297
G1 X74.5744036825 Y59.0852439579 Z0.5 F1500.0 E0.320180313748
G1 X73.3259905565 Y79.0246814843 Z0.5 F1500.0 E0.33224348851
G1 X52.1757001900 Y55.9665203656 Z0.5 F1500.0 E0.520341386532
G1 X78.8816459062 Y59.2725406428 Z0.5 F1500.0 E0.447511781959
G1 X65.3087049193 Y83.8628438194 Z0.5 F1500.0 E0.467097045563
G1 X97.3468474569 Y88.0456928525 Z0.5 F1500.0 E0.537318177368
G1 X54.9192771933 Y99.9252443985 Z0.5 F1500.0 E0.732709237236
G1 X71.9751388697 Y74.0421325907 Z0.5 F1500.0 E0.515488610294
G1 X64.4769934644 Y72.4168749051 Z0.5 F1500.0 E0.127590281575
G1 X53.8378401172 Y95.1308832882 Z0.5 F1500.0 E0.417119012442
G1 X63.1091041925 Y66.2873043259 Z0.5 F1500.0 E0.503841204024
G1 X93.5613399329 Y82.7709250578 Z0.5 F1500.0 E0.575853979044
G1 X85.9294336080 Y54.8103584580 Z0.5 F1500.0 E0.481996416359
G1 X71.8211583912 Y60.6450120121 Z0.5 F1500.0 E0.253894139813
G1 X86.7258303280 Y56.9122972236 Z0.5 F1500.0 E0.255520543862
G1 X50.1656533033 Y82.1120658063 Z0.5 F1500.0 E0.738433965122
G1 X85.5973029040 Y90.5018688488 Z0.5 F1500.0 E0.605524163598
G1 X79.5241747086 Y97.7507295561 Z0.5 F1500.0 E0.157265289381
G1 X86.3846713043 Y78.5030164618 Z0.5 F1500.0 E0.339815754719
G1 X81.7398688449 Y65.7518376936 Z0.5 F1500.0 E0.225683404421
G1 X79.2867572420 Y93.9940142119 Z0.5 F1500.0 E0.471437715203
G1 X96.7264302939 Y73.2396101639 Z0.5 F1500.0 E0.450821311302
G1 X85.8410597713 Y72.0940843070 Z0.5 F1500.0 E0.182024062715
G1 X98.4352011788 Y56.1315280970 Z0.5 F1500.0 E0.33813290997
G1 X82.5712075111 Y52.6329093232 Z0.5 F1500.0 E0.270158826862
G1 X57.3768830653 Y86.7823434233 Z0.5 F1500.0 E0.705737790506
G1 X82.5589864903 Y78.9387339673 Z0.5 F1500.0 E0.438624310012
G4
M220 S100
M221 S100
G91nG1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y200 F1000
M104 S0
M140 S0
M106 S0
M107
M84</p>```

I even tried to score the mat on my heat bed again to see if that does the trick, but it didn't work.

Based on advice from Jennifer and Sam, I tried changing the z height as well as the feedRate, but this made no difference in terms of adhesion. Here is my final code:

Python Script:

```"""Provides a scripting component.    Inputs:
x: The x script variable
y: The y script variable
Output:
a: The a output variable"""__author__ = "stejaraiulia"import rhinoscriptsyntax as rs
import random as r
import math as m# create a random prinHi t generator
# G12: clean the nozzle -> do this before and after?
# G2/3: arc clockwise/counterclockwisedef generateCoordinatePoint(s, e) :
#x_val = "X"+str(r.uniform(s, e))
#y_val = "Y"+str(r.uniform(s, e))
return (r.uniform(s, e), r.uniform(s, e))
#return (str(x_val) + " " + str(y_val))

def makeGcodeSpeed(frX, frY, toX, toY, speed):
l = m.sqrt((toX - frX)**2 + (toY - frY)**2) #calculate the distance
numerator = (nozzleWidth/2 * l * layerHeight)
denominator = (1.75 / 2) * (1.75 / 2) * m.pi
e = numerator / denominator
return estartVal = 1
endVal = 3
instructions = []
nozzleWidth = 0.4
layerHeight = 0.2xPos = 0
yPos = 0
zPos = 0.1
xPrev = 0
yPrev = 0# size of the drawing space -> 50-100 in the x and y planes
dimStart = 50
dimEnd = 100# starting instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("M104 S200\n") # Set Extruder temperature
instructions.append("M140 S50\n") # Set Heat Bed temperature
instructions.append("M190 S50\n") # Wait for Heat Bed temperature
instructions.append("M109 S200\n") # Wait for Extruder temperature
instructions.append("G28\n") # auto-home before starting the print
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed
instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n") # Move to start position
instructions.append("G1 X0.1 Y200.0 Z0.3 F1500.0 E15\n") # Draw the first line
instructions.append("G1 X0.4 Y200.0 Z0.3 F5000.0\n") # Move to side a little
instructions.append("G1 X0.4 Y20 Z0.3 F1500.0 E30\n") # Draw the second line
instructions.append("G92 E0\n") # Reset Extruder
instructions.append("G1 Z5.0 F3000\n") # Move Z Axis up little to prevent scratching of Heat Bed# build a "canvas" using the drawing dimensions
# bounding box
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimStart) + " F3000\n") # move the extruder to starting position (50, 50)
instructions.append("G1 Z0.1\n") #lower the extruder to start printing
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimEnd) + " Z0.1 F1200.0 E30\n") #draw first side of square
instructions.append("G1 X" + str(dimEnd) + " Y" + str(dimEnd) + " Z0.1 F1200.0 E30\n") # draw connecting side
instructions.append("G1 X" + str(dimEnd) + " Y" + str(dimStart) + " Z0.1 F1200.0 E30\n") # draw connecting side
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimStart) + " Z0.1 F1200.0 E30\n") # finish the square
instructions.append("G1 Z5.0 F3000\n") # move z axis up to travel to new starting position based on where the drawing dimensions are# now, fill the square
stepSize = 0.3
length = dimEnd - dimStart
reps = int(length/stepSize)
workingX = dimStart + stepSizeinstructions.append("G1 X" + str(workingX) + " Y" + str(dimStart) + " Z0.1 F5000.0\n") # move to starting position, don't extrude
for i in range(reps):
instructions.append("G1 X" + str(workingX) + " Y" + str(dimEnd) + " Z0.1 F1200.0 E30\n")
workingX += stepSize
instructions.append("G1 X" + str(workingX) + " Y" + str(dimStart) + " Z0.1 F1200.0 E30\n")
workingX += stepSizeinstructions.append("G1 Z5.0 F3000\n") # move the extruder head up
instructions.append("G1 X" + str(dimStart) + " Y" + str(dimStart) + " F5000.0\n") #travel to the starting position again
instructions.append("G1 Z0.1 F3000\n") # move the extruder head down to start the drawing
# now, randomly generate g-code for layer drawing
for i in range(lines): # go through based on total amount of commands (parameter)
if (i <= 1 or i % linesPerLayer != 0):
#num = r.randint(startVal, endVal)
num = 1
coord = generateCoordinatePoint(dimStart, dimEnd) #restrict the drawing space
xPrev = xPos
yPrev = yPos
xPos = coord[0]
yPos = coord[1]
e = makeGcodeSpeed(xPrev, yPrev, xPos, yPos, 1500.0)
#e = 30
inst = "G" + str(num) + " X" + str(xPos) + " Y" + str(yPos) + " Z" + str(zPos) + " F1200.0 E" + str(e) + "\n"
instructions.append(inst)
else: # move to the next layer
instructions.append("G4 P2000\n") # Wait for 2 seconds
zPos += layerHeight # increment z up one layer by adding the layerHeight value
#instructions.append("G1 Z" + str(zPos) + " F5000.0\n") # move to start position
#instructions.append("G1 X0.1 Y20 Z0.3 F5000.0\n")# move to start position# ending instructions from Cura software (http://www.emcu.eu/configure-ultimaker-cura-software-for-use-the-creality-3d-printer-model-ender-3/)
instructions.append("G4\n") # Wait
instructions.append("M220 S100\n") # Reset Speed factor override percentage to default (100%)
instructions.append("M221 S100\n") # Reset Extrude factor override percentage to default (100%)
instructions.append("G91n") # Set coordinates to relative
instructions.append("G1 F1800 E-3\n") # Retract filament 3 mm to prevent oozing
instructions.append("G1 F3000 Z10\n") # Move Z Axis up 10 mm to allow filament ooze freely
instructions.append("G90\n") # Set coordinates to absolute
instructions.append("G1 X0 Y200 F1000\n") # Move Heat Bed to the front for easy print removal
instructions.append("M104 S0\n") # Turn off Extruder temperature
instructions.append("M140 S0\n") # Turn off Heat Bed
instructions.append("M106 S0\n") # Turn off Cooling Fan
instructions.append("M107\n") # Turn off Fan
instructions.append("M84\n") # Disable stepper motors
f = open("/Users/stejaraiulia/Desktop/marks.gcode", "w")
str_instructions = ''.join(instructions)
f.write(str_instructions)
f.close()print(str_instructions)```

G-Code:

```M104 S200M140 S50
M190 S50
M109 S200
G28
G92 E0
G1 Z5.0 F3000
G1 X0.1 Y20 Z0.3 F5000.0
G1 X0.1 Y200.0 Z0.3 F1500.0 E15
G1 X0.4 Y200.0 Z0.3 F5000.0
G1 X0.4 Y20 Z0.3 F1500.0 E30
G92 E0
G1 Z5.0 F3000
G1 X50 Y50 F3000
G1 Z0.1
G1 X50 Y100 Z0.1 F1200.0 E30
G1 X100 Y100 Z0.1 F1200.0 E30
G1 X100 Y50 Z0.1 F1200.0 E30
G1 X50 Y50 Z0.1 F1200.0 E30
G1 Z5.0 F3000
G1 X50.3 Y50 Z0.1 F5000.0
G1 X50.3 Y100 Z0.1 F1200.0 E30
G1 X50.6 Y50 Z0.1 F1200.0 E30
G1 X50.9 Y100 Z0.1 F1200.0 E30
G1 X51.2 Y50 Z0.1 F1200.0 E30
G1 X51.5 Y100 Z0.1 F1200.0 E30
G1 X51.8 Y50 Z0.1 F1200.0 E30
G1 X52.1 Y100 Z0.1 F1200.0 E30
G1 X52.4 Y50 Z0.1 F1200.0 E30
G1 X52.7 Y100 Z0.1 F1200.0 E30
G1 X53.0 Y50 Z0.1 F1200.0 E30
G1 X53.3 Y100 Z0.1 F1200.0 E30
G1 X53.6 Y50 Z0.1 F1200.0 E30
G1 X53.9 Y100 Z0.1 F1200.0 E30
G1 X54.2 Y50 Z0.1 F1200.0 E30
G1 X54.5 Y100 Z0.1 F1200.0 E30
G1 X54.8 Y50 Z0.1 F1200.0 E30
G1 X55.1 Y100 Z0.1 F1200.0 E30
G1 X55.4 Y50 Z0.1 F1200.0 E30
G1 X55.7 Y100 Z0.1 F1200.0 E30
G1 X56.0 Y50 Z0.1 F1200.0 E30
G1 X56.3 Y100 Z0.1 F1200.0 E30
G1 X56.6 Y50 Z0.1 F1200.0 E30
G1 X56.9 Y100 Z0.1 F1200.0 E30
G1 X57.2 Y50 Z0.1 F1200.0 E30
G1 X57.5 Y100 Z0.1 F1200.0 E30
G1 X57.8 Y50 Z0.1 F1200.0 E30
G1 X58.1 Y100 Z0.1 F1200.0 E30
G1 X58.4 Y50 Z0.1 F1200.0 E30
G1 X58.7 Y100 Z0.1 F1200.0 E30
G1 X59.0 Y50 Z0.1 F1200.0 E30
G1 X59.3 Y100 Z0.1 F1200.0 E30
G1 X59.6 Y50 Z0.1 F1200.0 E30
G1 X59.9 Y100 Z0.1 F1200.0 E30
G1 X60.2 Y50 Z0.1 F1200.0 E30
G1 X60.5 Y100 Z0.1 F1200.0 E30
G1 X60.8 Y50 Z0.1 F1200.0 E30
G1 X61.1 Y100 Z0.1 F1200.0 E30
G1 X61.4 Y50 Z0.1 F1200.0 E30
G1 X61.7 Y100 Z0.1 F1200.0 E30
G1 X62.0 Y50 Z0.1 F1200.0 E30
G1 X62.3 Y100 Z0.1 F1200.0 E30
G1 X62.6 Y50 Z0.1 F1200.0 E30
G1 X62.9 Y100 Z0.1 F1200.0 E30
G1 X63.2 Y50 Z0.1 F1200.0 E30
G1 X63.5 Y100 Z0.1 F1200.0 E30
G1 X63.8 Y50 Z0.1 F1200.0 E30
G1 X64.1 Y100 Z0.1 F1200.0 E30
G1 X64.4 Y50 Z0.1 F1200.0 E30
G1 X64.7 Y100 Z0.1 F1200.0 E30
G1 X65.0 Y50 Z0.1 F1200.0 E30
G1 X65.3 Y100 Z0.1 F1200.0 E30
G1 X65.6 Y50 Z0.1 F1200.0 E30
G1 X65.9 Y100 Z0.1 F1200.0 E30
G1 X66.2 Y50 Z0.1 F1200.0 E30
G1 X66.5 Y100 Z0.1 F1200.0 E30
G1 X66.8 Y50 Z0.1 F1200.0 E30
G1 X67.1 Y100 Z0.1 F1200.0 E30
G1 X67.4 Y50 Z0.1 F1200.0 E30
G1 X67.7 Y100 Z0.1 F1200.0 E30
G1 X68.0 Y50 Z0.1 F1200.0 E30
G1 X68.3 Y100 Z0.1 F1200.0 E30
G1 X68.6 Y50 Z0.1 F1200.0 E30
G1 X68.9 Y100 Z0.1 F1200.0 E30
G1 X69.2 Y50 Z0.1 F1200.0 E30
G1 X69.5 Y100 Z0.1 F1200.0 E30
G1 X69.8 Y50 Z0.1 F1200.0 E30
G1 X70.1 Y100 Z0.1 F1200.0 E30
G1 X70.4 Y50 Z0.1 F1200.0 E30
G1 X70.7 Y100 Z0.1 F1200.0 E30
G1 X71.0 Y50 Z0.1 F1200.0 E30
G1 X71.3 Y100 Z0.1 F1200.0 E30
G1 X71.6 Y50 Z0.1 F1200.0 E30
G1 X71.9 Y100 Z0.1 F1200.0 E30
G1 X72.2 Y50 Z0.1 F1200.0 E30
G1 X72.5 Y100 Z0.1 F1200.0 E30
G1 X72.8 Y50 Z0.1 F1200.0 E30
G1 X73.1 Y100 Z0.1 F1200.0 E30
G1 X73.4 Y50 Z0.1 F1200.0 E30
G1 X73.7 Y100 Z0.1 F1200.0 E30
G1 X74.0 Y50 Z0.1 F1200.0 E30
G1 X74.3 Y100 Z0.1 F1200.0 E30
G1 X74.6 Y50 Z0.1 F1200.0 E30
G1 X74.9 Y100 Z0.1 F1200.0 E30
G1 X75.2 Y50 Z0.1 F1200.0 E30
G1 X75.5 Y100 Z0.1 F1200.0 E30
G1 X75.8 Y50 Z0.1 F1200.0 E30
G1 X76.1 Y100 Z0.1 F1200.0 E30
G1 X76.4 Y50 Z0.1 F1200.0 E30
G1 X76.7 Y100 Z0.1 F1200.0 E30
G1 X77.0 Y50 Z0.1 F1200.0 E30
G1 X77.3 Y100 Z0.1 F1200.0 E30
G1 X77.6 Y50 Z0.1 F1200.0 E30
G1 X77.9 Y100 Z0.1 F1200.0 E30
G1 X78.2 Y50 Z0.1 F1200.0 E30
G1 X78.5 Y100 Z0.1 F1200.0 E30
G1 X78.8 Y50 Z0.1 F1200.0 E30
G1 X79.1 Y100 Z0.1 F1200.0 E30
G1 X79.4 Y50 Z0.1 F1200.0 E30
G1 X79.7 Y100 Z0.1 F1200.0 E30
G1 X80.0 Y50 Z0.1 F1200.0 E30
G1 X80.3 Y100 Z0.1 F1200.0 E30
G1 X80.6 Y50 Z0.1 F1200.0 E30
G1 X80.9 Y100 Z0.1 F1200.0 E30
G1 X81.2 Y50 Z0.1 F1200.0 E30
G1 X81.5 Y100 Z0.1 F1200.0 E30
G1 X81.8 Y50 Z0.1 F1200.0 E30
G1 X82.1 Y100 Z0.1 F1200.0 E30
G1 X82.4 Y50 Z0.1 F1200.0 E30
G1 X82.7 Y100 Z0.1 F1200.0 E30
G1 X83.0 Y50 Z0.1 F1200.0 E30
G1 X83.3 Y100 Z0.1 F1200.0 E30
G1 X83.6 Y50 Z0.1 F1200.0 E30
G1 X83.9 Y100 Z0.1 F1200.0 E30
G1 X84.2 Y50 Z0.1 F1200.0 E30
G1 X84.5 Y100 Z0.1 F1200.0 E30
G1 X84.8 Y50 Z0.1 F1200.0 E30
G1 X85.1 Y100 Z0.1 F1200.0 E30
G1 X85.4 Y50 Z0.1 F1200.0 E30
G1 X85.7 Y100 Z0.1 F1200.0 E30
G1 X86.0 Y50 Z0.1 F1200.0 E30
G1 X86.3 Y100 Z0.1 F1200.0 E30
G1 X86.6 Y50 Z0.1 F1200.0 E30
G1 X86.9 Y100 Z0.1 F1200.0 E30
G1 X87.2 Y50 Z0.1 F1200.0 E30
G1 X87.5 Y100 Z0.1 F1200.0 E30
G1 X87.8 Y50 Z0.1 F1200.0 E30
G1 X88.1 Y100 Z0.1 F1200.0 E30
G1 X88.4 Y50 Z0.1 F1200.0 E30
G1 X88.7 Y100 Z0.1 F1200.0 E30
G1 X89.0 Y50 Z0.1 F1200.0 E30
G1 X89.3 Y100 Z0.1 F1200.0 E30
G1 X89.6 Y50 Z0.1 F1200.0 E30
G1 X89.9 Y100 Z0.1 F1200.0 E30
G1 X90.2 Y50 Z0.1 F1200.0 E30
G1 X90.5 Y100 Z0.1 F1200.0 E30
G1 X90.8 Y50 Z0.1 F1200.0 E30
G1 X91.1 Y100 Z0.1 F1200.0 E30
G1 X91.4 Y50 Z0.1 F1200.0 E30
G1 X91.7 Y100 Z0.1 F1200.0 E30
G1 X92.0 Y50 Z0.1 F1200.0 E30
G1 X92.3 Y100 Z0.1 F1200.0 E30
G1 X92.6 Y50 Z0.1 F1200.0 E30
G1 X92.9 Y100 Z0.1 F1200.0 E30
G1 X93.2 Y50 Z0.1 F1200.0 E30
G1 X93.5 Y100 Z0.1 F1200.0 E30
G1 X93.8 Y50 Z0.1 F1200.0 E30
G1 X94.1 Y100 Z0.1 F1200.0 E30
G1 X94.4 Y50 Z0.1 F1200.0 E30
G1 X94.7 Y100 Z0.1 F1200.0 E30
G1 X95.0 Y50 Z0.1 F1200.0 E30
G1 X95.3 Y100 Z0.1 F1200.0 E30
G1 X95.6 Y50 Z0.1 F1200.0 E30
G1 X95.9 Y100 Z0.1 F1200.0 E30
G1 X96.2 Y50 Z0.1 F1200.0 E30
G1 X96.5 Y100 Z0.1 F1200.0 E30
G1 X96.8 Y50 Z0.1 F1200.0 E30
G1 X97.1 Y100 Z0.1 F1200.0 E30
G1 X97.4 Y50 Z0.1 F1200.0 E30
G1 X97.7 Y100 Z0.1 F1200.0 E30
G1 X98.0 Y50 Z0.1 F1200.0 E30
G1 X98.3 Y100 Z0.1 F1200.0 E30
G1 X98.6 Y50 Z0.1 F1200.0 E30
G1 X98.9 Y100 Z0.1 F1200.0 E30
G1 X99.2 Y50 Z0.1 F1200.0 E30
G1 X99.5 Y100 Z0.1 F1200.0 E30
G1 X99.8 Y50 Z0.1 F1200.0 E30
G1 X100.1 Y100 Z0.1 F1200.0 E30
G1 X100.4 Y50 Z0.1 F1200.0 E30
G1 X100.7 Y100 Z0.1 F1200.0 E30
G1 X101.0 Y50 Z0.1 F1200.0 E30
G1 X101.3 Y100 Z0.1 F1200.0 E30
G1 X101.6 Y50 Z0.1 F1200.0 E30
G1 X101.9 Y100 Z0.1 F1200.0 E30
G1 X102.2 Y50 Z0.1 F1200.0 E30
G1 X102.5 Y100 Z0.1 F1200.0 E30
G1 X102.800000000 Y50 Z0.1 F1200.0 E30
G1 X103.100000000 Y100 Z0.1 F1200.0 E30
G1 X103.400000000 Y50 Z0.1 F1200.0 E30
G1 X103.700000000 Y100 Z0.1 F1200.0 E30
G1 X104.000000000 Y50 Z0.1 F1200.0 E30
G1 X104.300000000 Y100 Z0.1 F1200.0 E30
G1 X104.600000000 Y50 Z0.1 F1200.0 E30
G1 X104.900000000 Y100 Z0.1 F1200.0 E30
G1 X105.200000000 Y50 Z0.1 F1200.0 E30
G1 X105.500000000 Y100 Z0.1 F1200.0 E30
G1 X105.800000000 Y50 Z0.1 F1200.0 E30
G1 X106.100000000 Y100 Z0.1 F1200.0 E30
G1 X106.400000000 Y50 Z0.1 F1200.0 E30
G1 X106.700000000 Y100 Z0.1 F1200.0 E30
G1 X107.000000000 Y50 Z0.1 F1200.0 E30
G1 X107.300000000 Y100 Z0.1 F1200.0 E30
G1 X107.600000000 Y50 Z0.1 F1200.0 E30
G1 X107.900000000 Y100 Z0.1 F1200.0 E30
G1 X108.200000000 Y50 Z0.1 F1200.0 E30
G1 X108.500000000 Y100 Z0.1 F1200.0 E30
G1 X108.800000000 Y50 Z0.1 F1200.0 E30
G1 X109.100000000 Y100 Z0.1 F1200.0 E30
G1 X109.400000000 Y50 Z0.1 F1200.0 E30
G1 X109.700000000 Y100 Z0.1 F1200.0 E30
G1 X110.000000000 Y50 Z0.1 F1200.0 E30
G1 X110.300000000 Y100 Z0.1 F1200.0 E30
G1 X110.600000000 Y50 Z0.1 F1200.0 E30
G1 X110.900000000 Y100 Z0.1 F1200.0 E30
G1 X111.200000000 Y50 Z0.1 F1200.0 E30
G1 X111.500000000 Y100 Z0.1 F1200.0 E30
G1 X111.800000000 Y50 Z0.1 F1200.0 E30
G1 X112.100000000 Y100 Z0.1 F1200.0 E30
G1 X112.400000000 Y50 Z0.1 F1200.0 E30
G1 X112.700000000 Y100 Z0.1 F1200.0 E30
G1 X113.000000000 Y50 Z0.1 F1200.0 E30
G1 X113.300000000 Y100 Z0.1 F1200.0 E30
G1 X113.600000000 Y50 Z0.1 F1200.0 E30
G1 X113.900000000 Y100 Z0.1 F1200.0 E30
G1 X114.200000000 Y50 Z0.1 F1200.0 E30
G1 X114.500000000 Y100 Z0.1 F1200.0 E30
G1 X114.800000000 Y50 Z0.1 F1200.0 E30
G1 X115.100000000 Y100 Z0.1 F1200.0 E30
G1 X115.400000000 Y50 Z0.1 F1200.0 E30
G1 X115.700000000 Y100 Z0.1 F1200.0 E30
G1 X116.000000000 Y50 Z0.1 F1200.0 E30
G1 X116.300000000 Y100 Z0.1 F1200.0 E30
G1 X116.600000000 Y50 Z0.1 F1200.0 E30
G1 X116.900000000 Y100 Z0.1 F1200.0 E30
G1 X117.200000000 Y50 Z0.1 F1200.0 E30
G1 X117.500000000 Y100 Z0.1 F1200.0 E30
G1 X117.800000000 Y50 Z0.1 F1200.0 E30
G1 X118.100000000 Y100 Z0.1 F1200.0 E30
G1 X118.400000000 Y50 Z0.1 F1200.0 E30
G1 X118.700000000 Y100 Z0.1 F1200.0 E30
G1 X119.000000000 Y50 Z0.1 F1200.0 E30
G1 X119.300000000 Y100 Z0.1 F1200.0 E30
G1 X119.600000000 Y50 Z0.1 F1200.0 E30
G1 X119.900000000 Y100 Z0.1 F1200.0 E30
G1 X120.200000000 Y50 Z0.1 F1200.0 E30
G1 X120.500000000 Y100 Z0.1 F1200.0 E30
G1 X120.800000000 Y50 Z0.1 F1200.0 E30
G1 X121.100000000 Y100 Z0.1 F1200.0 E30
G1 X121.400000000 Y50 Z0.1 F1200.0 E30
G1 X121.700000000 Y100 Z0.1 F1200.0 E30
G1 X122.000000000 Y50 Z0.1 F1200.0 E30
G1 X122.300000000 Y100 Z0.1 F1200.0 E30
G1 X122.600000000 Y50 Z0.1 F1200.0 E30
G1 X122.900000000 Y100 Z0.1 F1200.0 E30
G1 X123.200000000 Y50 Z0.1 F1200.0 E30
G1 X123.500000000 Y100 Z0.1 F1200.0 E30
G1 X123.800000000 Y50 Z0.1 F1200.0 E30
G1 X124.100000000 Y100 Z0.1 F1200.0 E30
G1 X124.400000000 Y50 Z0.1 F1200.0 E30
G1 X124.700000000 Y100 Z0.1 F1200.0 E30
G1 X125.000000000 Y50 Z0.1 F1200.0 E30
G1 X125.300000000 Y100 Z0.1 F1200.0 E30
G1 X125.600000000 Y50 Z0.1 F1200.0 E30
G1 X125.900000000 Y100 Z0.1 F1200.0 E30
G1 X126.200000000 Y50 Z0.1 F1200.0 E30
G1 X126.500000000 Y100 Z0.1 F1200.0 E30
G1 X126.800000000 Y50 Z0.1 F1200.0 E30
G1 X127.100000000 Y100 Z0.1 F1200.0 E30
G1 X127.400000000 Y50 Z0.1 F1200.0 E30
G1 X127.700000000 Y100 Z0.1 F1200.0 E30
G1 X128.000000000 Y50 Z0.1 F1200.0 E30
G1 X128.300000000 Y100 Z0.1 F1200.0 E30
G1 X128.600000000 Y50 Z0.1 F1200.0 E30
G1 X128.900000000 Y100 Z0.1 F1200.0 E30
G1 X129.200000000 Y50 Z0.1 F1200.0 E30
G1 X129.500000000 Y100 Z0.1 F1200.0 E30
G1 X129.800000000 Y50 Z0.1 F1200.0 E30
G1 X130.100000000 Y100 Z0.1 F1200.0 E30
G1 X130.400000000 Y50 Z0.1 F1200.0 E30
G1 X130.700000000 Y100 Z0.1 F1200.0 E30
G1 X131.000000000 Y50 Z0.1 F1200.0 E30
G1 X131.300000000 Y100 Z0.1 F1200.0 E30
G1 X131.600000000 Y50 Z0.1 F1200.0 E30
G1 X131.900000000 Y100 Z0.1 F1200.0 E30
G1 X132.200000000 Y50 Z0.1 F1200.0 E30
G1 X132.500000000 Y100 Z0.1 F1200.0 E30
G1 X132.800000000 Y50 Z0.1 F1200.0 E30
G1 X133.100000000 Y100 Z0.1 F1200.0 E30
G1 X133.400000000 Y50 Z0.1 F1200.0 E30
G1 X133.700000000 Y100 Z0.1 F1200.0 E30
G1 X134.000000000 Y50 Z0.1 F1200.0 E30
G1 X134.300000000 Y100 Z0.1 F1200.0 E30
G1 X134.6 Y50 Z0.1 F1200.0 E30
G1 X134.9 Y100 Z0.1 F1200.0 E30
G1 X135.2 Y50 Z0.1 F1200.0 E30
G1 X135.5 Y100 Z0.1 F1200.0 E30
G1 X135.8 Y50 Z0.1 F1200.0 E30
G1 X136.1 Y100 Z0.1 F1200.0 E30
G1 X136.4 Y50 Z0.1 F1200.0 E30
G1 X136.7 Y100 Z0.1 F1200.0 E30
G1 X137.0 Y50 Z0.1 F1200.0 E30
G1 X137.3 Y100 Z0.1 F1200.0 E30
G1 X137.6 Y50 Z0.1 F1200.0 E30
G1 X137.9 Y100 Z0.1 F1200.0 E30
G1 X138.2 Y50 Z0.1 F1200.0 E30
G1 X138.5 Y100 Z0.1 F1200.0 E30
G1 X138.8 Y50 Z0.1 F1200.0 E30
G1 X139.1 Y100 Z0.1 F1200.0 E30
G1 X139.4 Y50 Z0.1 F1200.0 E30
G1 X139.7 Y100 Z0.1 F1200.0 E30
G1 X140.0 Y50 Z0.1 F1200.0 E30
G1 X140.3 Y100 Z0.1 F1200.0 E30
G1 X140.6 Y50 Z0.1 F1200.0 E30
G1 X140.9 Y100 Z0.1 F1200.0 E30
G1 X141.2 Y50 Z0.1 F1200.0 E30
G1 X141.5 Y100 Z0.1 F1200.0 E30
G1 X141.8 Y50 Z0.1 F1200.0 E30
G1 X142.1 Y100 Z0.1 F1200.0 E30
G1 X142.4 Y50 Z0.1 F1200.0 E30
G1 X142.7 Y100 Z0.1 F1200.0 E30
G1 X143.0 Y50 Z0.1 F1200.0 E30
G1 X143.3 Y100 Z0.1 F1200.0 E30
G1 X143.6 Y50 Z0.1 F1200.0 E30
G1 X143.9 Y100 Z0.1 F1200.0 E30
G1 X144.2 Y50 Z0.1 F1200.0 E30
G1 X144.5 Y100 Z0.1 F1200.0 E30
G1 X144.8 Y50 Z0.1 F1200.0 E30
G1 X145.1 Y100 Z0.1 F1200.0 E30
G1 X145.4 Y50 Z0.1 F1200.0 E30
G1 X145.7 Y100 Z0.1 F1200.0 E30
G1 X146.0 Y50 Z0.1 F1200.0 E30
G1 X146.3 Y100 Z0.1 F1200.0 E30
G1 X146.6 Y50 Z0.1 F1200.0 E30
G1 X146.9 Y100 Z0.1 F1200.0 E30
G1 X147.2 Y50 Z0.1 F1200.0 E30
G1 X147.5 Y100 Z0.1 F1200.0 E30
G1 X147.8 Y50 Z0.1 F1200.0 E30
G1 X148.1 Y100 Z0.1 F1200.0 E30
G1 X148.4 Y50 Z0.1 F1200.0 E30
G1 X148.7 Y100 Z0.1 F1200.0 E30
G1 X149.0 Y50 Z0.1 F1200.0 E30
G1 X149.3 Y100 Z0.1 F1200.0 E30
G1 X149.6 Y50 Z0.1 F1200.0 E30
G1 Z5.0 F3000
G1 X50 Y50 F5000.0
G1 Z0.1 F3000
G1 X99.0979945202 Y56.0187926923 Z0.1 F1200.0 E1.89309180261
G1 X94.4528994759 Y77.8216190288 Z0.1 F1200.0 E0.370720031578
G1 X86.8031277456 Y84.3295690034 Z0.1 F1200.0 E0.167024520422
G1 X97.6753219364 Y71.2501281771 Z0.1 F1200.0 E0.28284629791
G1 X85.0852246398 Y57.8154090080 Z0.1 F1200.0 E0.306193022306
G1 X72.0965192397 Y74.7776736694 Z0.1 F1200.0 E0.355286472898
G1 X71.0573536190 Y83.7710167125 Z0.1 F1200.0 E0.150555009547
G1 X74.5925842760 Y54.3025595010 Z0.1 F1200.0 E0.493576321136
G1 X63.0361282719 Y88.7877851388 Z0.1 F1200.0 E0.604836827569
G1 X71.4097242145 Y64.4394484157 Z0.1 F1200.0 E0.428190689939
G1 X78.8678646850 Y75.8900015564 Z0.1 F1200.0 E0.227254011321
G1 X59.9183039409 Y63.7336159536 Z0.1 F1200.0 E0.37440319726
G1 X76.5170247394 Y69.0448099264 Z0.1 F1200.0 E0.289824584607
G1 X99.5561197781 Y55.0234895716 Z0.1 F1200.0 E0.448517984913
G1 X80.1665821110 Y81.3282078198 Z0.1 F1200.0 E0.543447699897
G1 X77.0957531059 Y77.7615821798 Z0.1 F1200.0 E0.0782688244519
G1 X97.6763693813 Y51.7108751355 Z0.1 F1200.0 E0.552108500012
G1 X88.4759541602 Y57.2983139917 Z0.1 F1200.0 E0.179008686546
G1 X51.5004634430 Y78.7370129301 Z0.1 F1200.0 E0.710787981464
G1 X69.6637507577 Y92.0082875232 Z0.1 F1200.0 E0.374095849351
G1 X78.5318875025 Y58.6678403742 Z0.1 F1200.0 E0.573732332169
G1 X59.2168178972 Y85.6923442218 Z0.1 F1200.0 E0.552407619787
G1 X59.9120807948 Y83.9487883353 Z0.1 F1200.0 E0.0312157381257
G1 X59.1691958043 Y59.0339175554 Z0.1 F1200.0 E0.414520125056
G1 X91.5416003480 Y59.9944405763 Z0.1 F1200.0 E0.538592197448
G1 X60.9573110833 Y50.8851446493 Z0.1 F1200.0 E0.530699308384
G1 X50.5081461088 Y65.5003557697 Z0.1 F1200.0 E0.298781480554
G1 X98.5802565599 Y79.1951913969 Z0.1 F1200.0 E0.831249949531
G1 X70.2530637611 Y60.9090983659 Z0.1 F1200.0 E0.560709811759
G1 X60.5101320430 Y88.5447563626 Z0.1 F1200.0 E0.487307606047
G1 X62.2537275708 Y53.3238750791 Z0.1 F1200.0 E0.586442915176
G1 X95.6112147108 Y99.2788845748 Z0.1 F1200.0 E0.944345503856
G1 X64.3717562157 Y63.2303850247 Z0.1 F1200.0 E0.793273062264
G1 X68.8828490099 Y94.8017476492 Z0.1 F1200.0 E0.530366434702
G1 X71.4595782374 Y86.2092534805 Z0.1 F1200.0 E0.149180594763
G1 X62.3687258130 Y57.6764997763 Z0.1 F1200.0 E0.498003645451
G1 X92.9185007586 Y85.3668078894 Z0.1 F1200.0 E0.68568370202
G1 X73.6684373557 Y69.8305785535 Z0.1 F1200.0 E0.411384768221
G1 X95.4103209215 Y60.2829803396 Z0.1 F1200.0 E0.394895348164
G1 X65.5176339164 Y98.0430622484 Z0.1 F1200.0 E0.800905937665
G1 X52.6245931990 Y95.4636704046 Z0.1 F1200.0 E0.218660891178
G1 X93.0582913829 Y60.5813119050 Z0.1 F1200.0 E0.888061625781
G1 X79.6710372145 Y50.5887819544 Z0.1 F1200.0 E0.277811352527
G1 X89.0411495803 Y54.4926594415 Z0.1 F1200.0 E0.168808919092
G1 X89.2363823390 Y59.6499725393 Z0.1 F1200.0 E0.085827896451
G1 X99.4641511883 Y92.4408051554 Z0.1 F1200.0 E0.571224291066
G1 X88.0395146090 Y98.1155740061 Z0.1 F1200.0 E0.21213952057
G1 X53.1465214245 Y63.8008816453 Z0.1 F1200.0 E0.813857747046
G1 X60.9722586748 Y75.0928919806 Z0.1 F1200.0 E0.228475377485
G1 X50.2691698384 Y64.1278322296 Z0.1 F1200.0 E0.254819440744
G4 P2000
G1 X62.8675680934 Y79.6199824317 Z0.3 F1200.0 E0.332071408832
G1 X67.3428747131 Y70.1918752659 Z0.3 F1200.0 E0.17355734283
G1 X99.0406852828 Y61.7609329609 Z0.3 F1200.0 E0.545464182401
G1 X52.7682702197 Y51.7952440860 Z0.3 F1200.0 E0.787157742614
G1 X82.2618202790 Y99.2177025054 Z0.3 F1200.0 E0.928720270591
G1 X81.0831868676 Y78.9141060046 Z0.3 F1200.0 E0.338218618797
G1 X69.8498259725 Y77.4381940593 Z0.3 F1200.0 E0.188417060051
G1 X78.9390857385 Y71.4132515842 Z0.3 F1200.0 E0.181347493135
G1 X92.3299325564 Y58.6839885995 Z0.3 F1200.0 E0.307250979263
G1 X74.7525780802 Y97.3540274332 Z0.3 F1200.0 E0.706403162241
G1 X65.8507909733 Y81.1589733601 Z0.3 F1200.0 E0.307328682757
G1 X82.7157898772 Y55.0719328876 Z0.3 F1200.0 E0.51659367993
G1 X70.5535793248 Y58.9635470386 Z0.3 F1200.0 E0.212360184136
G1 X75.5014254123 Y50.0056572705 Z0.3 F1200.0 E0.17018415981
G1 X98.0196831015 Y62.5641783752 Z0.3 F1200.0 E0.428781187781
G1 X56.9599955907 Y57.4467759751 Z0.3 F1200.0 E0.688108255607
G1 X88.1292523701 Y62.4567168941 Z0.3 F1200.0 E0.524999952475
G1 X98.0487937984 Y82.1281121000 Z0.3 F1200.0 E0.366375557152
G1 X84.2211045523 Y82.5333879116 Z0.3 F1200.0 E0.230054152539
G1 X76.6321765308 Y97.8923693526 Z0.3 F1200.0 E0.284898898322
G1 X62.4897453694 Y74.1103798141 Z0.3 F1200.0 E0.460142694869
G1 X76.7832176552 Y88.8890859040 Z0.3 F1200.0 E0.341914149318
G1 X94.0700605746 Y77.2685401237 Z0.3 F1200.0 E0.346397569128
G1 X57.1031277227 Y67.8447746778 Z0.3 F1200.0 E0.634423776097
G1 X72.2514042505 Y86.6692103300 Z0.3 F1200.0 E0.401825126027
G1 X71.5988820357 Y55.2805677183 Z0.3 F1200.0 E0.52210802689
G1 X52.5774664349 Y62.1062482390 Z0.3 F1200.0 E0.33607723414
G1 X62.1516420972 Y78.2893703795 Z0.3 F1200.0 E0.312697579812
G1 X88.5945983289 Y68.4782473067 Z0.3 F1200.0 E0.469041044272
G1 X67.8973172877 Y77.4340221824 Z0.3 F1200.0 E0.375037832469
G1 X80.6462144460 Y68.0207859963 Z0.3 F1200.0 E0.263545067479
G1 X50.0789056893 Y82.7036523940 Z0.3 F1200.0 E0.563940015231
G1 X93.9796908771 Y68.1504360182 Z0.3 F1200.0 E0.769142878692
G1 X92.6295458687 Y62.4527476742 Z0.3 F1200.0 E0.0973768829051
G1 X59.7578718261 Y75.2576069333 Z0.3 F1200.0 E0.586669415292
G1 X56.0003258292 Y77.7506536437 Z0.3 F1200.0 E0.0749911571298
G1 X69.5105945404 Y74.6624258702 Z0.3 F1200.0 E0.230471684212
G1 X61.1201597710 Y55.8669734716 Z0.3 F1200.0 E0.342300128748
G1 X74.4817102281 Y81.2822687482 Z0.3 F1200.0 E0.477508365392
G1 X68.5773757466 Y79.2650640273 Z0.3 F1200.0 E0.103761867452
G1 X70.8246455379 Y50.9196865401 Z0.3 F1200.0 E0.472864688635
G1 X84.4156445213 Y62.3833039393 Z0.3 F1200.0 E0.295683244642
G1 X66.4139550102 Y60.5010270586 Z0.3 F1200.0 E0.301001370009
G1 X75.8873619202 Y50.2115783817 Z0.3 F1200.0 E0.232594067509
G1 X80.0234342163 Y93.5045078447 Z0.3 F1200.0 E0.723242541982
G1 X65.8039346315 Y92.4568378941 Z0.3 F1200.0 E0.237112212341
G1 X76.8458339163 Y84.1712936107 Z0.3 F1200.0 E0.229575527632
G1 X99.9138439376 Y57.5773056060 Z0.3 F1200.0 E0.585457100794
G1 X71.8317741301 Y83.7526136564 Z0.3 F1200.0 E0.638419042769
G4
M220 S100
M221 S100
G91nG1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y200 F1000
M104 S0
M140 S0
M106 S0
M107
M84```