Skip to content

11. Open Source Hardware - From Fibers to Fabric

Research & Inspiration

Machine Hacking

What does this mean? It’s when your machine — CNC, 3D printer, laser cutter, or anything else — works only with a closed program, and you can’t change anything inside it. Sometimes the machine is so old that the official app doesn’t even work anymore.

Machine hacking is also called machine outsourcing. The idea is simple: the machine is locked, closed, stubborn — and you hack it to make it open, flexible, and more powerful.

It’s like taking your printer and saying:

“Okay honey, stop being dramatic. I’ll change your brain, your habits, and now you work with me.”

That’s machine hacking.

It is very common for:

  • 3D printers
  • CNC routers
  • Laser cutters
  • Game consoles
  • Old machines with locked firmware

What Actually Happens?

  1. What you must do when you want to change the electronics

You remove the company’s locked motherboard and just put an open-source motherboard, for example SKR, RAMPS, Duet, or anything else. After this, the machine can be used in a more common way, you can make changes and work without forced programs.

  1. The firmware change

Closed firmware → open firmware (Marlin/Klipper). Now you can edit all settings: speeds, sensors, everything.

  1. Removing the company’s limitations

Many machines block:

  • third-party parts
  • other filaments
  • normal G-code
  • custom extruders
  • Machine hacking cuts all that out.

  • Make the machine repairable and modifiable

You can upgrade motors, add sensors, install new hotends, fix things by yourself, or do anything else. We have total freedom!

Now, freedom in everything may seem unreal, but having more space and control over your own machine, which becomes your work partner, is really a good decision — a bit of air outside the stupid program jail.

Why Should Manufacturers Buy CNC Machines Over Outsourcing?

MakerBot Replicator 2 HACKING

Which Printer And Problems We Have

We have two MakerBot Replicator 2 printers that are already more than ten years old. They haven’t been used for years — not for printing, not for anything. Now, together with Anush Arshakyan, we are trying to revive them and turn them into an open-source heating machine.

The beautiful MakerBot photos — doesn’t it look really good?

Why do we need to make it open-source?

In the research part I already spoke about the huge problems that come with using a machine that works only with closed programs — and MakerBot is exactly this type. Because our printer is an old version, its official software doesn’t work normally anymore. At the beginning we tried to use its original program to do the heating process, but it was almost impossible.

For testing, I made a small 3D line object.

The object is a very interesting animal line sketch which I have from Pinterest. It is rhinoceros. And the fun fact is that rhinoceros I made with Rhino 7 program >< and slice it with MakerBot print program.

The sketch inspiration came from this sketch.

And make it's 3d version but changes some little parts and changes the sketch more like for soft robotics. thich tools i used you can cheak in my previous weeks.

3d resalt ⬇

Then I exported it as an STL file, and after that, we had to import it into the MakerBot printer program.

It was easy to download, but really hard to sign up in the app. How it worked like that, I really don’t know. After a lot of hard work, we managed to download it, but it did nothing. That’s when we understood that the program doesn’t work with this app—the versions were too different. Then we found an older version of the app, recreated the code, and this is what we got after that.

What resalt we have.

And the question: what is this? It is not what we want to do. We changed a lot of parameters and sketches, made it again and again, but nothing changed until we understood how it draws. It made our sketch fast while the transportation lines were slow, so the vinyl touches in the transportation lines but not on the main sketch.

But this part is impossible to change — we did everything, yet it keeps drawing the same pattern again and again. After long experiments, we decided to reset its program and download the open-source version.

Nozzle Head Tearing

Because for the heating parts we needed more curved heads, we thought about going to ironworks, but decided to spend all that time on machine coding and working with them. Mkhitar Evoyan helped us sharpen the nozzle head in the lab using his own machine, which he made during one of the Fab Academy weeks. It is a very simple system: just rolling the head and sharpening the edge with two tools — a hard one and a soft one for grinding.

Footage from the process.

And what the resalt we have ⬇

More about this process you can find in Mariam's documentation. She is one of our participants and a very interesting person with great ideas. I think you will love all of her documentation.

How To Make Machine Work

Anoush Arshakyan - Fab Academy 2023 Week of Electronics Production

Info from there:

G-code¶ Now, in order for the C&C machine to understand our commands, we need to generate a G code. This page is a simple tool for g code generation for svg or other formats which we need.

how to use it. step by step guide:

Full tree view ⬇

How to add your SVG file.

Now You can change the paramiterrs as you like in this windowes.

Depending on the selected option, the next window will present the setup for the specific task. We can customize it based on our design and tools.

Some important parameters here:

Tool Diameter: This refers to the diameter of the milling or drilling tool used to create traces, holes, or cutouts on the PCB.

Cut Depth: The cut depth specifies how deep the milling tool should penetrate the PCB material when cutting traces or creating cutouts. It is usually defined in terms of a specific depth value or as a percentage of the PCB thickness.

Max Depth: The maximum depth parameter sets the maximum depth that the milling tool can reach during the cutting operation.

Offset Number: In PCB milling, an offset refers to creating multiple passes around a trace or cutout with progressively increasing or decreasing distances from the original path. The offset number determines the number of offset passes to be performed.

Offset Stepover: The offset stepover parameter determines the distance between adjacent offset passes when using offset milling. It specifies how much the tool should move between each pass.

After customizing all the parameters, just save the G-code.

After that, we must download our G-code into a program that can convert it to an X3G file, because our printer accepts only this format. For this, ReplicatorG 0040 can help us. It creates many different files, but for now we need only the X3G one.

How to download ReplicatorG?

You can use this link and download the version you need. Right now, I need the 0040 version. Svetlana gave me this link because ReplicatorG has many versions that didn’t work correctly for me, so I changed it.

What does this program look like? ⬇

what we can do in this program?

open the g code and we can see all strocs and about which it is. JUst open them or put the file on it.

What tools we have and that they mean?

ReplicatorG Barr

  1. Connect Machine Connect ReplicatorG to the printer. Without this, the machine will not move or respond.

  2. Upload to SD or Build from SD Send your file directly to the printer’s internal storage or SD card.

  3. Upload and Print Upload the file and start the print immediately. Fast one-click start.

  4. Print (Start Build) Start printing the currently loaded file.

  5. Pause. Pause the print. Printer or anything else stops moving but keeps the current temperature.

  6. Stop it is Full stopes. the Motion ends. Use it when something goes wrong in your work. 7. Move Axis / Control Panel Manual control window. Move your X, Y or Z extrude them; set temperatures. it is the Main area for testing.

  7. Preheat / Cooldown Heat up or cool down the nozzle and build plate. Preparing the printer for work.

  8. Build from File. Choose a file from your computer and start the print from it.

Learn G-Code for 3D Printing: How to Make Your Own Code — Step-by-Step Tutorial

First code i write by myself with Maxime Richard. he study me how the easest codes are working and ask me make write the code which will drow the squear.

the easest code which give me Maxim ⬇

First Gcode Steps

;G90

G1 X10 Y10 F500
G1 X10 Y30

The meaning of any sentence

;G90
This is a comment. The printer ignores it. G90 means absolute positioning, but here it’s commented out.

G1 X10 Y10 F500
Move the head to X=10, Y=10. F500 = 500 mm/min (~8.3 mm/s). Move to the first point.

G1 X10 Y30
Move straight up from Y=10 → Y=30. Same speed as before (no new F set).

And after this, Maxim asked me to write the G-code that would make the printer draw a square. At first it was hard to understand how to build it, but after a few minutes I wrote it — and it was actually easier than I expected. You just move one axis at a time, keeping the movements equal for both X and Y, and the printer follows those strokes to create the square.

The Code ⬇

;G90

M104 S185
G1 X10 Y10 F500
G1 X10 Y30
G1 X30 Y30
G1 X30 Y10 
G1 X10 Y10
How it was ⬇

What changes we can have without ;** simbol befor G90** ?

If we will not put this sibol the machin will read this all seperetly. its mean that it will not drow in this example squear. it will drow lines which go up, every axie will read seperatly . it will be easier to show in this picture ⬇

The first code which i made with SVG file⬇

;G90

;FLAVOR:Makerbot
;TIME:617
;MINX:62.382
;MINY:46.808
;MINZ:0.3
;MAXX:162.619
;MAXY:98.186
;MAXZ:0.3
;TARGET_MACHINE.NAME:MakerBot Replicator
;Generated with Cura_SteamEngine 5.11.0
M190 S60
M104 S170
M104 S170
M116
G28 ;Home
G1 Z15.0 F6000 ;Move the platform down 15mm
;Prime the extruder
G92 E0
G1 F200 E3
G92 E0
M82 ;absolute extrusion mode
G92 E0
G92 E0
G1 F1500 E-6.5
;LAYER_COUNT:1
;LAYER:0
M127 T0
;MESH:exjeru3.stl
G0 F3600 X120.977 Y46.808 Z0.3
;TYPE:WALL-OUTER
G1 F1500 E0
G1 F30.1 X121.222 Y52.45 E0.28104
G1 F30.2 X121.338 Y54.78 E0.39685
G1 F30.1 X121.486 Y57.181 E0.51656
G1 X121.592 Y58.383 E0.57661
G1 F30.2 X121.723 Y59.399 E0.62746
G1 F30.2 X121.961 Y60.584 E0.68731
G1 F30.5 X122.238 Y61.615 E0.73977
G1 F30 X122.619 Y62.682 E0.7963
G1 F29.7 X123.111 Y63.728 E0.85455
G1 F30 X123.799 Y64.844 E0.91995
G1 F24.6 X124.044 Y65.008 E0.9379
G1 X124.207 Y64.819 E0.95309
G1 F29.7 X124.689 Y63.593 E1.01947
G1 F29.4 X125.084 Y62.727 E1.06791
G1 F30 X125.311 Y62.26 E1.09381
G1 F30.1 X125.599 Y61.704 E1.12497
G1 F30 X125.871 Y61.207 E1.15324
G1 F29.9 X126.163 Y60.705 E1.18228
G1 F30.1 X126.482 Y60.187 E1.21256
G1 F30.2 X126.776 Y59.737 E1.23917
G1 F29.7 X127.295 Y58.987 E1.28513
G1 F30 X128.001 Y58.074 E1.34271
G1 F30.5 X128.641 Y57.333 E1.39083
G1 F30.2 X129.574 Y56.344 E1.45832
G1 F29.7 X130.554 Y55.441 E1.52547
G1 F29.6 X131.438 Y54.702 E1.58382
G1 F29.8 X132.353 Y54.007 E1.64157
G1 F29.9 X133.298 Y53.361 E1.69897
G1 F29.7 X134.2 Y52.799 E1.75252
G1 X135.29 Y53.009 E1.80845
G1 F30.2 X136.53 Y53.297 E1.87164
G1 F30.3 X137.657 Y53.593 E1.9292
G1 F30.1 X138.81 Y53.934 E1.98903
G1 F29.9 X139.904 Y54.29 E2.04672
G1 F29.8 X140.954 Y54.665 E2.10276
G1 F29.9 X142.126 Y55.12 E2.16564
G1 F30 X143.22 Y55.585 E2.22494
G1 X144.305 Y56.084 E2.28453
G1 F29.9 X145.32 Y56.584 E2.34126
G1 F29.9 X146.435 Y57.174 E2.40435
G1 F30.1 X147.473 Y57.766 E2.46382
G1 F29.9 X148.49 Y58.391 E2.52352
G1 F30 X149.503 Y59.057 E2.584
G1 F30.1 X150.461 Y59.732 E2.64232
G1 F30 X151.41 Y60.449 E2.70166
G1 F29.9 X152.332 Y61.201 E2.76117
G1 X153.217 Y61.978 E2.82007
G1 X153.992 Y62.704 E2.87319
G1 X154.811 Y63.53 E2.93136
G1 F30.1 X155.693 Y64.505 E2.99679
G1 F30.2 X156.452 Y65.417 E3.05554
G1 F30.1 X157.066 Y66.22 E3.10585
G1 F29.7 X157.748 Y67.185 E3.16539
G1 F29.6 X158.388 Y68.178 E3.22521
G1 X158.983 Y69.191 E3.28471
G1 F29.6 X159.536 Y70.227 E3.34403
G1 F30.2 X160.142 Y71.499 E3.41397
G1 F30.5 X160.601 Y72.587 E3.472
G1 F30.3 X161.033 Y73.75 E3.53328
G1 X161.379 Y74.81 E3.58835
G1 X161.697 Y75.942 E3.64642
G1 F30 X161.924 Y76.877 E3.69443
G1 F29.6 X162.159 Y78.029 E3.75396
G1 F29.6 X162.353 Y79.244 E3.81612
G1 F29.8 X162.487 Y80.364 E3.87281
G1 F30 X162.59 Y81.766 E3.94295
G1 F30.2 X162.619 Y82.81 E3.99479
G1 F21.2 X162.453 Y83.146 E4.0212
G1 F21.2 X162.177 Y82.901 E4.04726
G1 F29.7 X161.7 Y81.868 E4.10459
G1 F29.8 X161.129 Y80.826 E4.16431
G1 F29.6 X160.51 Y79.847 E4.22297
G1 X159.813 Y78.894 E4.28275
G1 F29.7 X159.066 Y78.003 E4.34134
G1 F29.4 X158.259 Y77.17 E4.40036
G1 F29.8 X157.365 Y76.384 E4.4602
G1 F29.6 X156.416 Y75.683 E4.51979
G1 F29.1 X155.637 Y75.212 E4.56669
G1 F29.9 X155.197 Y74.972 E4.59175
G1 X154.619 Y74.693 E4.62385
G1 F30.2 X154.092 Y74.471 E4.65224
G1 X153.49 Y74.253 E4.68402
G1 F29.9 X152.973 Y74.094 E4.71114
G1 X152.436 Y73.954 E4.73897
G1 X151.82 Y73.823 E4.77055
G1 F29.9 X151.305 Y73.736 E4.79667
G1 X150.668 Y73.655 E4.82879
G1 X150.102 Y73.606 E4.8572
G1 F29.1 X149.23 Y73.567 E4.90205
G1 X148.057 Y73.607 E4.96237
G1 F29.9 X146.88 Y73.731 E5.02156
G1 F30.6 X145.708 Y73.941 E5.07977
G1 F30 X144.519 Y74.248 E5.14104
G1 X143.541 Y74.581 E5.19258
G1 F30.1 X142.357 Y75.07 E5.25633
G1 X141.376 Y75.575 E5.31124
G1 F30.2 X140.361 Y76.2 E5.37026
G1 F29.9 X139.361 Y76.952 E5.43284
G1 F29.6 X138.519 Y77.711 E5.4901
G1 F29.7 X137.736 Y78.579 E5.54901
G1 F30 X137.054 Y79.506 E5.60642
G1 X136.462 Y80.506 E5.6644
G1 F29.9 X135.956 Y81.583 E5.72392
G1 F30 X135.547 Y82.699 E5.78322
G1 F29.9 X135.227 Y83.862 E5.84354
G1 F30 X135.002 Y85.036 E5.90318
G1 F30.2 X134.862 Y86.218 E5.96212
G1 F30.3 X134.802 Y87.296 E6.01544

Here I don’t have the nozzle (the head) warming process, but it is enough for first checking if anything works or not. It doesn’t really work yet — the machine didn’t do anything, and the work is continuing.

How to add the warming process: With this question, I went to Google and found the code that makes it work.

The heating code ⬇

M104 S170

M104 is the code, and the number after S is your temperature. I need S170 because I’m heating my vinyls to make them stick together. I tried putting it at the start of the code, and at the end I added a line with S0 to make sure the nozzle cools down after work.

When I started, the printer moved during heating and didn’t wait. Because of that, I added this line of code — M109 S170 — after the heating line. Here, M109 is the code, and S170 is the temperature that the printer will wait to reach before starting the process.

You can use any other temperature depending on your needs. For example, S150 will start heating to 150°C and continue heating during the work.

And what code we have now ⬇

;G90

M104 S170
M109 S170

;FLAVOR:Makerbot
;TIME:617
;MINX:62.382
;MINY:46.808
;MINZ:0.3
;MAXX:162.619
;MAXY:98.186
;MAXZ:0.3
;TARGET_MACHINE.NAME:MakerBot Replicator
;Generated with Cura_SteamEngine 5.11.0
M190 S60
M104 S170
M104 S170
M116
G28 ;Home
G1 Z15.0 F6000 ;Move the platform down 15mm
;Prime the extruder
G92 E0
G1 F200 E3
G92 E0
M82 ;absolute extrusion mode
G92 E0
G92 E0
G1 F1500 E-6.5
;LAYER_COUNT:1
;LAYER:0
M127 T0
;MESH:exjeru3.stl
G0 F3600 X120.977 Y46.808 Z0.3
;TYPE:WALL-OUTER
G1 F1500 E0
G1 F30.1 X121.222 Y52.45 E0.28104
G1 F30.2 X121.338 Y54.78 E0.39685
G1 F30.1 X121.486 Y57.181 E0.51656
G1 X121.592 Y58.383 E0.57661
G1 F30.2 X121.723 Y59.399 E0.62746
G1 F30.2 X121.961 Y60.584 E0.68731
G1 F30.5 X122.238 Y61.615 E0.73977
G1 F30 X122.619 Y62.682 E0.7963
G1 F29.7 X123.111 Y63.728 E0.85455
G1 F30 X123.799 Y64.844 E0.91995
G1 F24.6 X124.044 Y65.008 E0.9379
G1 X124.207 Y64.819 E0.95309
G1 F29.7 X124.689 Y63.593 E1.01947
G1 F29.4 X125.084 Y62.727 E1.06791
G1 F30 X125.311 Y62.26 E1.09381
G1 F30.1 X125.599 Y61.704 E1.12497
G1 F30 X125.871 Y61.207 E1.15324
G1 F29.9 X126.163 Y60.705 E1.18228
G1 F30.1 X126.482 Y60.187 E1.21256
G1 F30.2 X126.776 Y59.737 E1.23917
G1 F29.7 X127.295 Y58.987 E1.28513
G1 F30 X128.001 Y58.074 E1.34271
G1 F30.5 X128.641 Y57.333 E1.39083
G1 F30.2 X129.574 Y56.344 E1.45832
G1 F29.7 X130.554 Y55.441 E1.52547
G1 F29.6 X131.438 Y54.702 E1.58382
G1 F29.8 X132.353 Y54.007 E1.64157
G1 F29.9 X133.298 Y53.361 E1.69897
G1 F29.7 X134.2 Y52.799 E1.75252
G1 X135.29 Y53.009 E1.80845
G1 F30.2 X136.53 Y53.297 E1.87164
G1 F30.3 X137.657 Y53.593 E1.9292
G1 F30.1 X138.81 Y53.934 E1.98903
G1 F29.9 X139.904 Y54.29 E2.04672
G1 F29.8 X140.954 Y54.665 E2.10276
G1 F29.9 X142.126 Y55.12 E2.16564
G1 F30 X143.22 Y55.585 E2.22494
G1 X144.305 Y56.084 E2.28453
G1 F29.9 X145.32 Y56.584 E2.34126
G1 F29.9 X146.435 Y57.174 E2.40435
G1 F30.1 X147.473 Y57.766 E2.46382
G1 F29.9 X148.49 Y58.391 E2.52352
G1 F30 X149.503 Y59.057 E2.584
G1 F30.1 X150.461 Y59.732 E2.64232
G1 F30 X151.41 Y60.449 E2.70166
G1 F29.9 X152.332 Y61.201 E2.76117
G1 X153.217 Y61.978 E2.82007
G1 X153.992 Y62.704 E2.87319
G1 X154.811 Y63.53 E2.93136
G1 F30.1 X155.693 Y64.505 E2.99679
G1 F30.2 X156.452 Y65.417 E3.05554
G1 F30.1 X157.066 Y66.22 E3.10585
G1 F29.7 X157.748 Y67.185 E3.16539
G1 F29.6 X158.388 Y68.178 E3.22521
G1 X158.983 Y69.191 E3.28471
G1 F29.6 X159.536 Y70.227 E3.34403
G1 F30.2 X160.142 Y71.499 E3.41397
G1 F30.5 X160.601 Y72.587 E3.472
G1 F30.3 X161.033 Y73.75 E3.53328
G1 X161.379 Y74.81 E3.58835
G1 X161.697 Y75.942 E3.64642
G1 F30 X161.924 Y76.877 E3.69443
G1 F29.6 X162.159 Y78.029 E3.75396
G1 F29.6 X162.353 Y79.244 E3.81612
G1 F29.8 X162.487 Y80.364 E3.87281
G1 F30 X162.59 Y81.766 E3.94295
G1 F30.2 X162.619 Y82.81 E3.99479
G1 F21.2 X162.453 Y83.146 E4.0212
G1 F21.2 X162.177 Y82.901 E4.04726
G1 F29.7 X161.7 Y81.868 E4.10459
G1 F29.8 X161.129 Y80.826 E4.16431
G1 F29.6 X160.51 Y79.847 E4.22297
G1 X159.813 Y78.894 E4.28275
G1 F29.7 X159.066 Y78.003 E4.34134
G1 F29.4 X158.259 Y77.17 E4.40036
G1 F29.8 X157.365 Y76.384 E4.4602
G1 F29.6 X156.416 Y75.683 E4.51979
G1 F29.1 X155.637 Y75.212 E4.56669
G1 F29.9 X155.197 Y74.972 E4.59175
G1 X154.619 Y74.693 E4.62385
G1 F30.2 X154.092 Y74.471 E4.65224
G1 X153.49 Y74.253 E4.68402
G1 F29.9 X152.973 Y74.094 E4.71114
G1 X152.436 Y73.954 E4.73897
G1 X151.82 Y73.823 E4.77055
G1 F29.9 X151.305 Y73.736 E4.79667
G1 X150.668 Y73.655 E4.82879
G1 X150.102 Y73.606 E4.8572
G1 F29.1 X149.23 Y73.567 E4.90205
G1 X148.057 Y73.607 E4.96237
G1 F29.9 X146.88 Y73.731 E5.02156
G1 F30.6 X145.708 Y73.941 E5.07977
G1 F30 X144.519 Y74.248 E5.14104
G1 X143.541 Y74.581 E5.19258
G1 F30.1 X142.357 Y75.07 E5.25633
G1 X141.376 Y75.575 E5.31124
G1 F30.2 X140.361 Y76.2 E5.37026
G1 F29.9 X139.361 Y76.952 E5.43284
G1 F29.6 X138.519 Y77.711 E5.4901
G1 F29.7 X137.736 Y78.579 E5.54901
G1 F30 X137.054 Y79.506 E5.60642
G1 X136.462 Y80.506 E5.6644
G1 F29.9 X135.956 Y81.583 E5.72392
G1 F30 X135.547 Y82.699 E5.78322
G1 F29.9 X135.227 Y83.862 E5.84354
G1 F30 X135.002 Y85.036 E5.90318
G1 F30.2 X134.862 Y86.218 E5.96212
G1 F30.3 X134.802 Y87.296 E6.01544
M104 S0
What we have ⬇

The nozle part ⬇

What problems do we have here? I guess you already noticed that the board is not high enough, and that the movements don’t depend on our sketch — the head and the transportation part are all moving on the same height.

Now let’s speak about this printer’s 0-point finding. In old printers it’s a bit hard, and you must do it by your own hand, using the three leveling screws. The biggest minus of this printer is that it is too hard to find the same level across the whole board. All the pins are close to the center, and the corner parts become almost uncontrollable.

Let’s see how it was.

We put a piece of paper under the nozzle and started to level the board up and down, checking how it touches the paper. In the ideal variation, the head should scratch the paper but not tear it. You must do the same for all three points, then check every point again — and also the middle part.

Surely, it is too hard to find anything that will stay in the same position. The printer is old, the leveling screws are not precise, and getting all points equal is almost impossible.

Now about the second problem — the height difference between the sketching (drawing) part and the transportation part. How to solve this?

For this we need another code — G0. G0 is a movement command for transportation, not cutting. With G0 the machine moves fast, without drawing, and we can change its height by editing the Z axis value.

The idea is simple:

  • When the machine is drawing → Z must be low (for example Z-1).
  • When the machine is moving between lines → Z must be higher (for example Z5), so it doesn’t scratch the board.

So we lift the Z axis only during transportation moves. This makes the machine safe, fast, and clean — no random scratches and no broken nozzles.

In the ideal version, all transportation moves are written with G0, because it is the fastest way to move around the board.

I added G28, which is the auto-homing command, and G21, which sets the distance units to millimeters. And at the end I put M84, which means the motors will release after the work is finished.

Now let’s look at the kind of code we already have.

G21          ; units in millimeters
M104 S170    ; heat the extruder without waiting
M109 S170    ; heat the extruder and wait
G28          ; auto-homing
G90          ; absolute coordinates

; ===== First line =====
G0 Z5 F1200                     ; lift the nozzle before moving
G0 X82.1673 Y75.4512 F1200      ; move considering the 50 mm offset
G0 Z0 F600                      ; lower the nozzle before drawing
G1 X70.4172 Y75.4512 F300
G1 X70.2794 Y75.4657 F300
G1 X70.1335 Y75.4848 F300
G1 X69.9184 Y75.5186 F300
G1 X69.6858 Y75.5623 F300
G1 X69.4124 Y75.6239 F300
G1 X69.2277 Y75.6724 F300
G1 X69.0359 Y75.7294 F300
G1 X68.8399 Y75.7958 F300
G1 X68.6472 Y75.8705 F300
G1 X68.4594 Y75.9546 F300
G1 X68.2791 Y76.0484 F300
G1 X68.1480 Y76.1270 F300
G1 X68.0254 Y76.2109 F300
G1 X67.9120 Y76.3004 F300
G1 X67.8084 Y76.3958 F300
G1 X67.7134 Y76.4998 F300
G1 X67.6272 Y76.6122 F300
G1 X67.5491 Y76.7322 F300
G1 X67.4786 Y76.8590 F300
G1 X67.4162 Y76.9901 F300
G1 X67.3609 Y77.1247 F300
G1 X67.3124 Y77.2621 F300
G1 X67.2701 Y77.4012 F300
G1 X67.2222 Y77.5895 F300
G1 X67.1845 Y77.7731 F300
G1 X67.1555 Y77.9496 F300
G1 X67.1242 Y78.2103 F300
G1 X67.1075 Y78.4313 F300
G1 X67.0997 Y78.6354 F300
G1 X67.0988 Y78.7737 F300
G1 X67.1019 Y78.9040 F300
G1 X67.1019 Y90.4716 F300

; ===== Lift before moving to next line =====
G0 Z5 F1200
G0 X37.5612 Y107.8468 F1200
G0 Z0 F600
G1 X37.5612 Y38.1556 F300
G1 X67.1019 Y20.7804 F300
G1 X67.1337 Y66.6538 F300
G1 X67.1374 Y66.8004 F300
G1 X67.1456 Y66.9556 F300
G1 X67.1637 Y67.1840 F300
G1 X67.1913 Y67.4310 F300
G1 X67.2349 Y67.7208 F300
G1 X67.2720 Y67.9168 F300
G1 X67.3179 Y68.1198 F300
G1 X67.3736 Y68.3268 F300
G1 X67.4390 Y68.5306 F300
G1 X67.5149 Y68.7286 F300
G1 X67.6022 Y68.9181 F300
G1 X67.6772 Y69.0558 F300
G1 X67.7588 Y69.1843 F300
G1 X67.8474 Y69.3029 F300
G1 X67.9433 Y69.4108 F300
G1 X68.0487 Y69.5099 F300
G1 X68.1630 Y69.6011 F300
G1 X68.2854 Y69.6848 F300
G1 X68.4151 Y69.7616 F300
G1 X68.5947 Y69.8520 F300
G1 X68.7807 Y69.9305 F300
G1 X68.9706 Y69.9982 F300
G1 X69.1640 Y70.0563 F300
G1 X69.3527 Y70.1042 F300
G1 X69.5341 Y70.1430 F300
G1 X69.8025 Y70.1892 F300
G1 X70.0302 Y70.2187 F300
G1 X70.2406 Y70.2384 F300
G1 X70.3832 Y70.2475 F300
G1 X70.5177 Y70.2522 F300
G1 X82.1594 Y70.2522 F300

; ===== Next lines =====
G0 Z5 F1200
G0 X62.8845 Y88.2094 F1200
G0 Z0 F600
G1 X37.6565 Y73.1943 F300

G0 Z5 F1200
G0 X40.5933 Y71.5248 F1200
G0 Z0 F600
G1 X67.2713 Y55.5784 F300

G0 Z5 F1200
G0 X64.0143 Y53.7395 F1200
G0 Z0 F600
G1 X37.5136 Y38.0841 F300

; ===== Finishing the job =====
G0 Z5 F1200
M104 S0
M84
Z0 is not tuchibg the vinyle. we break our heads to understand why. and the resion is to eszy one. the printer 0 paramiters colculating as a printer had with anyn pla as a print. printer head in the printing musnt tuch the the board but becouse we use it for other needs we started to write with pinus simble befor number. For example -4 .

In the middle of our work, everything stopped because of some problems, and I started thinking that I couldn’t do anything that would actually work. But in that moment, my boyfriend Harut came to help — and together we made the first working example.

And we were trying, trying, and trying again. And finally, we had something we could actually call a result. Of course, not everything was perfect — we still couldn’t find a way to change the position, so the changes would work.

The second problem was the height: the nozzle didn’t touch the vinyl and couldn’t stick them together.

The last Replicator G code which works nearly normal ⬇

G21          ; units in millimeters
M104 S170    ; heat the extruder without waiting
M109 S170    ; heat the extruder and wait until temperature is reached
G28          ; auto-homing
G90          ; absolute coordinates

; ===== First line =====
G0 Z5 F1200                     ; lift the nozzle before moving
G0 X82.1673 Y75.4512 F1200      ; move with a 50 mm offset
G0 Z0 F600                      ; lower the nozzle before drawing
G1 X70.4172 Y75.4512 F300
G1 X70.2794 Y75.4657 F300
G1 X70.1335 Y75.4848 F300
G1 X69.9184 Y75.5186 F300
G1 X69.6858 Y75.5623 F300
G1 X69.4124 Y75.6239 F300
G1 X69.2277 Y75.6724 F300
G1 X69.0359 Y75.7294 F300
G1 X68.8399 Y75.7958 F300
G1 X68.6472 Y75.8705 F300
G1 X68.4594 Y75.9546 F300
G1 X68.2791 Y76.0484 F300
G1 X68.1480 Y76.1270 F300
G1 X68.0254 Y76.2109 F300
G1 X67.9120 Y76.3004 F300
G1 X67.8084 Y76.3958 F300
G1 X67.7134 Y76.4998 F300
G1 X67.6272 Y76.6122 F300
G1 X67.5491 Y76.7322 F300
G1 X67.4786 Y76.8590 F300
G1 X67.4162 Y76.9901 F300
G1 X67.3609 Y77.1247 F300
G1 X67.3124 Y77.2621 F300
G1 X67.2701 Y77.4012 F300
G1 X67.2222 Y77.5895 F300
G1 X67.1845 Y77.7731 F300
G1 X67.1555 Y77.9496 F300
G1 X67.1242 Y78.2103 F300
G1 X67.1075 Y78.4313 F300
G1 X67.0997 Y78.6354 F300
G1 X67.0988 Y78.7737 F300
G1 X67.1019 Y78.9040 F300
G1 X67.1019 Y90.4716 F300

; ===== Lift before moving to next line =====
G0 Z5 F1200
G0 X37.5612 Y107.8468 F1200
G0 Z0 F600
G1 X37.5612 Y38.1556 F300
G1 X67.1019 Y20.7804 F300
G1 X67.1337 Y66.6538 F300
G1 X67.1374 Y66.8004 F300
G1 X67.1456 Y66.9556 F300
G1 X67.1637 Y67.1840 F300
G1 X67.1913 Y67.4310 F300
G1 X67.2349 Y67.7208 F300
G1 X67.2720 Y67.9168 F300
G1 X67.3179 Y68.1198 F300
G1 X67.3736 Y68.3268 F300
G1 X67.4390 Y68.5306 F300
G1 X67.5149 Y68.7286 F300
G1 X67.6022 Y68.9181 F300
G1 X67.6772 Y69.0558 F300
G1 X67.7588 Y69.1843 F300
G1 X67.8474 Y69.3029 F300
G1 X67.9433 Y69.4108 F300
G1 X68.0487 Y69.5099 F300
G1 X68.1630 Y69.6011 F300
G1 X68.2854 Y69.6848 F300
G1 X68.4151 Y69.7616 F300
G1 X68.5947 Y69.8520 F300
G1 X68.7807 Y69.9305 F300
G1 X68.9706 Y69.9982 F300
G1 X69.1640 Y70.0563 F300
G1 X69.3527 Y70.1042 F300
G1 X69.5341 Y70.1430 F300
G1 X69.8025 Y70.1892 F300
G1 X70.0302 Y70.2187 F300
G1 X70.2406 Y70.2384 F300
G1 X70.3832 Y70.2475 F300
G1 X70.5177 Y70.2522 F300
G1 X82.1594 Y70.2522 F300

; ===== Next lines =====
G0 Z5 F1200
G0 X62.8845 Y88.2094 F1200
G0 Z0 F600
G1 X37.6565 Y73.1943 F300

G0 Z5 F1200
G0 X40.5933 Y71.5248 F1200
G0 Z0 F600
G1 X67.2713 Y55.5784 F300

G0 Z5 F1200
G0 X64.0143 Y53.7395 F1200
G0 Z0 F600
G1 X37.5136 Y38.0841 F300

; ===== End of work =====
G0 Z5 F1200
M104 S0        ; turn off heating
M84            ; disable motors

The resalt ⬇