Jump to content
Ultimaker Community of 3D Printing Experts
federicogiacomarra

3d Printing through G-code : "Converting" RepRap G-code to Ultimaker 2 G-code

Recommended Posts

Hi guys,

Few days ago I started looking at this amazing project, called silkworm :

http://projectsilkworm.com/

Essentially using Rhinoceros 3d + Grasshopper ( algorithmic modelling) you can "think" and model a 3d object directly through G-Code. 3d geometries can be converted in G-code and printed with a RepRap Prusa Mendel.

The output of this 3d modelling tool is therefore a gcode for a RepRap. I haven't tried yet to save the generated g-code on the sd to make a print test. Instead I tried to load the G-code with Cura, the result was similar to this :

https://ultimaker.com/en/community/view/6183-opening-external-gcode-in-cura-doesnt-work

I tried to open the file with PrintRun, and it seems it can read the g-code, but if I save it again of course it doesn't change anything...

opening the g-code with the editor it seems to have some substantial difference compared to the Cura generated G-code, maybe in the starting and ending part. I'm pretty sure there should be a way to edit this RepRap G-code and "convert" it to use it without any problem with the Ultimaker 2.

I already check the Marlin and reprap G-code wiki and github, but I can't see many differences...

Any advice or idea where to start to import it in Cura and print it in Uultimaker2 ?

here the reprap G-code i 'd like to use in Cura and Ultimaker2.

Many thanks!

 

 G28 ; home all axesM82 ; use absolute distances for extrusionG90 ; use absolute coordinatesG21 ; set units to millimetersG92 E0 ; reset extrusion distanceM104 S185 ; set temperatureM109 S185 ; wait for temperature to be reachedG1 Z0.0 F360 E1G92 E0G1  F7200 X103.08 Y68.22 Z1G1  F7200 X103.08 Y68.22 Z0G1 F360 E1.1G92 E0G1 F540 X131.08 Y68.22 Z0 E2.29G1 F540 X136.08 Y68.22 Z0 E2.69G1 F540 X136.08 Y73.22 Z0 E3.1G1 F540 X136.08 Y143.22 Z0 E8.82G1 F540 X136.08 Y148.22 Z0 E9.22G1 F540 X131.08 Y148.22 Z0 E9.63G1 F540 X61.08 Y148.22 Z0 E15.35G1 F540 X56.08 Y148.22 Z0 E15.76G1 F540 X56.08 Y143.22 Z0 E16.16G1 F540 X56.08 Y73.22 Z0 E21.88G1 F540 X56.08 Y68.22 Z0 E22.29G1 F540 X60.48 Y68.22 Z0 E22.64G1 F540 X103.08 Y68.88 Z0 E26.12G1 F540 X131.08 Y68.88 Z0 E28.41G1 F540 X135.42 Y68.88 Z0 E28.76G1 F540 X135.42 Y73.22 Z0 E29.12G1 F540 X135.42 Y143.22 Z0 E34.83G1 F540 X135.42 Y147.56 Z0 E35.19G1 F540 X131.08 Y147.56 Z0 E35.54G1 F540 X61.08 Y147.56 Z0 E41.25G1 F540 X56.74 Y147.56 Z0 E41.61G1 F540 X56.74 Y143.22 Z0 E41.96G1 F540 X56.74 Y73.22 Z0 E47.68G1 F540 X56.74 Y68.88 Z0 E48.03G1 F540 X60.48 Y68.88 Z0 E48.34G1 F540 X103.08 Y69.54 Z0 E51.81G1 F540 X131.08 Y69.54 Z0 E54.1G1 F540 X134.76 Y69.54 Z0 E54.4G1 F540 X134.76 Y73.22 Z0 E54.7G1 F540 X134.76 Y143.22 Z0 E60.42G1 F540 X134.76 Y146.9 Z0 E60.72G1 F540 X131.08 Y146.9 Z0 E61.02G1 F540 X61.08 Y146.9 Z0 E66.73G1 F540 X57.4 Y146.9 Z0 E67.03G1 F540 X57.4 Y143.22 Z0 E67.33G1 F540 X57.4 Y73.22 Z0 E73.05G1 F540 X57.4 Y69.54 Z0 E73.35G1 F540 X60.48 Y69.54 Z0 E73.6G1 F540 X103.08 Y70.2 Z0 E77.08G1 F540 X131.08 Y70.2 Z0 E79.36G1 F540 X134.1 Y70.2 Z0 E79.61G1 F540 X134.1 Y73.22 Z0 E79.85G1 F540 X134.1 Y143.22 Z0 E85.57G1 F540 X134.1 Y146.24 Z0 E85.82G1 F540 X131.08 Y146.24 Z0 E86.06G1 F540 X61.08 Y146.24 Z0 E91.78G1 F540 X58.06 Y146.24 Z0 E92.02G1 F540 X58.06 Y143.22 Z0 E92.27G1 F540 X58.06 Y73.22 Z0 E97.98G1 F540 X58.06 Y70.2 Z0 E98.23G1 F540 X60.48 Y70.2 Z0 E98.43G92 E0G1 F360 E-1G1  F7200 X60.48 Y70.2 Z1G92 E0G92 E0G1  F7200 X61.08 Y73.22 Z1G1  F7200 X61.08 Y73.22 Z0G1 F360 E1.1G92 E0G1 F540 X131.08 Y73.22 Z0 E5.71G1 F540 X131.08 Y143.22 Z0 E11.43G1 F540 X61.08 Y143.22 Z0 E17.14G1 F540 X61.08 Y73.22 Z0 E22.86G92 E0G1 F360 E-1G1  F7200 X61.08 Y73.22 Z1G92 E0G92 E0G1  F1800 X61.08 Y73.22 Z1G1  F1800 X61.08 Y73.22 Z0G1 F1800 E1.1G92 E0G1 F60 X61.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X61.08 Y73.22 Z1G1  F1800 X61.08 Y73.22 Z0G1 F1800 E5.1G92 E0G1 F60 X61.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X61.08 Y73.22 Z1G1  F1800 X61.08 Y73.22 Z0G1 F1800 E5.1G92 E0G1 F60 X61.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X61.08 Y73.22 Z1G1  F1800 X61.08 Y73.22 Z0G1 F1800 E5.1G92 E0G1 F60 X61.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y73.22 Z1G1  F1800 X131.08 Y73.22 Z0G1 F1800 E1.1G92 E0G1 F60 X131.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y73.22 Z1G1  F1800 X131.08 Y73.22 Z0G1 F1800 E5.1G92 E0G1 F60 X131.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y73.22 Z1G1  F1800 X131.08 Y73.22 Z0G1 F1800 E5.1G92 E0G1 F60 X131.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y73.22 Z1G1  F1800 X131.08 Y73.22 Z0G1 F1800 E5.1G92 E0G1 F60 X131.08 Y73.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y59.36 Z23.96G92 E0G92 E0G1  F1800 X61.08 Y143.22 Z1G1  F1800 X61.08 Y143.22 Z0G1 F1800 E1.1G92 E0G1 F60 X61.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y157.08 Z23.96G92 E0G92 E0G1  F1800 X61.08 Y143.22 Z1G1  F1800 X61.08 Y143.22 Z0G1 F1800 E5.1G92 E0G1 F60 X61.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y157.08 Z23.96G92 E0G92 E0G1  F1800 X61.08 Y143.22 Z1G1  F1800 X61.08 Y143.22 Z0G1 F1800 E5.1G92 E0G1 F60 X61.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y157.08 Z23.96G92 E0G92 E0G1  F1800 X61.08 Y143.22 Z1G1  F1800 X61.08 Y143.22 Z0G1 F1800 E5.1G92 E0G1 F60 X61.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X47.22 Y157.08 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y143.22 Z1G1  F1800 X131.08 Y143.22 Z0G1 F1800 E1.1G92 E0G1 F60 X131.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y157.08 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y143.22 Z1G1  F1800 X131.08 Y143.22 Z0G1 F1800 E5.1G92 E0G1 F60 X131.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y157.08 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y143.22 Z1G1  F1800 X131.08 Y143.22 Z0G1 F1800 E5.1G92 E0G1 F60 X131.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y157.08 Z23.96G92 E0G92 E0G1  F1800 X131.08 Y143.22 Z1G1  F1800 X131.08 Y143.22 Z0G1 F1800 E5.1G92 E0G1 F60 X131.08 Y143.22 Z20 E0.36G92 E0G1 F1800 E-5G1  F1800 X144.94 Y157.08 Z23.96G92 E0G92 E0G1  F7200 X61.08 Y73.22 Z21G1  F7200 X61.08 Y73.22 Z20G1 F360 E5.2G92 E0G1 F300 X131.08 Y73.22 Z20 E5.71G1 F300 X131.08 Y143.22 Z20 E11.43G1 F300 X61.08 Y143.22 Z20 E17.14G1 F300 X61.08 Y73.22 Z20 E22.86G92 E0G1 F-5 E-1G1  F7200 X61.08 Y73.22 Z21G92 E0G92 E0 ; reset extrusion distanceM104 S0 ; turn off temperatureG28 X0  ; home X axisM84     ; disable motors

 

Share this post


Link to post
Share on other sites

As you pointed out the generated gcode is missing UM2 characteristic start and end gcode. There must be a thread here on the forum, started by @Nicolinux iirc, about how to implement standard UM2 start procedure by RepRap gcode.

The UM2 might need volumetric RepRap gcode (I'm not sure about this because I always use UltiGCode on the UM2). From what you posted I think this GCODE uses rather filament lenth than filament volume for extrusion.

  • Like 1

Share this post


Link to post
Share on other sites

Hi thanks,

I found few interesting post as well talking about the start_gcode or prefix, from @DidierKlein and @Das_enginer...

https://ultimaker.com/en/community/view/6190-startgcode-for-um2-not-changing

https://ultimaker.com/en/community/view/7885-kisslicer-1407

I found also the start_gcoce and the end_gcode in the github of the gcode generetor:

https://github.com/ProjectSilkworm/Silkworm/blob/master/GeneratorComponent.cs

 

 //Add Custom Commands at Start               string header = Settings["start_gcode"];                              //Char[] splitChar = new Char[] {'\\','\n', 'n'};           string[] splitChar = new string[] { "\\n" };           string[] parts = header.Split(splitChar,StringSplitOptions.RemoveEmptyEntries);                          if (parts != null)               {                   for (int i = 0; i < parts.Length; i++)                   {                       sGCode.Add(new GH_String(parts[i]));                   }               }               else               {                   sGCode.Add(new GH_String(header));               }           if (int.Parse(Settings["absolute_extrudersteps"]) == 1) //if true use absolute distances for extrusion, otherwise use relative           {               sGCode.Add(new GH_String("M82 ; use absolute distances for extrusion"));            }                      sGCode.Add(new GH_String("G90 ; use absolute coordinates"));           sGCode.Add(new GH_String("G21 ; set units to millimeters"));           sGCode.Add(new GH_String("G92 E0 ; reset extrusion distance"));                      //Set Temperature           double temp = double.Parse(Settings["temperature"]);           sGCode.Add(new GH_String("M104 S" + temp + " ; set temperature"));           sGCode.Add(new GH_String("M109 S" + temp + " ; wait for temperature to be reached"));           //Extrude a bit of plastic before start           sGCode.Add(new GH_String("G1 Z0.0 F360 E1"));           #endregion                      for (int z = 0; z <= sMovements.GetUpperBound(0); z++)           {               foreach (SilkwormMovement movement in sMovements[z])               {                   sGCode.AddRange(movement.ToGCode());               }           }                                 #region FOOTER           sGCode.Add(new GH_String("G92 E0 ; reset extrusion distance"));                      //Add Custom Commands at End           string footer = Settings["end_gcode"];           string[] fparts = footer.Split(splitChar, StringSplitOptions.RemoveEmptyEntries);                      if (fparts != null)           {               for (int i = 0; i < fparts.Length; i++)               {                   sGCode.Add(new GH_String(fparts[i]));               }           }           else           {               sGCode.Add(new GH_String(footer));           }                          #endregion

 

the good news is that the Ultimaker 2 can read this gcode, tha bad one is that when i tried to print a test, the nozzle hitted the printind bed... basically the gcode override the machine settings...

What is the problem at this point? the g-code has a wrong z axis i can edit somehow or the g-code has a wrong "effect" on the um2 overriding the setting of the machine....

the example g-code above is this, a wireframe box lenght printing...If i can solve the problem of the nozzle hitting the printing bed i may be able to make a proper print test..

http://projectsilkworm.com/wp-content/uploads/2012/10/wireframe.jpg

Share this post


Link to post
Share on other sites

Regarding the nozzle hitting the bed:

The gcode is trying to print at Z0, so unless you have adjusted your limit switch to trip at least a minimum layer height above contact, that's an issue. It's much better to actually zero your bed for contact, or just shy, then print at a defined positive Z value.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!