<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hyrel3d.in/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Greg</id>
	<title>Hyrel3D - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://hyrel3d.in/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Greg"/>
	<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Special:Contributions/Greg"/>
	<updated>2026-04-13T19:09:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4926</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4926"/>
		<updated>2020-07-02T05:36:52Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.1 Spiral CW Arc1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! Main Sections&lt;br /&gt;
|-&lt;br /&gt;
| [[#What_is_GCode.3F | What is GCode?]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Understanding_the_T | Understanding the T]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Controlling_Movement | Controlling Movement]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Controlling_Temperature | Controlling Temperature]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Controlling_Material_Flow | Controlling Material Flow]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Controlling_Position_and_Offsets | Controlling Position and Offsets]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Controlling_Lasers_and_UV_Pens | Controlling Lasers and UV Pens]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Controlling_Spindles_and_Lathes | Controlling Spindles and Lathes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Reporting_and_Diagnostics | Reporting and Diagnostics]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Controlling_Aux_Devices | Controlling Aux Devices]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Other_Commands| Other Commands]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Codes in Black are supported on version 4 and above (v4+), and most likely on version 3 as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;Note: Codes in Orange are supported on version 5 and above (v5+) only.&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. &lt;br /&gt;
&lt;br /&gt;
Every button you press on the screen sends a gcode to the printer.&lt;br /&gt;
&lt;br /&gt;
When you start a job (by pressing &amp;quot;Print&amp;quot;), the settings from your head are sent to the printer (including flow and prime/unprime values); then the gcode file is sent, line by line, to the printer.&lt;br /&gt;
&lt;br /&gt;
All parameters are persistent, so once they are set, they will remain in place unless or until you (or the file) sends a new, updated value (including setting to 0).&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
The Table of Contents to the right lists the main categories of Gcodes.&lt;br /&gt;
&lt;br /&gt;
Below is a table listing them in numerical order (click '''Expand''' to expand):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+ Code_Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || 3-Space CW Spiral Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || 3-Space CCW Spiral Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| Yes || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116 Wait for Temps (v5+)|M116]] &lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;v5+ || &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;Pause for All Temps&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M660_Assign_Tool_Height_Offset|M660]] &lt;br /&gt;
| Yes || Set Tool Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M671_Activate_Danger_Lights|M671]] &lt;br /&gt;
| Yes || Activate Danger Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M675_Activate_Response_LEDs|M675]] &lt;br /&gt;
| Yes || Activate Response LEDs&lt;br /&gt;
|-&lt;br /&gt;
! [[#M676_Activate_Recirc._Fan|M676]] &lt;br /&gt;
| Yes || Activate Recirc. Fan&lt;br /&gt;
|-&lt;br /&gt;
! [[#M677_Activate_Buzzer|M677]] &lt;br /&gt;
| Yes || Activate Buzzer&lt;br /&gt;
|-&lt;br /&gt;
! [[#M678_Activate_Laser_X-hair|M678]] &lt;br /&gt;
| Yes || Activate Laser X-hair&lt;br /&gt;
|-&lt;br /&gt;
! [[#M679_Activate_Vacuum|M679]] &lt;br /&gt;
| Yes || Activate Vacuum&lt;br /&gt;
|-&lt;br /&gt;
! [[#M684_Activate_Exhaust|M684]] &lt;br /&gt;
| Yes || Activate Exhaust&lt;br /&gt;
|-&lt;br /&gt;
! [[#M685_Set_Power_on_Air|M685]] &lt;br /&gt;
| Yes || Activate Air&lt;br /&gt;
|-&lt;br /&gt;
! [[#M689_Activate_Ext._Head|M689]] &lt;br /&gt;
| Yes || Activate Ext. Head&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
A '''T Command''' changes which head has the focus of the motion controller and is executing the gcode. Each of our printers have at least four tool positions.&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Controlling Movement&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || 3-Space CW Spiral Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || 3-Space CCW Spiral Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position (X,Y,Z)&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt; by following an arc about the center point (X&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+I, Y&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out (after inward jump), 2 spiral out from current position&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  Unlike G2.1, G2.2 does not require a reverse code as the direction of spiral is determined by the positional relationship of the current position, final position, and center position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 move specifies a clockwise arc (or complete circle(s) from the current position to position (X,Y,Z)&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt; following a circular arc about the center point (X&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+I, Y&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+J, Z&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+K). Unlike G2, G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).   &lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Controlling Temperature&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116 Wait for Temps (v5+)|M116]] &lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;v5+ || &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;Pause for All Temps&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs); default: 100&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;W0&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
Note, this will FAIL (non-fatally) if you address a virtual group address;  be sure to use an actual physical address.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''W0''' if present, will set the temp and advance to the next line without pause, but upon executing M116, will pause until temp is reached&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''Example 7'''&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;M109 T# S240 W0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''M109''' (wait for temp) &lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''T#''' (target head)&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''S240''' (and set temp to 240°C)&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''W0''' (but do not pause until M116 is executed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;M116 Wait for Temps (v5+)&amp;lt;/span&amp;gt; ===&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;M116 is supported with version 5.x and later (v5+) of Repetrel Software and Motion Controller Firmware.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;M116 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'none'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''Example'''&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;M116&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;'''M116''' (wait for any set temps (M109, M190, M191) with '''W0''' values before proceding&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
Note, this will FAIL (non-fatally) if you address a virtual group address;  be sure to use an actual physical address.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
Note, this will FAIL (non-fatally) if you address a virtual group address;  be sure to use an actual physical address.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Controlling Material Flow&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer ''for printing moves, but we will always use the prime/unprime settings on the head for advancing and retracting when transitioning between printing and non-printing moves.'' This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Controlling Position and Offsets&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Set Offsets''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M660_Assign_Tool_Height_Offset|M660]] &lt;br /&gt;
| Yes || Set Tool Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702-4]] &lt;br /&gt;
| Yes || Cloning Heads&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkorange;&amp;quot;&amp;gt;Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Controlling Lasers and UV Pens&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|--&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [[#Laser_Examples|Laser Examples]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | [[#UV_Pen_Examples|UV Pen Examples]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Controlling Spindles and Lathes&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Reporting and Diagnostics&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|- || Activate Danger Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Gantry / Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Gantry / Y-arm State ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Gantry / Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Aux Devices''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Controlling Aux Devices&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M671_Activate_Danger_Lights|M671]] &lt;br /&gt;
| Yes || Activate Danger Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M675_Activate_Response_LEDs|M675]] &lt;br /&gt;
| Yes || Activate Response LEDs&lt;br /&gt;
|-&lt;br /&gt;
! [[#M676_Activate_Recirc._Fan|M676]] &lt;br /&gt;
| Yes || Activate Recirc. Fan&lt;br /&gt;
|-&lt;br /&gt;
! [[#M677_Activate_Buzzer|M677]] &lt;br /&gt;
| Yes || Activate Buzzer&lt;br /&gt;
|-&lt;br /&gt;
! [[#M678_Activate_Laser_X-hair|M678]] &lt;br /&gt;
| Yes || Activate Laser X-hair&lt;br /&gt;
|-&lt;br /&gt;
! [[#M679_Activate_Vacuum|M679]] &lt;br /&gt;
| Yes || Activate Vacuum&lt;br /&gt;
|-&lt;br /&gt;
! [[#M684_Activate_Exhaust|M684]] &lt;br /&gt;
| Yes || Activate Exhaust&lt;br /&gt;
|-&lt;br /&gt;
! [[#M685_Set_Power_on_Air|M685]] &lt;br /&gt;
| Yes || Activate Air&lt;br /&gt;
|-&lt;br /&gt;
! [[#M689_Activate_Ext._Head|M689]] &lt;br /&gt;
| Yes || Activate Ext. Head&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Individual port control commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Activate Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to the port associated with &amp;quot;Mist Coolant&amp;quot;, which we sometimes call Aux1. With no parameters, it is read as M7 S100 (on continuously). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M7 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux1 value) &lt;br /&gt;
** '''S21100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux1 value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M7 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux1 value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Activate Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to the port associated with &amp;quot;Flood Coolant&amp;quot;, which we sometimes call Aux2. With no parameters, it is read as M8 S100 (on continuously). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M8 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux2 value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux2 value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M8 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux2 value) &lt;br /&gt;
** '''S''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Deactivate Aux1 &amp;amp; Aux2 ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both Aux1 and Aux2. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M620 Activate Emitter  ===&lt;br /&gt;
&lt;br /&gt;
See [[#M620_Enable_Device]] above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Activate Gantry / Y-Arm ===&lt;br /&gt;
&lt;br /&gt;
M670 sends 12VDC to the port associated turning on the Gantry (16A) or Y-arm (30M, ESR) lights.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (Gantry / Y-arm value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (Gantry / Y-arm value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M670 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (Gantry / Y-arm value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M671 Activate Danger Lights ===&lt;br /&gt;
&lt;br /&gt;
M671 sends 12VDC to the port associated turning on the X-arm / Danger lights (30M/ESR only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M671 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M671 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M671''' (X-arm / Danger value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M671 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M671''' (X-arm / Danger value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M671 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M671''' (X-arm / Danger value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M675 Activate Response LEDs ===&lt;br /&gt;
&lt;br /&gt;
M675 sends 12VDC to the port associated turning on the Response LEDs (30M/16A only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M675 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M675 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M675''' (Response LEDs value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M675 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M675''' (Response LEDs value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M675 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M675''' (Response LEDs value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M676 Activate Recirc. Fan ===&lt;br /&gt;
&lt;br /&gt;
M676 sends 12VDC to the port associated turning on the Recirc. Fan (16A only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M676 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M676 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M676''' (Recirc. Fan value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M676 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M676''' (Recirc. Fan value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M676 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M676''' (Recirc. Fan value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M677 Activate Buzzer ===&lt;br /&gt;
&lt;br /&gt;
M677 sends 12VDC to the port associated turning on the Buzzer (older 30Ms only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M677 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M677 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M677''' (Buzzer value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M677 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M677''' (Buzzer value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M677 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M677''' (Buzzer value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M678 Activate Laser X-hair ===&lt;br /&gt;
&lt;br /&gt;
M678 sends 12VDC to the port associated turning on the Laser X-hair (16A with CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; lasers only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M678 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M678 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M678''' (Laser X-hair value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M678 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M678''' (Laser X-hair value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M678 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M678''' (Laser X-hair value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M679 Activate Vacuum ===&lt;br /&gt;
&lt;br /&gt;
M679 sends 12VDC to the port associated turning on the Vacuum (30M/ESR only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M671 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M679 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M679''' (Vacuum value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M679 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M679''' (Vacuum value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M679 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M679''' (Vacuum value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M684 Activate Exhaust ===&lt;br /&gt;
&lt;br /&gt;
M671 sends 12VDC to the port associated turning on the Exhaust (16A only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M684 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M684 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M684''' (Exhaust value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M684 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M684''' (Exhaust value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M684 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M684''' (Exhaust value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M685 Set Power on Air  ===&lt;br /&gt;
&lt;br /&gt;
M685 sends 12VDC to the port associated turning on the (positive pressure) Air (16A only).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M685 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M685 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M685''' (Air value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M685 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M685''' Air value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M685 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M685''' (Air value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M689 Activate Ext. Head  ===&lt;br /&gt;
&lt;br /&gt;
M689 sends 12VDC to the port associated turning on the Ext. Head.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M689 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100; no default - if no Sn, no change)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M689 S100&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M689''' (Ext. Head value) &lt;br /&gt;
** '''S100''' (set to 100%)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M689 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M689''' (Ext. Head value) &lt;br /&gt;
** '''S25''' (set to 25%)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M689 S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M689''' (Ext. Head value) &lt;br /&gt;
** '''S0''' (set to 0%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other Commands''' ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Other Commands&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G53), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4506</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4506"/>
		<updated>2020-05-14T17:11:30Z</updated>

		<summary type="html">&lt;p&gt;Greg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position (X,Y,Z)&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt; by following an arc about the center point (X&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+I, Y&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  Unlike G2.1, G2.2 does not require a reverse code as the direction of spiral is determined by the positional relationship of the current position, final position, and center position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 move specifies a clockwise arc (or complete circle(s) from the current position to position (X,Y,Z)&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt; following a circular arc about the center point (X&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+I, Y&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+J, Z&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+K). Unlike G2, G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).   &lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4505</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4505"/>
		<updated>2020-05-14T17:10:08Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.3 3-Space CW Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  Unlike G2.1, G2.2 does not require a reverse code as the direction of spiral is determined by the positional relationship of the current position, final position, and center position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 move specifies a clockwise arc (or complete circle(s) from the current position to position (X,Y,Z)&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt; following a circular arc about the center point (X&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+I, Y&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+J, Z&amp;lt;sub&amp;gt;curr&amp;lt;/sub&amp;gt;+K). Unlike G2, G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).   &lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=T_v5&amp;diff=4502</id>
		<title>T v5</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=T_v5&amp;diff=4502"/>
		<updated>2020-05-14T16:27:42Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* Overall */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Understanding the T on versions 5 and later (the enlightenment).&lt;br /&gt;
&lt;br /&gt;
== The T ==&lt;br /&gt;
&lt;br /&gt;
With the release of Repetrel v5, we are happy to announce that the means of addressing heads for '''T Commands''' and '''T Variables within M Commands''' has been unified. Finally, T0 ''always'' means the first head on the first yoke, regardless of how or why we are referring to it.&lt;br /&gt;
&lt;br /&gt;
=== '''Chart of  Addresses''' ===&lt;br /&gt;
&lt;br /&gt;
Below are details of addressing for each tool position on our printers. These are explained by model with images below.&lt;br /&gt;
&lt;br /&gt;
==== Overall ====&lt;br /&gt;
&lt;br /&gt;
While most units come with four or five physical tool positions, and one extra yoke gives a 16A a total of ten positions, we have the ability to control up to 20 tool positions or &amp;quot;heads&amp;quot;, organized in four banks (or yokes) of five each.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%; text-align: center;&amp;quot;&lt;br /&gt;
|+ Device Addresses - Individual Physical Heads&lt;br /&gt;
! Yoke&lt;br /&gt;
! Pos 1&lt;br /&gt;
! Pos 2&lt;br /&gt;
! Pos 3&lt;br /&gt;
! Pos 4&lt;br /&gt;
! Pos 5&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0''' || &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1''' || &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2''' || &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;'''T3''' || &amp;lt;span style=&amp;quot;color: limegreen;&amp;quot;&amp;gt;'''T4'''&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: firebrick;&amp;quot;&amp;gt;'''T5''' || &amp;lt;span style=&amp;quot;color: darkorchid;&amp;quot;&amp;gt;'''T6''' || &amp;lt;span style=&amp;quot;color: navy;&amp;quot;&amp;gt;'''T7''' || &amp;lt;span style=&amp;quot;color: tomato;&amp;quot;&amp;gt;'''T8''' || &amp;lt;span style=&amp;quot;color: forestgreen;&amp;quot;&amp;gt;'''T9'''&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| '''T10''' || '''T11''' || '''T12''' || '''T13''' || '''T14'''&lt;br /&gt;
|-&lt;br /&gt;
! 4&lt;br /&gt;
| '''T15''' || '''T16''' || '''T17''' || '''T18''' || '''T19'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally, there are special devices, heads, beds, virtual devices, and addresses for actual or virtual groups of devices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Special Physical Device Addresses&lt;br /&gt;
! T#&lt;br /&gt;
! Device&lt;br /&gt;
|-&lt;br /&gt;
| '''T20''' || 3-Phase Spindle&lt;br /&gt;
|-&lt;br /&gt;
| '''T21''' || CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; Laser&lt;br /&gt;
|-&lt;br /&gt;
| '''T22''' || Aux1&lt;br /&gt;
|-&lt;br /&gt;
| '''T23''' || Aux2&lt;br /&gt;
|-&lt;br /&gt;
| '''T24''' || Bed1 / Chamber1&lt;br /&gt;
|-&lt;br /&gt;
| '''T25''' || Bed2 / Chamber2&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Logical/Vurtual Device Addresses&lt;br /&gt;
! T#&lt;br /&gt;
! Device&lt;br /&gt;
|-&lt;br /&gt;
| '''T30 - T39''' || Virtual Heads / Groups / Squads&lt;br /&gt;
|-&lt;br /&gt;
| '''T40''' || ALL DEVICES&lt;br /&gt;
|-&lt;br /&gt;
| '''T41''' || Yoke 1, all Heads&lt;br /&gt;
|-&lt;br /&gt;
| '''T42''' || Yoke 2, all Heads&lt;br /&gt;
|-&lt;br /&gt;
| '''T43''' || Yoke 3, all Heads&lt;br /&gt;
|-&lt;br /&gt;
| '''T44''' || Yoke 4, all Heads&lt;br /&gt;
|-&lt;br /&gt;
| '''T45''' || All Aux devices&lt;br /&gt;
|-&lt;br /&gt;
| '''T46''' || All Beds / Chambers&lt;br /&gt;
|-&lt;br /&gt;
| '''T47''' || All non-Bed / non-Chamber devices&lt;br /&gt;
|-&lt;br /&gt;
| '''T48''' || All Virtual devices (T30-T39)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Using the T with the ESR and 30M ====&lt;br /&gt;
&lt;br /&gt;
The Engine, Standard Resolution and the System 30M use the following configuration.&lt;br /&gt;
&lt;br /&gt;
Note: some very, very early models had two slots on the left and two on the right, but counting available tool positions from the left, the positions are the same.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 65%; text-align: center;&amp;quot;&lt;br /&gt;
|+ T Designations for the ESR and 30M&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%;&amp;quot; | Yoke&amp;lt;br&amp;gt;Image&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| [[File:YokePCA.png|675px]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1st Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | No Slot&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;2nd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;3rd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;4th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Designation&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| '''N/A'''&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;'''T3'''&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| '''T41'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Using the T with the EHR and 16A (Single Yoke) ====&lt;br /&gt;
&lt;br /&gt;
The Engine, High Resolution and the single-yoke Hydra 16A use the following configuration.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 65%; text-align: center;&amp;quot;&lt;br /&gt;
|+ T Designations for the EHR and 16A (Single Yoke)&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 20%;&amp;quot; | Yoke&amp;lt;br&amp;gt;Image&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| [[File:YokePCA.png|675px]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1st Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;2nd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;3rd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;4th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | &amp;lt;span style=&amp;quot;color: limegreen;&amp;quot;&amp;gt;5th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Desingation&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;'''T3'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: limegreen;&amp;quot;&amp;gt;'''T4'''&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| '''T41'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Using the T with the 16A (Dual Yoke) ====&lt;br /&gt;
&lt;br /&gt;
Current dual-yoke Hydra 16A units use the following configuration.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 80%; text-align: center;&amp;quot;&lt;br /&gt;
|+ T Commands and Variables for the Current 16A (Dual Yoke)&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | Yoke&amp;lt;br&amp;gt;Image&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| [[File:YokePCA.png|500px]]&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| [[File:YokePCA.png|500px]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;1st Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;2nd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;3rd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;4th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: limegreen;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;5th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: firebrick;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;1st Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: darkorchid;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;2nd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: navy;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;3rd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: tomato;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;4th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: forestgreen;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;5th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Designation&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;'''T3'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: limegreen;&amp;quot;&amp;gt;'''T4'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: firebrick;&amp;quot;&amp;gt;'''T5'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: darkorchid;&amp;quot;&amp;gt;'''T6'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: navy;&amp;quot;&amp;gt;'''T7'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: tomato;&amp;quot;&amp;gt;'''T8'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: forestgreen;&amp;quot;&amp;gt;'''T9'''&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| '''T41'''&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| '''T42'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you opt for a three- or four-yoke unit, the additional yokes would be added to the right.&lt;br /&gt;
&lt;br /&gt;
Earlier dual-yoke Hydra 16A units use the following configuration, but can be easily upgraded to the new standard.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 80%; text-align: center;&amp;quot;&lt;br /&gt;
|+ T Commands and Variables for the Older 16A (Dual Yoke)&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | Yoke&amp;lt;br&amp;gt;Image&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| [[File:YokePCA.png|500px]]&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| [[File:YokePCA.png|500px]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: firebrick;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;1st Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: darkorchid;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;2nd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: navy;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;3rd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: tomato;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;4th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: forestgreen;&amp;quot;&amp;gt;2nd Yoke,&amp;lt;br&amp;gt;5th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;1st Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;2nd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;3rd Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;4th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
! style=&amp;quot;width: 8%;&amp;quot; | &amp;lt;span style=&amp;quot;color: limegreen;&amp;quot;&amp;gt;1st Yoke,&amp;lt;br&amp;gt;5th Slot&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Designation&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: firebrick;&amp;quot;&amp;gt;'''T5'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: darkorchid;&amp;quot;&amp;gt;'''T6'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: navy;&amp;quot;&amp;gt;'''T7'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: tomato;&amp;quot;&amp;gt;'''T8'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: forestgreen;&amp;quot;&amp;gt;'''T9'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;'''T3'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: limegreen;&amp;quot;&amp;gt;'''T4'''&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| '''T42'''&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; colspan=&amp;quot;5&amp;quot;| '''T41'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Default Mode ===&lt;br /&gt;
&lt;br /&gt;
By default, when you start a job (click the &amp;quot;Print&amp;quot; button), Repetrel will scan the yoke(s), detecting heads serially from left to right, registering which head is in which slot, and &amp;quot;focus&amp;quot; on the first head it detects. Many users only print with one head and use gcode that does not explicitly direct commands to any particular head. The effect of this is that the gcode will be executed with the only head loaded, regardless of what slot it is in. However, you do have the option - and, when printing with multiple heads, the requirement - to explicitly direct Repetrel's &amp;quot;focus&amp;quot; to a particular head, either for the entire job, or changing &amp;quot;focus&amp;quot; to different heads at different times.&lt;br /&gt;
&lt;br /&gt;
'''At the start of the job, Repetrel sends the head-specific data to the motion controller; this is done behind the scenes, but if you enable XMIT echoing on the Interface/COM tab, you can see what gets sent.''' Additionally, the header and gcode together are written to &amp;lt;code&amp;gt;C:\PrintHistory\HyrelPrintFile.gocde&amp;lt;/code&amp;gt; - and ''this'' is the file you should send us for help toubleshooting.&lt;br /&gt;
&lt;br /&gt;
==== One Head Loaded ====&lt;br /&gt;
&lt;br /&gt;
In the following example, I have one MK1-250 head loaded in the first slot on the left, slot 1 - now designated '''T0''' for all uses:&lt;br /&gt;
&lt;br /&gt;
  M6 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt; O1 X0 Y0 Z0&lt;br /&gt;
  M721 S10000 E100 P-15 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt;&lt;br /&gt;
  M722 S10000 E100 P20 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt;&lt;br /&gt;
  M221 S1.0 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt; P77 W0.5 Z0.3&lt;br /&gt;
  M728 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0'''&amp;lt;/span&amp;gt; S0&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0''' (far left slot) &amp;lt;/span&amp;gt; &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X0''' (offsets in X)&lt;br /&gt;
** '''Y0''' (offsets in Y)&lt;br /&gt;
** '''Z0''' (offsets in Z)&lt;br /&gt;
* '''M721''' (Set Unprime Values)  &lt;br /&gt;
** '''S10000''' (10,000 pps)  &lt;br /&gt;
** '''E100''' (100 pulses)  &lt;br /&gt;
** '''P-15''' (15ms before end of print move sequence)  &lt;br /&gt;
** &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0''' (for far left head)&amp;lt;/span&amp;gt;&lt;br /&gt;
* '''M722''' (Set Prime Values)  &lt;br /&gt;
** '''S10000''' (10,000 pps)  &lt;br /&gt;
** '''E100''' (100 pulses)  &lt;br /&gt;
** '''P20''' (20ms before start of print move sequence)  &lt;br /&gt;
** &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0''' (for far left head) &amp;lt;/span&amp;gt;&lt;br /&gt;
* '''M221''' (Set Flow Rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0''' (for far left head) &amp;lt;/span&amp;gt;&lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode M756 will overwrite this value)&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0''' (far left slot)&amp;lt;/span&amp;gt;&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&lt;br /&gt;
See the entries for these commands, below, for more details.&lt;br /&gt;
&lt;br /&gt;
==== Two Heads Loaded ====&lt;br /&gt;
&lt;br /&gt;
In the following example, I have one MK1-250 head loaded in &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;the second slot from the left, slot 2 - now designated '''T1''' for all uses&amp;lt;/span&amp;gt;, and one SDS-05 head loaded in &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;the third slot from the left, slot 3 - now designated '''T2''' for all uses&amp;lt;/span&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
  M6 &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt; O2 X0 Y0 Z0&lt;br /&gt;
  M721 S10000 E100 P-15 &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt;&lt;br /&gt;
  M722 S10000 E100 P20 &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt;&lt;br /&gt;
  M221 S1.0 &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt; P77 W0.5 Z0.3&lt;br /&gt;
  M728 &amp;lt;span style=&amp;quot;color: magenta;&amp;quot;&amp;gt;'''T1'''&amp;lt;/span&amp;gt; S0&lt;br /&gt;
  M6 &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt; O3 X0 Y0 Z0&lt;br /&gt;
  M721 S10000 E160 P-100 &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
  M722 S10000 E200 P100 &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
  M221 S1.0 &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt; P81.0 W1.6 Z0.3&lt;br /&gt;
  M728 &amp;lt;span style=&amp;quot;color: royalblue;&amp;quot;&amp;gt;'''T2'''&amp;lt;/span&amp;gt; S0&lt;br /&gt;
&lt;br /&gt;
See above for full details.&lt;br /&gt;
&lt;br /&gt;
=== Explicit Mode ===&lt;br /&gt;
&lt;br /&gt;
Although we don't generally recommend keeping heads loaded if they will be unused on the current job, you might want to do this. At the beginning of your gcode, force focus with a '''T''' command in the gcode before your first print move. We recommend doing this before any movements, in case your head will collide with the bed without the offset. A simple '''T1''' (or for whichever head you want focused on) will accomplish this.&lt;br /&gt;
&lt;br /&gt;
If you are printing with two heads (for two stl files from different heads, or if you want infill or support from a different head than the one printing perimeters), the slicer will generate '''T''' commands where needed.&lt;br /&gt;
&lt;br /&gt;
If you are doing a clone/parallel/slave print (two heads executing the same code at the same time), see the M703 entry, below, for more details.&lt;br /&gt;
&lt;br /&gt;
Here are some examples:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;T0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;'''T0''' (Switch to far left head, and invoke all flow, prime, unprime, and offset parameters) &amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;T3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;'''T3''' (Switch to fourth head from the left, and invoke all flow, prime, unprime, and offset parameters) &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Messages ===&lt;br /&gt;
&lt;br /&gt;
So, in an effort to conform with standard CNC gcode practices, we now check which heads are called out with '''T''' commands in your gcode when it is loaded or refreshed, and we compare that with which tool positions on the yoke actually have heads. If there is any mismatch, warning message popups will appear.&lt;br /&gt;
&lt;br /&gt;
If you have your heads called out in your gcode and the same tool positions loaded with heads, you will not see these warnings.&lt;br /&gt;
&lt;br /&gt;
== Gcodes ==&lt;br /&gt;
&lt;br /&gt;
=== M702 Establish Clone Squad ===&lt;br /&gt;
&lt;br /&gt;
M702 establishes a &amp;quot;Clone Squad&amp;quot; - a group of heads that will perform the same exact (extrusion) commands.&lt;br /&gt;
&lt;br /&gt;
Note that an '''M30''' decommissions any clone squads that were in effect.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M702 T# S#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the head from which flow (pulse/prime/etc) settings will be copied and applied to the group; this head does not need to be in the group &lt;br /&gt;
  '''S#''' is the clone squad number designation and ''must be in the range '''30 - 39''' ''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M702 T# S#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M702''' (establish clone squad) &lt;br /&gt;
** '''T#''' (using flow values from target head)&lt;br /&gt;
** '''S#''' (designate squad number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M703 Add to Clone Squad ===&lt;br /&gt;
&lt;br /&gt;
M703 adds a single head to the Clone Squad we established with an M702. Use this command multiple times to add multiple heads to the squad.&lt;br /&gt;
&lt;br /&gt;
Alternately, M703 can be used to simply clone one head to another (as with v4).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M703 T# S#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head to add to the squad&lt;br /&gt;
  '''S#''' is the clone squad number designation and must be in the range 30 - 39&lt;br /&gt;
      '''OR'''&lt;br /&gt;
  '''T#''' is the head which will duplicate commands sent to S#&lt;br /&gt;
  '''S#''' is the head which T# will duplicate&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M703 T# S#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M703''' (add to clone squad) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S#''' (clone squad to join)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M703 T# S#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M703''' (duplicate head actions) &lt;br /&gt;
** '''T#''' (head on which to immitate head S# actions)&lt;br /&gt;
** '''S#''' (head which T# will immitate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M704 Remove from Clone Squad ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
M704 removes a single head to the Clone Squad we established with an M702 and loaded with one or more M703s. Use this command multiple times to remove multiple heads from the squad. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M704 T# S#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head to remove from the squad &lt;br /&gt;
  '''S#''' is the clone squad number designation and must be in the range 30 - 39&lt;br /&gt;
     '''OR'''&lt;br /&gt;
  '''T#''' is the head which will stop duplicating commands sent to S#&lt;br /&gt;
  '''S#''' is the head (which T# will stop duplicating)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M704 T# S#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M704''' (remove from clone squad) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S#''' (target clone squad)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M704 T# S#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M704''' (stop duplication) &lt;br /&gt;
** '''T#''' (head to stop immitating S#)&lt;br /&gt;
** '''S#''' (head which T# will stop immitating)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4501</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4501"/>
		<updated>2020-05-14T16:21:05Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.3 3-Space CW Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  Unlike G2.1, G2.2 does not require a reverse code as the direction of spiral is determined by the positional relationship of the current position, final position, and center position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 move specifies a clockwise arc (or complete circle(s) from the current position to position X,Y,Z following a circular arc about the center point (X{{su|b=curr}}+I, Y{{sub|curr}}+J, Z+K). Unlike G2, G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).   &lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4499</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4499"/>
		<updated>2020-05-14T16:14:49Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.3 3-Space CW Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  Unlike G2.1, G2.2 does not require a reverse code as the direction of spiral is determined by the positional relationship of the current position, final position, and center position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 move specifies a clockwise arc (or complete circle(s) from the current position to position X,Y,Z following a circular arc about the center point (X{{sub|curr}}+I, Y+J, Z+K). Unlike G2, G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).   &lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 [ Sn | Pn ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4498</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4498"/>
		<updated>2020-05-14T16:11:41Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.3 3-Space CW Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  Unlike G2.1, G2.2 does not require a reverse code as the direction of spiral is determined by the positional relationship of the current position, final position, and center position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 move specifies a clockwise arc (or complete circle(s) from the current position to position X,Y,Z following a circular arc about the center point (currX+I, currY+J, currZ+K). Unlike G2, G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  &lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 [ Sn | Pn ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4497</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4497"/>
		<updated>2020-05-14T16:00:58Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.2 Spiral CW Arc2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  Unlike G2.1, G2.2 does not require a reverse code as the direction of spiral is determined by the positional relationship of the current position, final position, and center position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 makes a spiral circular move (only supports full 360 arcs, or N * 360). Unlike G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 [ Sn | Pn ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4496</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4496"/>
		<updated>2020-05-14T15:56:48Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.1 Spiral CW Arc1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or '''Ln''' * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or N * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 makes a spiral circular move (only supports full 360 arcs, or N * 360). Unlike G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 [ Sn | Pn ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4495</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4495"/>
		<updated>2020-05-14T15:53:00Z</updated>

		<summary type="html">&lt;p&gt;Greg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or N * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or N * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 makes a spiral circular move (only supports full 360 arcs, or N * 360). Unlike G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Kn''' is the '''''relative''''' distance from the current Z position to the center position about which to arc (default 0)&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 [ Sn | Pn ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4493</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4493"/>
		<updated>2020-05-14T05:45:54Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2 Clockwise Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn Zn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated)&lt;br /&gt;
  '''In''' is the '''''relative''''' distance from the current X position to the center position about which to arc&lt;br /&gt;
  '''Jn''' is the '''''relative''''' distance from the current Y position to the center position about which to arc&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (nozzle diameter, layer thickness, and feed rate); if you are editing a G2 move into a file running M229 E1 D1 (using E values), we will resume operating in that mode after this element.&lt;br /&gt;
&lt;br /&gt;
OR &lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (based on nozzle diameter, layer thickness, and feed rate) even if your gcode has enabled the use of E values with M229 E1 D1.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs, or N * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' X position of the center about which to arc&lt;br /&gt;
  '''Jn''' is the '''''relative''''' Y position of the center about which to arc&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (required)&lt;br /&gt;
  '''Ln''' is the number of laps to complete (must be a positive integer; you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in (default), 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (nozzle diameter, layer thickness, and feed rate); if you are editing a G2.1 move into a file running M229 E1 D1 (using E values), we will resume operating in that mode after this element.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 I15 J20 P1.2 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''P1.2''' (1.2 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (use default R of 0, spiral in toward center from current location)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.1 Z10 I15 J20 P0.5 L50 E1 S9 R1 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.1''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''P0.5''' (0.5 mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''R1''' (spiral out from center to current location)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.1 I25 J0 P4 L3 E1        ; spiral in 3 laps, 4mm pitch &lt;br /&gt;
  G1 X14 E1                   ; add connector for the arcs&lt;br /&gt;
  G2.1 I11 J0 P4 L3 E1 R2     ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.2 makes a spiral circular move (only supports full 360 arcs, or N * 360). Unlike G2.1, G2.2 specifies final X/Y (and Z) location An end Z can be supplied to have a uniform displacement during the move. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Xn Yn Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to end at (optional and usually not stipulated; will be relative or absolute, depending on current mode)&lt;br /&gt;
  '''In''' is the '''''relative''''' X position of the center about which to arc&lt;br /&gt;
  '''Jn''' is the '''''relative''''' Y position of the center about which to arc&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are) in mm (optional)&lt;br /&gt;
  '''Ln''' is the number of laps (or paths) to complete (you don't need to finish the spiral)&lt;br /&gt;
    ''Note, if P and L values conflict, L will be modified to match what P will allow; at least one must be specified&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (nozzle diameter, layer thickness, and feed rate); if you are editing a G2.2 move into a file running M229 E1 D1 (using E values), we will resume operating in that mode after this element.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 I15 J20 P1 E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (1mm between centers of travel of adjacent laps)&lt;br /&gt;
** (complete all laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (use default S of 0.33333 mm segments)&lt;br /&gt;
** (moving at established G1 F speed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  G2.2 Z10 I15 J20 P2 L50 E1 S9 F1200&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2.2''' (working speed clockwise spiral move from the current location) &lt;br /&gt;
** '''Z10''' (change Z position incrementally during move to end at Z10 (relative or absolute, depending on current mode))&lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''P2''' (2mm between centers of travel of adjacent laps)&lt;br /&gt;
** '''L50''' (complete no more than 50 laps)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''S9''' (each 360 degrees composted of a total of 9 segments)&lt;br /&gt;
** '''F1200''' (at a speed of 1200 mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  G0 X0 Y25                   ; start location for outer spiral&lt;br /&gt;
  G0 Z1                       ; go to print layer height&lt;br /&gt;
  G2.2 X12 I25 P4 E1          ; spiral in 3 laps, 4mm pitch&lt;br /&gt;
  G1 X14 E1                   ; add connector to next spiral&lt;br /&gt;
  G2.2 X2 I11 P4 E1           ; spiral out 3 laps, 4mm pitch&lt;br /&gt;
&lt;br /&gt;
This gcode also generates the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Spiral.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2.3 makes a spiral circular move (only supports full 360 arcs, or N * 360). Unlike G2.1 and G2.2, G2.3 is not bound to the X/Y plane. The number of full 360 arcs can be specified as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation of frog toes without having to jump over the frog toe once it's made. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2.3 Xn Yn Zn An Bn In Jn Kn Un Vn Wn Dn Pn En Sn Fn&lt;br /&gt;
&lt;br /&gt;
Note: If we are in G16 mode, Un, Vn, Wn define the vector normal to the work plane. If we are in G17 (X/Y plane) or G18 (X/Z plane) or G19 (Y/Z plane) mode, these are ignored.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to end at&lt;br /&gt;
  '''Yn''' is the new Y position to end at&lt;br /&gt;
  '''Zn''' is the new Z position to end at&lt;br /&gt;
  '''An''' is the new A position to end at (4th axis)&lt;br /&gt;
  '''Bn''' is the new B position to end at (5th axis)&lt;br /&gt;
  '''In''' is the '''''relative''''' X position of the center about which to arc&lt;br /&gt;
  '''Jn''' is the '''''relative''''' Y position of the center about which to arc&lt;br /&gt;
  '''Kn''' is the '''''relative''''' Z position of the center about which to arc&lt;br /&gt;
  '''Un''' is the X component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Vn''' is the Y component of a vector normal to the working plane (default 0) &lt;br /&gt;
  '''Wn''' is the Z component of a vector normal to the working plane (default 0)&lt;br /&gt;
  '''Dn''' is the overall displacement normal to the working plane for this element&lt;br /&gt;
  '''Pn''' is the pitch (how close the laps are normal to the working plane) in mm (default 0; one path, no incremental displacement)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. We will print this element with our native Hyrel flow calculations (nozzle diameter, layer thickness, and feed rate); if you are editing a G2.2 move into a file running M229 E1 D1 (using E values), we will resume operating in that mode after this element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.1, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2.3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 [ Sn | Pn ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4448</id>
		<title>Gcode</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Gcode&amp;diff=4448"/>
		<updated>2020-05-13T18:57:15Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* G2.1 Spiral CW Arc1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HowTo]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What is GCode? ==&lt;br /&gt;
&lt;br /&gt;
'''Everything your Hyrel 3D Printer does is done by executing GCode''', whether you are aware of it or not. While most of it is specified in your gcode file, some of it is sent to the printer before the file is executed; this includes setting flow rates, prime/unprime (advance/retract) settings, and default speeds.&lt;br /&gt;
&lt;br /&gt;
Please note that there are many flavors of gcode, and while most have the same (or very similar) G0-G100 and M0-M100, codes above 100 are largely nonstandard.&lt;br /&gt;
&lt;br /&gt;
''It is important to remember that different variable letters can have different meanings, depending on the G- or M- code being used'' - '''''especially the T value.'''''&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a '''[[#Chart_of_Codes|chart]]''' with all these codes ordered numerically.&lt;br /&gt;
&lt;br /&gt;
Below, I will explain those gcodes about which we get the most questions.&lt;br /&gt;
&lt;br /&gt;
== '''Understanding the T''' ==&lt;br /&gt;
&lt;br /&gt;
The use of T commands and variables changes greatly (for the better) with the jump to version 5 from the previous versions.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v4]]''' for the old way (v4 and earlier), where the nomenclature for '''T Commands''' and the '''T Variables''' were not the same.&lt;br /&gt;
&lt;br /&gt;
Please see '''[[T_v5]]''' for the new way (v5 and later), where the nomenclature for '''T Commands''' and the '''T Variables''' are the same.&lt;br /&gt;
&lt;br /&gt;
We will use a '''T#''' in the descriptions below to avoid confusion; please find the correct designation for your version by following the links above.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Movement''' ==&lt;br /&gt;
&lt;br /&gt;
=== G0 Rapid Move ===&lt;br /&gt;
&lt;br /&gt;
G0 is a rapid positioning move. It is not a ''working'' move, meaning that your equipment will not be printing, milling, lasering, or doing any other active work during a G0 move. G0 is intended to move your tool to a new position, where the work will happen. Accordingly, G0 movement speeds are set in your configuration settings, rather than being specified in your gcode file. &lt;br /&gt;
&lt;br /&gt;
Special note: a G0 command will take an F variable as a nonpersistent, one-time velocity setting. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G0 Xn Yn Zn An Bn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G0 X50 Y75 Z10&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G0''' (rapid (nonprinting) straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** '''Z10''' (10mm in the Z) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** (no change in F, use settings-specified feed rate)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G1 Working Move ===&lt;br /&gt;
&lt;br /&gt;
G1 is a working move, during which you may be printing, milling, lasering, or doing other active work - provided an E (extrude) value is given. In native mode (if you don't add '''M229 E1 Dn''', the value of Extrusion rate E will be ignored, but E will trigger a working or printing move. In E-value mode (by adding '''M229 E1 Dn''', the slicer-determined E value will be used to control material flow. G1 moves are made at the rate indicated by the F (feed rate) value; if no F value is specified, the last F value set will be used. See '''[[#M229_Use_E_Values|M229]]''' for more details.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
  G1 Xn Yn Zn An Bn Fn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''Zn''' is the new Z position to move to &lt;br /&gt;
  '''An''' is the new A position to move to&lt;br /&gt;
  '''Bn''' is the new B position to move to&lt;br /&gt;
  '''Hn''' is the stored head offset to apply (see '''M660''' to store offsets)&lt;br /&gt;
  '''Fn''' is the feed rate or travel speed to use. Only on '''G0''' is it not persistent&lt;br /&gt;
  '''Sn''' is a one-time (non-persistent) material flow rate multiplier (rarely used) applied to this move only&lt;br /&gt;
&lt;br /&gt;
''Any values not stipulated remain unchanged.''&lt;br /&gt;
&lt;br /&gt;
Note: These positioning values can be absolute or relative to the last position; which depends on whether you are running on '''G90''' absolute positioning or '''G91''' relative positioning. Absolute is the default and should be used in the majority of cases; there will be problems with an entire model sliced in relative mode. Relative is intended for special operations like drilling holes.&lt;br /&gt;
&lt;br /&gt;
Note: All Hyrel printers have built-in support for three axes. Hyrel model 16A and EHR printers may be expanded to five; an additional axis on each machine is reserved for E values.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G1 X50 Y75 E1 F1800 H2&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in A)&lt;br /&gt;
** (no change in B)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoking offsets stored in register H2)&lt;br /&gt;
** (no temporary scaling)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2 Clockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
A G2 move specifies a clockwise arc (or complete circle) from the current position to position X, Y by following an arc about the center point (X+I, Y+J). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Xn Yn In Jn Fn En Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new X position to move to&lt;br /&gt;
  '''Yn''' is the new Y position to move to&lt;br /&gt;
  '''In''' is the '''''relative''''' X position of the center about which to arc&lt;br /&gt;
  '''Jn''' is the '''''relative''''' Y position of the center about which to arc&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. Since all STL models are, by definition, a series of triangles and your slicer will not generate G2 commands from STL files. If you are editing a G2 move into a file running '''M229''' (E values), you will want to jump out of &amp;quot;E-value mode&amp;quot; for this element.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.1 Spiral CW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
A G2.1 makes a spiral circular move (only supports full 360 arcs (or N * 360). Effective ending X/Y is always the same as the current XY and is not specified (though the actual final position is a function of the number of laps, the pitch, and the reverse code. The end Z can be supplied to have a uniform displacement during the move.  The number of full 360 arcs can be specifed as well as the pitch (centerline between arcs).  An important feature is the &amp;quot;reverse code&amp;quot; to allow the creation if frog toes without having to jump over the frog toe once it's made &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G2 Zn In Jn Pn Ln En Sn Rn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Zn''' is the new Z position end at&lt;br /&gt;
  '''In''' is the '''''relative''''' X position of the center about which to arc&lt;br /&gt;
  '''Jn''' is the '''''relative''''' Y position of the center about which to arc&lt;br /&gt;
  '''Ln''' is the number of laps to complete (you don't need to finish the spiral)&lt;br /&gt;
  '''En''' indicates a working or printing move&lt;br /&gt;
  '''Sn''' dictates how many segments are used to create the arc (or circle); 0.33333 mm is the default value&lt;br /&gt;
    ''S values less than 3.0 dictate the length in mm of each segment for this element''&lt;br /&gt;
    ''S values of 3.0 or more dictate how many total segments comprise this element - only allowed on complete circles of 360°''&lt;br /&gt;
  '''Rn''' is a flag; 0 to spiral in, 1 to spiral out&lt;br /&gt;
  '''Fn''' is the Feed rate (travel speed) at which to execute this move.&lt;br /&gt;
&lt;br /&gt;
Any values not stipulated remain unchanged. Since all STL models are, by definition, a series of triangles and your slicer will not generate G2 commands from STL files. If you are editing a G2 move into a file running '''M229''' (E values), you will want to jump out of &amp;quot;E-value mode&amp;quot; for this element.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 F1800&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G2 X50 Y75 I15 J20 E1 S6&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G2''' (working speed clockwise arc/circle move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (centered about a point located) &lt;br /&gt;
** '''I15''' (15mm further in the X) &lt;br /&gt;
** '''J20''' (20mm further in the Y) &lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** (using previously established F rate)&lt;br /&gt;
** '''S6''' (made up of six sides - resulting in a hexagon with one point at the origin, with all corners inscribed on the circle)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.2 Spiral CW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Placeholder - spiral in/out&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G2.3 3-Space CW Arc ===&lt;br /&gt;
&lt;br /&gt;
Placeholder - arc on an arbitrary plane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3 Counterclockwise Arc ===&lt;br /&gt;
&lt;br /&gt;
Please refer to G2, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.1 Spiral CCW Arc&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Placeholder - spiral in/out&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.2 Spiral CCW Arc&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Placeholder - spiral in/out&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G3.3 3-Space CCW Arc ===&lt;br /&gt;
&lt;br /&gt;
Placeholder - arc on an arbitrary plane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G4 Timed Pause ===&lt;br /&gt;
&lt;br /&gt;
G4 is a pause for a set number of seconds (S) or milliseconds (P). &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G4 [ Sn | Pn ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the number of Seconds to pause&lt;br /&gt;
  '''Pn''' is the number of Milliseconds to pause&lt;br /&gt;
&lt;br /&gt;
You may use '''S''' or '''P''', or if you use both, the total value will be the pause duration.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 S0.5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''S0.5''' (0.5 seconds)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G4 P500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G4''' (Timed pause) &lt;br /&gt;
** '''P500''' (500 milliseconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G16 Arc Plane: Any ===&lt;br /&gt;
&lt;br /&gt;
G16 permits free-form designation of points in space, without limiting them to an axial plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G16&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G16''' (allow element in any orientation) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G17 Arc Plane: XY ===&lt;br /&gt;
&lt;br /&gt;
G17 restricts this element to the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G17''' (restrict element to X/Y plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G18 Arc Plane: XZ ===&lt;br /&gt;
&lt;br /&gt;
G18 restricts this element to the X/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G18''' (restrict element to X/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G19 Arc Plane: YZ ===&lt;br /&gt;
&lt;br /&gt;
G19 restricts this element to the Y/Z plane.&lt;br /&gt;
&lt;br /&gt;
''G16 through G19 only apply to G2.x and G3.x commands, and define the plane on which the element will be created.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G19&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G19''' (restrict element to Y/Z plane) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M0 Stop Until Resume ===&lt;br /&gt;
&lt;br /&gt;
M0 is a stop until resume command; text listed after a semicolon will be displayed, and clicking the '''Play''' button (which replaces the '''Pause''' button) will cause the job to resume. Note that all lines will be truncated at 100 characters.&lt;br /&gt;
&lt;br /&gt;
* ''';''' All text following the ''';''' will be echoed to the print mask (Control Tab).&lt;br /&gt;
&lt;br /&gt;
Additionally, an M0 command can also take the following parameters, and so will pause and then:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M0 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M0 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M0''' (Pause until Resume) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M203 Set G0 Speed ===&lt;br /&gt;
&lt;br /&gt;
M203 will redesignate the rate at which [[#G0 Rapid Move|G0]] movements are executed. If undeclared, the values stored in Repetrel for your equipment will be used. These can be changed under '''Settings &amp;gt; Printer''', on the '''Printer''' tab. The values set on your unit are set based on testing; exceed them at your own risk.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M203 Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new speed in the X axis for G0 moves&lt;br /&gt;
  '''Yn''' is the new speed in the Y axis for G0 moves&lt;br /&gt;
  '''Zn''' is the new speed in the Z axis for G0 moves&lt;br /&gt;
  '''An''' is the new speed in the A axis for G0 moves&lt;br /&gt;
  '''Bn''' is the new speed in the B axis for G0 moves&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M203 Y2000&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M203''' (Set G0 Speed) &lt;br /&gt;
** (X remains unchanged)&lt;br /&gt;
** '''Y2000''' (Y axis: 2000mm/min)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Temperature''' ==&lt;br /&gt;
&lt;br /&gt;
What's Hotbed 2 and Chamber 2? Well, our Hydra models have room to have a second hotbed, which could be a smaller, higher temperature hotbed, or a sub-ambient chilled bed, or even a High Resolution hotbed. And we've talked about having a smaller chamber inside the primary chamber, to bring the air around the print (but not the head) to much higher temperatures; call for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M104 Set Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M104 sets the extruder temperature but does not pause the printer. &lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M104 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the tool assignment for this temperature command&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M104 T# S75 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M104''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M106 Set Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M106 sets the cooling fan (or crosslinking LEDs) speed (or intensity). This also turns on the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M106 Cn&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  M106 T# Sn&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
&lt;br /&gt;
  M106 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' is the percent of duty cycle for the cooling fan (or LEDs)&lt;br /&gt;
  '''Cn''' is the range (0-100 or 0-255) that we will use; if unspecified, the default is C100 (use C255 to be compatible with most slicers)&lt;br /&gt;
  '''Pn''' is the percent of duty cycle for the cooling fan (or LEDs) ''to come on only during extrusion moves''&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 C255&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** (on all tools)&lt;br /&gt;
** (no speed)&lt;br /&gt;
** '''C255''' (of range 0-255)&lt;br /&gt;
&lt;br /&gt;
Note, with this command, all following M106 commands for the rest of this print job will be based on this range (unless specified with a new C value).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M106 T# S50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S50''' (target value of 50)&lt;br /&gt;
** (previously defined (or default 0-100) range)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M106 T# P100 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M106''' (Set Cooling/LEDs) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P100''' (during extrusion moves at 100% duty cycle&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;''But Davo, I want to cure a certain spot for 10 seconds with every layer change; how do I do this?''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Edit your slicer recipe to add the following code after layer changes (edit as needed for duration, intensity, or position):&lt;br /&gt;
&lt;br /&gt;
  ;---- BEGIN COD CODE&lt;br /&gt;
  G91 ; relative moves&lt;br /&gt;
  G0 Z5 ; drop bed&lt;br /&gt;
  G90 ; absolute moves&lt;br /&gt;
  G0 X130 Y110 ; move into position&lt;br /&gt;
  M106 S100 T# ; turn on T# UV at 100%&lt;br /&gt;
  G1 X140 Y110 F100 ; move 10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X140 Y120 F100 ; move 10 mm in the Y at 100 mm/min&lt;br /&gt;
  G1 X130 Y120 F100 ; move -10 mm in the X at 100 mm/min&lt;br /&gt;
  G1 X130 Y110 F100 ; move -10 mm in the Y at 100 mm/min&lt;br /&gt;
  M106 S0 T# ; turn off T# UV (set it to 0%)&lt;br /&gt;
  ;--- END COD GCODE&lt;br /&gt;
&lt;br /&gt;
These commands are decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (Use relative moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''Z5''' (+5 mm in the Z)&lt;br /&gt;
* '''G90''' (Use absolute moves)&lt;br /&gt;
* '''G0''' (Non-working move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S100''' (100% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X140''' (To position X140)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y120''' (To position Y120&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''G1''' (Working (printing) move)&lt;br /&gt;
** '''X130''' (To position X130)&lt;br /&gt;
** '''Y110''' (To position Y110&lt;br /&gt;
** '''F100''' (At 100 mm/min)&lt;br /&gt;
* '''M106''' (Set Aux (UV))&lt;br /&gt;
** '''S0''' (0% duty)&lt;br /&gt;
** '''T#''' (On target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M107 Stop Cooling / Etc. ===&lt;br /&gt;
&lt;br /&gt;
M107 turns off the cooling fan (or crosslinking LEDs); this is essentially the same as an M106 S0 (setting it to 0 percent). This will also turn off the Quiet Storm fan.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M107 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M107 T#  &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M107''' (Set Cooling/LEDs to 0%) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M109 Wait for Temp (Head) ===&lt;br /&gt;
&lt;br /&gt;
M109 waits for the extruder to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) heads as options.&lt;br /&gt;
&lt;br /&gt;
''Note that the actual '''T#''' values can be found on '''[[T_v4]]''' or '''[[T_v5]]''', depending on which version you are running.''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M109 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M109 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp) &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M109 R10&lt;br /&gt;
&lt;br /&gt;
* '''M109''' (wait for temp)&lt;br /&gt;
** (no T# - use head with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M116 UNUSED ===&lt;br /&gt;
	&lt;br /&gt;
M116 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will cause the printer to pause until all set temperatures are reached.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M140 Set Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M140 sets the bed temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M140 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target bed (default is the primary bed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M140 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M140''' (set bed temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary bed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M141 Set Temp (Chamber) ===&lt;br /&gt;
&lt;br /&gt;
M141 sets the chamber temperature (without waiting for the new temperature to be reached).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M141 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary chamber)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M141 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M141''' (set chamber temperature)&lt;br /&gt;
** '''S75''' (to 75°C)&lt;br /&gt;
** (on primary chamber)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M190 Wait for Temp (Bed) ===&lt;br /&gt;
&lt;br /&gt;
M190 waits for the bed to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) beds as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M190 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target bed (default is the primary (or only) bed)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M190 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp) &lt;br /&gt;
** '''T#''' (target bed)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M190 R10&lt;br /&gt;
&lt;br /&gt;
* '''M190''' (wait for temp)&lt;br /&gt;
** (no T# - use bed with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M191 Wait for Temp (Chamber) ===&lt;br /&gt;
M191 waits for the chamber to reach temperature, with an option to also set the temperature. Remember, we have both heated and chilled (sub-ambient) chambers as options.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# Sn Hn Cn Ln Un Rn&lt;br /&gt;
&lt;br /&gt;
Please use EITHER (H and/or C) OR (L and/or U) OR (R) with your M191 command.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the target chamber (default is the primary (or only) chamber)&lt;br /&gt;
  '''Sn''' (optional) is the new set temperature in °C; if omitted, no new target temperature is set&lt;br /&gt;
  '''Hn''' if present, is the low-end (or &amp;quot;heat up to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Cn''' if present, is the high-end (or &amp;quot;cool down to&amp;quot;) absolute temperature after which we stop pausing&lt;br /&gt;
  '''Ln''' if present, is the lower-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Un''' if present, is the upper-end relative temperature ''difference from set temp'' after which we stop pausing&lt;br /&gt;
  '''Rn''' if present, is how close the relative temperature needs to be to the set temp to end the pause&lt;br /&gt;
&lt;br /&gt;
Think of '''Sn''' as the target temperature, but once the target is between '''Cn (or Ln)''' and '''Hn (or Un)''', the pause is over (but the '''Sn''' is still the set temp to reach. You can use Hn or Ln, but not both. You can use Cn or Un, but not both.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is within 5°C of the set point)&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 H230&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''H230''' (but end the wait once the target's temperature reaches 230°C)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S240 L10 U5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S240''' (and set temp to 240°C)&lt;br /&gt;
** '''L10''' (but end the wait once the target's temperature reaches 10°C below the set point)&lt;br /&gt;
** '''U5''' (or end the wait once the target's temperature reaches 5°C above the set point)&lt;br /&gt;
&lt;br /&gt;
''Note: this wait ends when the target's temperature is anywhere between 230°C and 245°C''&lt;br /&gt;
&lt;br /&gt;
'''Example 5'''&lt;br /&gt;
&lt;br /&gt;
  M191 T# S0 R5&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp) &lt;br /&gt;
** '''T#''' (target chamber)&lt;br /&gt;
** '''S0''' (to 0°C)&lt;br /&gt;
** '''R5''' (but end the wait once the target's temperature is +/-5°C of the set temperature)&lt;br /&gt;
&lt;br /&gt;
'''Example 6'''&lt;br /&gt;
&lt;br /&gt;
  M191 R10&lt;br /&gt;
&lt;br /&gt;
* '''M191''' (wait for temp)&lt;br /&gt;
** (no T# - use chamber with current focus)&lt;br /&gt;
** '''R10''' (to get +/-10°C of set temperature)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Material Flow''' ==&lt;br /&gt;
&lt;br /&gt;
You can specify flow rate variables in your gcode; we do not do this by default, but take these values from the head itself. Any values you stipulate in your gcode will supersede the values stored on the head. With our recipes the slicing program generates gcode which dictates temperature and movement commands and indicates which moves should dispense material (a G1 move with an E value). &lt;br /&gt;
&lt;br /&gt;
However, we have two different ways to control flow. &lt;br /&gt;
&lt;br /&gt;
* If you use '''M229 E1 D1''' we will use the E values generated by the slicer. This allows for varying extrusion widths and layer thicknesses (on the same layer - as with support material). This is how just about all slicers and printers work.&lt;br /&gt;
&lt;br /&gt;
* If you do not use that command, we do not use that E value (except to distinguish printing from non-printing moves) we calculate for flow based purely on travel speed, declared layer thickness, and nozzle diameter. This is explained at http://hyrel3d.net/wiki/index.php/Flow_Rate&lt;br /&gt;
&lt;br /&gt;
When a head is loaded, it sends this flow data (how to calculate flow, as well as how much to prime and unprime (advance and retract) material when transitioning between printing and non-printing moves - and even how many primes or unprimes to do in conjunction with a tool change.&lt;br /&gt;
&lt;br /&gt;
In this way, the very same gcode (with temperature changes) can be used with any material, provided you are using the same physical parameters that the model was sliced for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G11 UNUSED ===&lt;br /&gt;
&lt;br /&gt;
G11 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do an advance or unretract; we do this via '''M722'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M82 Absolute E-Values ===&lt;br /&gt;
&lt;br /&gt;
M82 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the original (0) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M82&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M82&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M82''' (use absolute E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M83 Relative E-Values ===&lt;br /&gt;
&lt;br /&gt;
M83 stipulates that henceforth, the extrusion positioning (E values) will be calculated from the relative (last used) point.&lt;br /&gt;
&lt;br /&gt;
Note, this only works on v4 and later, when E values are enabled via '''M229'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M83&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M83''' (use relative E values)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M221 Set Flow Rate ===&lt;br /&gt;
&lt;br /&gt;
M221 sends information to the printer about material flow.&lt;br /&gt;
&lt;br /&gt;
Note, our default mode is volumetric calculations; if you need to slice with linear calculations, multiply your Pn by approximately 2.4 (you can do the math).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M221 Pn Sn Wn Zn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the number of pulses on the motor to dispense 1 μl (for volumetric) or 1 mm (for linear) of material;&lt;br /&gt;
  '''Sn''' is the direct flow multiplier (to allow for undersized or oversized stock;&lt;br /&gt;
  '''Wn''' is the width of the cross section of the volume to fill;&lt;br /&gt;
  '''Zn''' is the height (layer thickness) of the cross section of the volume to fill; and&lt;br /&gt;
  '''T#''' is the tool (head) to which these values will be applied.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M221 S1.0 T# P77 W0.5 Z0.3&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M221''' (set flow rate)  &lt;br /&gt;
** '''S1.0''' (flow multiplier of 1.0)  &lt;br /&gt;
** '''T#''' (target head) &lt;br /&gt;
** '''P77''' (77 pulses per microliter)  &lt;br /&gt;
** '''W0.5''' (0.5mm nozzle)  &lt;br /&gt;
** '''Z0.3''' (0.3mm layer thickness - note that your gcode '''M756''' will overwrite this value)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M229 Use E Values ===&lt;br /&gt;
&lt;br /&gt;
'''Starting with version 4''', Hyrel will begin to enable the use of E-values in your gcode. Variable extrusion width and support/infill thickness slicers, rejoice! Note, calculations are done for every single move individually.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M229 En Dn Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''En''' can be 0 (native flow calculation) or 1 (use E values)&lt;br /&gt;
  '''Dn''' how directed to head; see below&lt;br /&gt;
    '''D0''' on head controller directly; constant flow, not adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D1''' on motion controller, sent to head via CANBUS and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D2''' on motion controller, sent to head via C axis step pin and adjusted for motion acceleration/deceleration&lt;br /&gt;
    '''D3''' on motion controller, sent to head via CANBUS and C axis and adjusted for motion acceleration/deceleration&lt;br /&gt;
  '''Sn''' sets a threshold in seconds; isolated non-printing moves below this threshold will not trigger unprime/prime actions&lt;br /&gt;
&lt;br /&gt;
Note: E1 D0 is an illegal combination.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M229 E1 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E1''' (enabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to enable E values.''&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
&lt;br /&gt;
''Above is the default way to ignore E values, and is how v3 and earlier releases work.''&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D1''' (flow calculations directed via CANBUS and adjusted to motion acceleration/deceleration)&lt;br /&gt;
&lt;br /&gt;
'''Example 4'''&lt;br /&gt;
&lt;br /&gt;
  M229 E0 D0 S0.02&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M229''' (E values)  &lt;br /&gt;
** '''E0''' (disabled)  &lt;br /&gt;
** '''D0''' (flow calculations on head controller)&lt;br /&gt;
** '''S0.02''' (isolated non-printing moves of under 0.02 seconds will not trigger unprime/prime actions)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M721 Set Unprime Values ===&lt;br /&gt;
&lt;br /&gt;
M721 sends information to the printer about how much material to unprime when a transition from printing move to non-printing move is detected.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M721 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds relative to the end of the move to begin the unprime (retract) action; a negative number initiates this before the end of the move&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M721 I1''' would execute an unprime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
 M721 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
 M721 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (unprime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M722 Set Prime Values ===&lt;br /&gt;
&lt;br /&gt;
M722 sends information to the printer about how much material to prime (advance) when a transition from non-printing move to printing move is detected. This is done primarily to compensate for an earlier unprime (retract), to prep the head to be ready to dispense.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M722 Sn En Pn T# In&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which unprime moves should be executed; this is normally 10,000&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute; this varies greatly among materials&lt;br /&gt;
  '''Pn''' is the number of milliseconds to dwell relative to the start of the move to allow for the prime (advance) action&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
  '''In''' is the flag for executing an Immediate action; so '''M722 I1''' would execute a prime with the previously specified values at that point in the gcode.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 S10000 E100 P-15 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M721''' (prime)  &lt;br /&gt;
** '''S10000''' (set rate to 10,000 pps)  &lt;br /&gt;
** '''E100''' (set pulses to 100)  &lt;br /&gt;
** '''P-15''' (set dwell to 15ms before end of print move )&lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** (but no immediate execution; execute when needed)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M722 T# I1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M722''' (prime)  &lt;br /&gt;
** '''T#''' (on target head)&lt;br /&gt;
** '''I1''' (now)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M723 Set Manual Flow ===&lt;br /&gt;
&lt;br /&gt;
M723 tells the designated extruder(s) to advance material for the specified number of pulses (on the motor) at the specified rate, regardless of any X/Y/Z movement. It is normally used only during manual operation, not during gcode execution. It can be used after moving to a location to dispense a set amount of material (like depositing material into reservoirs).&lt;br /&gt;
&lt;br /&gt;
M723 is also used to activate and set speed on the stirring apparatus on the DMH dynamic mixing head.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M723 Sn En T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the speed at which the motor should advance, in pulses per second (default: 500);&lt;br /&gt;
  '''En''' is the number of pulses on the feed (extrusion) motor to execute (default: 65535);&lt;br /&gt;
  '''T#''' is the target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 M723 S500 E65535 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M723''' (start manual feed)  &lt;br /&gt;
** '''S500''' (at 500 pulses per second)  &lt;br /&gt;
** '''E65535''' (for 65535 pulses (default))  &lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M728 Set Motor Current Boost ===&lt;br /&gt;
&lt;br /&gt;
M728 will set the motor current boost; default is 0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M728 Sn T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the new set temperature in °C&lt;br /&gt;
  '''T#''' is the target head (or device)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M728 T# S0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M728''' (set motor current boost)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S0''' (off)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M756 Set Height for Flow ===&lt;br /&gt;
&lt;br /&gt;
M756 will overwrite the Z value from the M221 command, allowing you to calculate flow for thinner or thicker layers. We declare M756 at the beginning of every layer; normally, they are all the same (unless you sliced for varying layer thicknesses). &lt;br /&gt;
&lt;br /&gt;
Note: this command is ignored if you are using '''M229 E1 D1''' to enable use of E values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M756 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the layer thickness in mm for flow calculations&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M756 S0.125&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M756''' (set layer height for flow calculations)  &lt;br /&gt;
** '''S0.125''' (at 0.125mm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Controlling Position and Offsets''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands define if new positioning data is defined in inches (G20) or mm (G21); or from the origin (G90) or from the present location (G91). They also stipulate the offsets from one head to another (M6), and how to invoke that offset (T).&lt;br /&gt;
&lt;br /&gt;
=== G10 UNUSED&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
G10 is not recognized by Repetrel. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will set tool offsets; we do this via '''M6'''. &lt;br /&gt;
&lt;br /&gt;
On some other printers, this will do a retract; we do this via '''M721'''.&lt;br /&gt;
&lt;br /&gt;
=== G20 Set Units to Inches ===&lt;br /&gt;
&lt;br /&gt;
G20 declares that henceforth, measurements will be given in inches.&lt;br /&gt;
&lt;br /&gt;
'''''Working with G20 is experimental and unsupported on Hyrel equipment. Use at your own risk.'''''&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G20&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G20''' (set units to inches)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G21 Set Units to Millimeters ===&lt;br /&gt;
&lt;br /&gt;
G21 declares that henceforth, measurements will be given in mm.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G21&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G21&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G21''' (set units to milimeters)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G28 Send X, Y to Physical Home ===&lt;br /&gt;
&lt;br /&gt;
G28 sends the X and/or Y axes to the sensor-defined physical home position, regardless of logically set 0,0, then pop-off and re-acquire the sensor threshold at a slower rate. This pop-off and re-acquire was implemented during v3.&lt;br /&gt;
&lt;br /&gt;
After homing, a '''G28''' also resets current offsets to 0 - including any may have been set with a '''G92''' or an H (as defined in an '''M660''' and invoked on a '''G1'''), performs a '''G53''', and applies a head offset of 0 mm (as in an '''M6 O0''').&lt;br /&gt;
&lt;br /&gt;
Any axis not homed will have its position remain unchanged. We do not support intermediate positioning during homing.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G28 Xn Yn Zn An Bn I1&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''X0''' ensures that the X axis is homed&lt;br /&gt;
  '''Y0''' ensures that the Y axis is homed&lt;br /&gt;
  '''Z0''' ensures that the Z axis is homed&lt;br /&gt;
  '''A0''' ensures that the A axis is homed&lt;br /&gt;
  '''B0''' ensures that the B axis is homed&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G28 X0 Y0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G28''' (home axis)&lt;br /&gt;
** '''X0''' (X axis to 0)&lt;br /&gt;
** '''Y0''' (Y axis to 0)&lt;br /&gt;
** (Z remains unchanged)&lt;br /&gt;
** (A remains unchanged)&lt;br /&gt;
** (B remains unchanged)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G53 Clear Offsets ===&lt;br /&gt;
&lt;br /&gt;
G53 sets the fixture offsets to (0,0,0,0,0). This takes no arguments or variables. It does not clear stored offset values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G53&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G53&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G53''' (set fixture offsets to 0; no effect on H (head) offsets)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G54 - G59 - Set Offsets ===&lt;br /&gt;
&lt;br /&gt;
G54, G55, G56, G57, G58, and G59 will each store and invoke fixture offsets in the X, Y, Z, A, and/or B axes for all subsequent moves. Any values not invoked will remain with their previous value (0 unless earlier specified otherwise). These offsets apply to all positioning until a new offset is applied, or a '''G53''' is used to clear all offsets.&lt;br /&gt;
&lt;br /&gt;
Note that this differs from an '''M6''', where the offsets are only applied to a SINGLE tool position. These offsets are cumulative with '''M6''' values.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G54 (... G59) Xn Yn Zn An Bn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the offset in mm in the X axis&lt;br /&gt;
  '''Yn''' is the offset in mm in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in mm in the Z axis&lt;br /&gt;
  '''An''' is the offset in mm in the A axis&lt;br /&gt;
  '''Bn''' is the offset in mm in the B axis&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G54 X30 Y-20&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G54''' (set units to milimeters)&lt;br /&gt;
** '''X30''' (add 30mm to all X positions)&lt;br /&gt;
** '''Y-20''' (subtract 20mm from all Y positions)&lt;br /&gt;
** (no change to prior stored offsets)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G55&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G55''' (apply new fixture offsets)&lt;br /&gt;
** (no variable: use previous G55 values, or as stored under Settings &amp;gt; Printer &amp;gt; Fixture Offsets)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G90 Absolute Positioning ===&lt;br /&gt;
&lt;br /&gt;
G90 stipulates that henceforth, the positioning will be calculated from the origin (0,0 point).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G90&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G90&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G90''' (use absolute positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G91 Relatative Positioning ===&lt;br /&gt;
&lt;br /&gt;
G91 stipulates that henceforth, the positioning will be calculated relative to the starting position.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G91&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G91&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G91''' (use relative positioning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G92 Reset Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G92 resets the current position to the specified coordinates for all axes enumerated. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G92 Xn Yn Zn An Bn En&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' is the new value for the current X position&lt;br /&gt;
  '''Yn''' is the new value for the current Y position&lt;br /&gt;
  '''Zn''' is the new value for the current Z position&lt;br /&gt;
  '''An''' is the new value for the current A position&lt;br /&gt;
  '''Bn''' is the new value for the current B position&lt;br /&gt;
  '''En''' is the new value for the current E position&lt;br /&gt;
  &lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 X0 Y50&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''X0''' (present X position is 0)&lt;br /&gt;
** '''Y50''' (present Y position is 50)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G92 E0&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G92''' (replace current values)&lt;br /&gt;
** '''E0''' (present E position is 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== G93 Clear Coordinate Offsets ===&lt;br /&gt;
&lt;br /&gt;
G93 clears ALL offsets implemented via '''G92''' command.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G93&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 G93&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G93''' (clear coordinate offset values, all axes)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M6 Declare Head Offsets ===&lt;br /&gt;
&lt;br /&gt;
M6 declares that a particular head holds a set of X, Y, and/or Z offsets, which will be invoked during a T (tool change) command. Repetrel reads this data from the heads, and sends it to the printer before the gcode file is loaded.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# On Xn Yn Zn An Bn Dn In Kn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the Tool position for which these offsets are being set&lt;br /&gt;
  '''On''' is the Offset position where these are being stored&lt;br /&gt;
  '''Xn''' is the offset in the X axis&lt;br /&gt;
  '''Yn''' is the offset in the Y axis&lt;br /&gt;
  '''Zn''' is the offset in the Z axis&lt;br /&gt;
  '''An''' is the offset in the A axis&lt;br /&gt;
  '''Bn''' is the offset in the B axis&lt;br /&gt;
  '''Dn''' is the current tool diameter (used with pocket commands)&lt;br /&gt;
  '''In''' non-persistent; can be default 0 (store values but do not move these distances) or 1 (store values and move these distances)&lt;br /&gt;
  '''Kn''' persistent setting; can be default 0 (use I value) or 1 (ignore I1 and always act with I0)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40&lt;br /&gt;
&lt;br /&gt;
This happens (for every head loaded) when you click print, and the head values are sent to the Motion Controller.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (no move)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 T# O1 X20 Y-30 Z40 I1&lt;br /&gt;
&lt;br /&gt;
This happens when you execute a tool change with '''T#''', and so it triggers the move ('''I1''') to properly position the next head.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** '''T#''' (target head)  &lt;br /&gt;
** '''O1''' (offset stored in register &amp;quot;O1&amp;quot;)  &lt;br /&gt;
** '''X20''' (X+20)&lt;br /&gt;
** '''Y-30''' (Y-30)&lt;br /&gt;
** '''Z40''' (Z+40)&lt;br /&gt;
** (no change to A)&lt;br /&gt;
** (no change to B)&lt;br /&gt;
** (no diameter change)&lt;br /&gt;
** (store and move distances)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M6 K1&lt;br /&gt;
&lt;br /&gt;
You might include this in your header to change behavior during tool changes.&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M6''' (Declare Head Offsets) &lt;br /&gt;
** (all future T# or M6 commands)  &lt;br /&gt;
** (no offset registers, so ignore all offsets)&lt;br /&gt;
** '''K1''' (always force I0 with M6 unless K0 present (or has been previously set)&lt;br /&gt;
&lt;br /&gt;
Note that this differs from a G54-G59, where the offsets are applied to EVERY tool position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M660 Assign Tool Height Offset ===&lt;br /&gt;
&lt;br /&gt;
Used with the High Resolution Engine (and other units which home away from O, like a CNC), an M660 declares that a particular head, when called upon, should print at the gcode-based Z position MODIFIED by this offset, since on these units, the Z-Zero is often BELOW the print surface. By default, this is ONLY used on the EHR (Engine, High Resolution)&lt;br /&gt;
&lt;br /&gt;
NOTE: You MUST have a '''G28 Z0''' in your header to run this M660 on the EHR.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M660 Hn Zn&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 Xn Yn Zn Fn Hn (see '''[[#G1_Working_Move]]''' for other details&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''H''' is the head offset registern for which these offsets are being set;&lt;br /&gt;
  '''Z''' is the offset in the Z axis in mm.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M660 H2 Z28.2       ; (specified before any moves)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 H2   ; (specified on the first G1 move)&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M660''' (apply offset) &lt;br /&gt;
** '''H2''' (store in register 2)&lt;br /&gt;
** '''Z28.2''' (+28.2 to Z position)&lt;br /&gt;
* (there may be more commands before the G1 move invoking the H2)&lt;br /&gt;
* '''G1''' (working speed straight line move from the current location to) &lt;br /&gt;
** '''X50''' (50mm in the X) &lt;br /&gt;
** '''Y75''' (75mm in the Y) &lt;br /&gt;
** (no change in Z)&lt;br /&gt;
** '''E1''' (while extruding) &lt;br /&gt;
** '''F1800''' (moving at 1800mm/min)&lt;br /&gt;
** '''H2''' (invoke offsets stored in register H2)&lt;br /&gt;
&lt;br /&gt;
To be clear, this requires editing two lines of code:&lt;br /&gt;
&lt;br /&gt;
In your gcode, you will enter the M660 just before the first layer code. Example: &amp;lt;code&amp;gt;M660 H2 Z28.2 ; set tool height for tool two (Z offset)&amp;lt;/code&amp;gt;. On the first move of layer one (usually the Z move), you will add an &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; value so that this tool height is invoked. &lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
Before editing: &lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360      ; move to next layer (0)&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800&lt;br /&gt;
&lt;br /&gt;
After editing:&lt;br /&gt;
&lt;br /&gt;
  G1 Z0.275 F360 '''H2'''   ; move to next layer (0) and invoke head Z offset for this tool&amp;lt;/code&amp;gt;&lt;br /&gt;
  (followed by)&lt;br /&gt;
  G1 X50 Y75 F4800 '''H2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M702 - M704 Cloning Heads ===&lt;br /&gt;
&lt;br /&gt;
Clone, slave, or parallel printing, is when multiple heads make the ''exact same print'' at the same time.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 4 and earlier is explained on '''[[T_v4]]'''.&lt;br /&gt;
&lt;br /&gt;
Usage of these commands with version 5 and later is explained on '''[[T_v5]]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== T Tool Change===&lt;br /&gt;
&lt;br /&gt;
T executes a tool change, invoking the parameters specified in the M6 sent from Repetrel to the printer at the job start. Do not confuse a T command with a T variable.&lt;br /&gt;
&lt;br /&gt;
'''See the first entry on this page for details. '''&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Lasers and UV Pens''' ==&lt;br /&gt;
&lt;br /&gt;
The CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Diode Lasers and the UV Pens require the following enabling codes:&lt;br /&gt;
&lt;br /&gt;
=== M620 Enable Device ===&lt;br /&gt;
&lt;br /&gt;
M620 enables the device.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# En An&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool position&lt;br /&gt;
  '''En''' can be the default 0 (disable) or 1 (enable)&lt;br /&gt;
  '''An''' is the duration in seconds after shut-off that the cooling remains active; default is 30 (but this will not override temperature safety measures)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M620 T# E1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M620''' (enable device) &lt;br /&gt;
** '''T#''' (target head - MUST be specified, can NOT be inherited)&lt;br /&gt;
** '''E1''' (enable)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M621 Set Laser Power ===&lt;br /&gt;
&lt;br /&gt;
M621 sets the power for the LASER (not other heads).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M621 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
  '''Dn''' is the initial power (similar to a prime) to penetrate material (optional; uses Pn if unspecified)&lt;br /&gt;
&lt;br /&gt;
Note: No tool is specified; this will happen on the laser already enabled with M620.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M621 P40&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M621''' (activate device) &lt;br /&gt;
** '''P40''' (at 40% during &amp;quot;printing&amp;quot; (E-value) moves)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M623 Duration Emit ===&lt;br /&gt;
&lt;br /&gt;
M623 sets the power for the laser or UV pen, and takes the following parameters:&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M623 Dn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Dn''' is the duration, in miliseconds (only used for static exposures, not during moves)&lt;br /&gt;
  '''Pn''' is the power, in a value between 0 (min) and 100 (max).&lt;br /&gt;
&lt;br /&gt;
Note: Dn max for UV pens is 60,000 (1 minute); Dn max for other devices 1,000 (1 second); &lt;br /&gt;
&lt;br /&gt;
Here are examples:&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D500&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool) &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D500''' (duration 500 miliseconds)&lt;br /&gt;
&lt;br /&gt;
  M623 P80 D10000 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M623''' (activate tool)  &lt;br /&gt;
** '''P80''' (power 80%) &lt;br /&gt;
** '''D10000''' (duration 10 seconds)&lt;br /&gt;
&lt;br /&gt;
=== Laser Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for lasering will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1          ; enable target device &lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your lasering job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0          ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
=== UV Pen Examples ===&lt;br /&gt;
&lt;br /&gt;
A sample of code for UV Curing will look like this:&lt;br /&gt;
&lt;br /&gt;
  G0 X100 Y100 F1000  ; move to start location at 1000 mm/min&lt;br /&gt;
  M620 T# E1         ; enable target device&lt;br /&gt;
  M621 P100           ; set light emission in vector mode (slot 3) to full power (100%)&lt;br /&gt;
  T#                  ; toolchange to target head&lt;br /&gt;
  G1 X120 Y100 E1     ; emitting (printing) move 20mm from origin in X axis&lt;br /&gt;
  G1 X120 Y120 E1     ; emitting (printing) move 20mm from origin in Y axis&lt;br /&gt;
  G1 X120 Y130        ; non-emitting move 10mm from origin in Y axis&lt;br /&gt;
  G1 X140 Y130 E1     ; emitting move 20mm from origin in X axis&lt;br /&gt;
  &lt;br /&gt;
  ... (the rest of your curing job)&lt;br /&gt;
  &lt;br /&gt;
  M620 T# E0         ; disable target device &amp;lt;= should be before M30 command&lt;br /&gt;
&lt;br /&gt;
For more complex examples, see the '''[[UV_and_Clench]]''' page.&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Spindles and Lathes''' ==&lt;br /&gt;
&lt;br /&gt;
Machining and Spindle Tool commands. Note, we recommend using [http://mr-soft.net/ SimplyCAM].&lt;br /&gt;
&lt;br /&gt;
You can review the 5-axis gcode we used for [https://www.youtube.com/watch?v=B0lvN-aPYHI this video] from [http://hyrel3d.net/downloads/gcode/Ardes_tube_cap_milling.gcode here].&lt;br /&gt;
&lt;br /&gt;
=== M3 Turn On Spindle (CW) ===&lt;br /&gt;
&lt;br /&gt;
M3 tells the printer to activate (start) the spindle motor in the clockwise direction on the current head (if it has one), using the value set on the head for RPM. Note: S0 is the same as turning it off. Note: DO NOT CHANGE DIRECTION while the spindle is in motion.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# Sn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Sn''' - power (0-100%)&lt;br /&gt;
  '''Fn''' - optional; PWM in Hz (defaults on heads should be fine for most uses)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M3 T# S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (activate spindle clockwise)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''S75''' (at 75% power) &lt;br /&gt;
** (default PWM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M4 Turn On Spindle (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M3, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M5 Turn Off Spindle ===&lt;br /&gt;
&lt;br /&gt;
M5 tells the printer to deactivate (stop) the spindle motor on the current head (if it has one). M5 has the same effect as M3 S0 or M4 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M5 T#&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M5 T# &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M3''' (deactivate spindle )&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M253 Turn On Lathe (CW) ===&lt;br /&gt;
&lt;br /&gt;
M253 tells the printer to activate (start) the lathe motor in the clockwise direction (if it has one), using the value set with M92 for RPM. Only available on Hydra 16A models.&lt;br /&gt;
&lt;br /&gt;
Note: S0 is the same as turning it off. &lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M253 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' - speed in units per minute (default: RPM if set with M92 as steps per revolution)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M253 S75&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M253''' (activate spindle clockwise)&lt;br /&gt;
** '''S75''' (at 75 RPM) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M254 Turn On Lathe (CCW) ===&lt;br /&gt;
&lt;br /&gt;
Please refer to M253, above, for details. All options are identical, with the exception of direction (counterclockwise).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M255 Turn Off Lathe ===&lt;br /&gt;
&lt;br /&gt;
M255 tells the printer to deactivate (stop) the lathe motor (if it has one). M255 has the same effect as G253 S0 or G254 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M255 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M255''' (deactivate lathe)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  G81 Peck Drilling ===&lt;br /&gt;
&lt;br /&gt;
G81 tells the printer to move to a start position in X/Y and then in Z, and to make (if needed) repeated descents and retracts. This is used to make holes, especially deep holes. Note that the spindle tool is turned on with an M3 or M4 before this command, and turned off with an M5 after all work is done.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# Xn Yn In Pn Qn Zn Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Xn''' - X position&lt;br /&gt;
  '''Yn''' - Y position&lt;br /&gt;
  '''In''' - initial Z position&lt;br /&gt;
  '''Pn''' - peck downward this many mm during each cycle&lt;br /&gt;
  '''Qn''' - retract upward this many mm after each cycle (to clear debris)&lt;br /&gt;
  '''Zn''' - maximum pecking depth&lt;br /&gt;
  '''Fn''' - Z working speed in mm/min&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G81 T# X100 Y75 I3 P3 Q-2 Z-7.5 F200&lt;br /&gt;
&lt;br /&gt;
''NOTE that an M660 offset must be set and applied BEFORE THIS COMMAND to allow for tool length.''&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G81''' (begin pecking cycle) &lt;br /&gt;
** '''X100 Y75''' (move to X/Y starting position X100 Y75) &lt;br /&gt;
** '''I3''' (move to Z starting position Z3, which will be our greatest retract height) &lt;br /&gt;
** '''P3''' (peck downward an additional 3mm at a time)&lt;br /&gt;
** '''Q-2''' (retract upward 2mm after each peck (to clear debris))&lt;br /&gt;
** '''Z-7.5''' (peck to a maximum depth of 7.5mm)&lt;br /&gt;
** '''F200''' (working (drilling) travel speed of 200 mm/min)&lt;br /&gt;
** ''after this, the head will retract up to the I position (Z3 in this case) before moving on to the next line''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Reporting and Diagnostics''' ==&lt;br /&gt;
&lt;br /&gt;
The following commands help with reporting and diagnostics. Most users never need them, but here are the basics. More advanced/detailed reporting is available.&lt;br /&gt;
&lt;br /&gt;
=== M701 Set Head Reporting ===&lt;br /&gt;
&lt;br /&gt;
M701 tells heads how often to send head-specific information to the Motion Controller and on to Repetrel (and pass along to a text file if enabled via M719).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M701 T# Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' - target head&lt;br /&gt;
  '''Pn''' - period in seconds between entries (default 1)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M701 P12&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M701''' (head reporting) &lt;br /&gt;
** (currently active head)&lt;br /&gt;
** '''P12''' (every 12 seconds)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M718 Stop Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M718 tells Repetrel to stop any logging of data to text file that may have been enabled with M719.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M718&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M718''' (logging off) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M719 Start Logging to File ===&lt;br /&gt;
&lt;br /&gt;
M719 tells the Motion Controller what system-wide information to report back to Repetrel, and also tells Repetrel to begin logging these details to a text file.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M719 Pn Sn &lt;br /&gt;
  &lt;br /&gt;
  M719 Pn Xn Yn Zn An Bn Vn En Ln&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Pn''' - period in seconds between entries&lt;br /&gt;
  '''Sn''' - can be default 0 (see options below) or 1 (report ALL data) &lt;br /&gt;
  '''Xn''' - report X position with each entry&lt;br /&gt;
  '''Yn''' - report Y position with each entry&lt;br /&gt;
  '''Zn''' - report Z position with each entry&lt;br /&gt;
  '''An''' - report A position with each entry&lt;br /&gt;
  '''Bn''' - report B position with each entry&lt;br /&gt;
  '''Vn''' - report velocity with each entry&lt;br /&gt;
  '''En''' - report flow rate with each entry&lt;br /&gt;
  '''Ln''' - report gcode line number with each entry&lt;br /&gt;
&lt;br /&gt;
Note: these values are persistent, and if previously enabled, will still be enabled unless disabled with a 0 parameter.&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M719 P10 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P10''' (every 10 seconds)&lt;br /&gt;
** '''S1''' (report everything)&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M719 P.1 Xn Yn Zn Ln&lt;br /&gt;
&lt;br /&gt;
* '''M719''' (logging on)&lt;br /&gt;
** '''P.1''' (every 0.1 seconds)&lt;br /&gt;
** '''X1''' (report X position)&lt;br /&gt;
** '''Y1''' (report Y position)&lt;br /&gt;
** '''Z1''' (report Z position)&lt;br /&gt;
** (don't report A position)&lt;br /&gt;
** (don't report B position)&lt;br /&gt;
** (don't report velocity)&lt;br /&gt;
** (don't report flow rate)&lt;br /&gt;
** '''L1''' (report line number)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Enable Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M670 sets the intensity of the Y-arm LEDs.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M670 Sn Pn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the (percent of duty cycle, 0-100) for the LEDs&lt;br /&gt;
  '''Pn''' is the period (on-off interval - default is 1 second)&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
  M670 S50 P1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S50''' (50% duty cycle)&lt;br /&gt;
** '''P1''' (1 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 50% of 1 second, then off for 50% of 1 second - or on for 0.5 seconds, off for 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
  M670 S25 P4&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M670''' (enable Y-arm light)&lt;br /&gt;
** '''S25''' (25% duty cycle)&lt;br /&gt;
** '''P4''' (4 second cycle)&lt;br /&gt;
&lt;br /&gt;
This would turn the Y-arm light on for 25% of 4 second, then off for 75% of 4 seconds - or on for 1 second, off for 3 seconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M672 Set Y-arm Light ===&lt;br /&gt;
&lt;br /&gt;
M672 can be used to have the Y-arm light change states to reflect the state of a sensor. For example, you can have it come on when the X axis is homed, or when the Y axis has a fault.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M672 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' can be (unlisted numbers are unused at present):&lt;br /&gt;
        '''0'''  : Normal on/off&lt;br /&gt;
        '''10''' : X Home&lt;br /&gt;
        '''11''' : X Limit1&lt;br /&gt;
        '''12''' : X Limit2&lt;br /&gt;
        '''13''' : X Fault&lt;br /&gt;
        '''20''' : Y Home&lt;br /&gt;
        '''21''' : Y Limit1&lt;br /&gt;
        '''22''' : Y Limit2&lt;br /&gt;
        '''23''' : Y Fault&lt;br /&gt;
        '''30''' : Z Home&lt;br /&gt;
        '''31''' : Z Limit1&lt;br /&gt;
        '''32''' : Z Limit2&lt;br /&gt;
        '''33''' : Z Fault&lt;br /&gt;
        '''40''' : A Home&lt;br /&gt;
        '''41''' : A Limit1&lt;br /&gt;
        '''42''' : A Limit2&lt;br /&gt;
        '''43''' : A Fault&lt;br /&gt;
        '''50''' : B Home&lt;br /&gt;
        '''11''' : B Limit1&lt;br /&gt;
        '''52''' : B Limit2&lt;br /&gt;
        '''53''' : B Fault&lt;br /&gt;
        '''60''' : C Home&lt;br /&gt;
        '''61''' : C Limit1&lt;br /&gt;
        '''62''' : C Limit2&lt;br /&gt;
        '''63''' : C Fault&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M672 S&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M672''' (map Y-arm light to state of sensor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
M772 will reset all internal gathering registers to '''0'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M772 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' 0 is default; S can be...&lt;br /&gt;
      '''0''' reset all values only&lt;br /&gt;
      '''1''' also generates a basic printing report&lt;br /&gt;
      '''255''' also generates all possible reports (helpful for advanced debugging)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M772 S1&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M772''' (reset all metrics)&lt;br /&gt;
** '''S1''' (and generate basic printing report&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M773 Generate Basic Report ===&lt;br /&gt;
&lt;br /&gt;
M773 generates a basic report of printing statistics (including average speed, number of primes, etc.)&lt;br /&gt;
&lt;br /&gt;
Note: this report will be more meaningful if you use '''M772''' to reset these counters at the start of a job.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M773&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M773''' (generate basic report)&lt;br /&gt;
&lt;br /&gt;
'''Sample Output'''&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  Begin M773 - print job metrics Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50:                       Time (s)    Dist (m)&lt;br /&gt;
  &amp;gt;IN:  50:                       --------    --------&lt;br /&gt;
  &amp;gt;IN:  50: Totals:                    0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Printing moves:            0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Non-printing moves         0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: Accelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Cruising:                  0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: Decelerating:              0.0       0.000&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: can e steps issued:       0&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PI*d)    0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: approx filament (PIr^2)   0.000 m&lt;br /&gt;
  &amp;gt;IN:  50: unprimes issued:          0&lt;br /&gt;
  &amp;gt;IN:  50: primes issued:            0&lt;br /&gt;
  &amp;gt;IN:  50: unprime-primes avoided:   0&lt;br /&gt;
  &amp;gt;IN:  50: &lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
  &amp;gt;IN:  50: **  End M773 Report&lt;br /&gt;
  &amp;gt;IN:  50: ******************************************************************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== '''Other''' ==&lt;br /&gt;
&lt;br /&gt;
Other commands.&lt;br /&gt;
&lt;br /&gt;
=== M7 Set Power On Aux 1 ===&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_ehr.jpg|thumb|12VDC Ports on EHR|right]]&lt;br /&gt;
&lt;br /&gt;
[[File:M7m8m9_30m_esr.jpg|thumb|12VDC Ports on 30M, ESR|right]]&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant mist in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M7 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 1 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M7 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M7''' (Aux 1 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  M8 Set Power On Aux 2 ===&lt;br /&gt;
&lt;br /&gt;
M7 sends 12VDC to auxiliary connection one. With no parameters, it is read as M7 S100 (on continuously). This is sometimes known as coolant flood in the CNC world.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M8 Sn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Sn''' is the percentage (0-100) for Aux 2 to come on (default is 100)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M8 S25&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M8''' (Aux 2 value) &lt;br /&gt;
** '''S25''' (25%)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M9 Turn Off All Aux ===&lt;br /&gt;
&lt;br /&gt;
M9 cuts power to both auxiliary connections. It is equivalent to running M7 S0 and M8 S0.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M9&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M9''' (set Aux 1 and Aux 2 to value 0 (off)) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M17 Engage Motors ===&lt;br /&gt;
&lt;br /&gt;
M17 will apply power to all motors (positioning and extruder motors), locking them at their current postion; this prevents the bed and yoke from being pushed manually in the X and Y. &lt;br /&gt;
&lt;br /&gt;
Note that an '''M18''' or '''M84''' will disengage motors.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M17&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M17''' (engage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M18 Disengage Motors ===&lt;br /&gt;
&lt;br /&gt;
M18 will cut power to all motors (positioning and extruder motors), unlocking them; this allows the motors to cool down (as they normally lock in place while still), as well as allowing one to manually push the bed and yoke in the X and Y. It also notifies the GUI that motors are disabled. All axes with homes must be rehomed after an M18.&lt;br /&gt;
&lt;br /&gt;
Note this is identical to '''M84''' and the opposite of '''M17'''.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M18&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M18''' (disengage motors) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M30 End of Program ===&lt;br /&gt;
&lt;br /&gt;
M30 tells the printer that this job is complete. No gocde after an M30 will be executed as part of the previous job.&lt;br /&gt;
&lt;br /&gt;
Note M30 also dissolves any cloning setups, changes head index to 0, clears fixture offsets (G63), clears any M229 E-value settings, resets M106 persistent range, resets any printing errors, resets M660 head offsets to 0, resets heads to their stored values, and triggers any queued reports.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  N/A&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M30&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M30''' (end or program) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M84 Disable Motors ===&lt;br /&gt;
&lt;br /&gt;
M84 invokes an M18. Please see M18 for usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== M783 Tie Aux to Extrusion ===&lt;br /&gt;
&lt;br /&gt;
M783 can tie some auxiliary port (like Aux 1) to be powered (at 100%) during a certain head's extrusion. Some users use this so that they can print with an Ultimus head on our equipment.&lt;br /&gt;
&lt;br /&gt;
Note: M619 can be used to map which port M783 ties to.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M783 T# &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''T#''' is the tool to which the designated aux port will be tied&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M783 T#&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M783''' (Tie current Aux port to status of head)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M790 New Layer Actions ===&lt;br /&gt;
&lt;br /&gt;
M790 will trigger any associated new layer actions, which can include capturing an image from the designated camera. It takes no parameters.&lt;br /&gt;
&lt;br /&gt;
=== M791 Snap Image ===&lt;br /&gt;
&lt;br /&gt;
M791 will cause the camera selected under the Interface &amp;gt; Camera1 tab, if set to live video, to capture an image and save it to &amp;lt;code&amp;gt;C:\Users\hyrel\Pictures\HyrelPrinterPictures\snap Shots\snap Shots&amp;lt;/code&amp;gt;, named &amp;lt;code&amp;gt;pic#.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M792 Execute Action ===&lt;br /&gt;
&lt;br /&gt;
M792 causes Repetrel to perform an action, such as displaying an image or making a warning beep.&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  M792 [ SAY | PIC | VID | SEND | BEEP | SHELL ]&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''SAY sample message''' - the computer will use built-in text-to-speech to echo the message over the speaker(s)&lt;br /&gt;
  '''PIC C:\sample.jpg''' - the computer will display the image at the specified location&lt;br /&gt;
  '''VID C:\sample.mp4''' - the computer will play the video at the specified location&lt;br /&gt;
  '''SEND sample message''' - the computer will send the message to the Aux port if connected&lt;br /&gt;
  '''BEEP''' - the computer will sound a beep&lt;br /&gt;
  '''SHELL C:\program.exe''' - the computer will execute the file at the specified location&lt;br /&gt;
&lt;br /&gt;
Note that multiple options can be combined.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  M792 ; SAY Hello Wilbur ; PIC C:\mr_ed.png&lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''M792''' (execute action) &lt;br /&gt;
** '''SAY Hello Wilbur''' (Announce Text: Hello Wilbur)&lt;br /&gt;
** '''PIC C:\mr_ed.png''' (Display Image: C:\mr_ed.png)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;br /&gt;
&lt;br /&gt;
== Chart of Codes ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ G- and M- Code Reference Chart&lt;br /&gt;
! Code&lt;br /&gt;
! Supported&lt;br /&gt;
! Brief Description&lt;br /&gt;
|-&lt;br /&gt;
! [[#G0_Rapid_Move|G0]] &lt;br /&gt;
| Yes || Rapid Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G1_Working_Move|G1]]&lt;br /&gt;
| Yes || Working Move&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2_Clockwise_Arc|G2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.1_Spiral_CW_Arc1|G2.1]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.2_Spiral_CW_Arc2|G2.2]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G2.3_3-Space_CW_Arc|G2.3]] &lt;br /&gt;
| Yes || Clockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3_Counterclockwise_Arc|G3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.1_Spiral_CCW_Arc1&amp;lt;/sup&amp;gt;|G3.1]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.2_Spiral_CCW_Arc2|G3.2]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G3.3_3-Space_CCW_Arc|G3.3]] &lt;br /&gt;
| Yes || Counterclockwise Arc&lt;br /&gt;
|-&lt;br /&gt;
! [[#G4_Timed_Pause|G4]] &lt;br /&gt;
| Yes || Timed Pause&lt;br /&gt;
|-&lt;br /&gt;
! [[#G10_UNUSED|G10]] &lt;br /&gt;
| ''No'' || ''Absolute E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G11_UNUSED|G11]] &lt;br /&gt;
| ''No'' || ''Relative E''&lt;br /&gt;
|-&lt;br /&gt;
! [[#G16_Arc_Plane:_Any|G16]] &lt;br /&gt;
| Yes || Arc in Any Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G17_Arc_Plane:_XY|G17]] &lt;br /&gt;
| Yes || Arc in XY Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G18_Arc_Plane:_XZ|G18]] &lt;br /&gt;
| Yes || Arc in XZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G19_Arc_Plane:_YZ|G19]] &lt;br /&gt;
| Yes || Arc in YZ Plane&lt;br /&gt;
|-&lt;br /&gt;
! [[#G20_Set_Units_to_Inches|G20]] &lt;br /&gt;
| Yes || Set Units to Inches&lt;br /&gt;
|-&lt;br /&gt;
! [[#G21_Set_Units_to_Milimeters|G21]] &lt;br /&gt;
| Yes || Set Units to Milimeters&lt;br /&gt;
|-&lt;br /&gt;
! [[#G28_Send_X,_Y_to_Physical_Home|G28]] &lt;br /&gt;
| Yes || Send X, Y to Physical Home&lt;br /&gt;
|-&lt;br /&gt;
! [[#G53_Clear_Offsets|G53]] &lt;br /&gt;
| Yes || Clear Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G54_-_G59_-_Set_Offsets|G54-59]] &lt;br /&gt;
| Yes || Set Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#G81_Peck_Drilling|G81]] &lt;br /&gt;
| G81 || Peck Drilling&lt;br /&gt;
|-&lt;br /&gt;
! [[#G90_Absolute_Positioning|G90]] &lt;br /&gt;
| Yes || Absolute Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G91_Relatative_Positioning|G91]] &lt;br /&gt;
| Yes || Relatative Positioning&lt;br /&gt;
|-&lt;br /&gt;
! [[#G92_Reset_Coordinate_Offsets|G92]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#G93_Clear_Coordinate_Offsets|G93]] &lt;br /&gt;
| Yes || Reset Coordinates&lt;br /&gt;
|-&lt;br /&gt;
! [[#M0_Stop_Until_Resume|M0]] &lt;br /&gt;
| Yes || Stop Until Resume&lt;br /&gt;
|-&lt;br /&gt;
! [[#M3_Turn_On_Spindle_.28CW.29|M3]] &lt;br /&gt;
| Yes || Spindle On CW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M4_Turn_On_Spindle_.28CCW.29R|M4]] &lt;br /&gt;
| Yes || Spindle On CCW&lt;br /&gt;
|-&lt;br /&gt;
! [[#M5_Turn_Off_Spindle|M5]] &lt;br /&gt;
| Yes || Spindle Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M6_Declare_Head_Offsets|M6]] &lt;br /&gt;
| Yes || Declare Head Offsets&lt;br /&gt;
|-&lt;br /&gt;
! [[#M7_Set_Power_On_Aux_1|M7]] &lt;br /&gt;
| Yes || Aux 1 On (Mist)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M8_Set_Power_On_Aux_2|M8]] &lt;br /&gt;
| Yes || Aux 2 On (Flood)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M9_Turn_Off_All_Aux|M9]] &lt;br /&gt;
| Yes || All Aux Off&lt;br /&gt;
|-&lt;br /&gt;
! [[#M17_Engage_Motors|M17]] &lt;br /&gt;
| Yes || Engage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M18_Disengage_Motors|M18]] &lt;br /&gt;
| Yes || Disengage Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M30_End_of_Program|M30]] &lt;br /&gt;
| Yes || End of Program&lt;br /&gt;
|-&lt;br /&gt;
! [[#M82_Absolute_E-Values|M82]] &lt;br /&gt;
| Yes || Absolute E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M83_Relative_E-Values|M83]] &lt;br /&gt;
| Yes || Relative E-Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M84_Disable_Motors|M84]] &lt;br /&gt;
| Yes || Disable Motors&lt;br /&gt;
|-&lt;br /&gt;
! [[#M104_Set_Temp_.28Head.29|M104]] &lt;br /&gt;
| Yes || Set Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M106_Set_Cooling_.2F_Etc.|M106]] &lt;br /&gt;
| Yes || Set Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M107_Stop_Cooling_.2F_Etc.|M107]] &lt;br /&gt;
| Yes || Stop Cooling / Etc.&lt;br /&gt;
|-&lt;br /&gt;
! [[#M109_Wait_for_Temp_.28Head.29|M109]] &lt;br /&gt;
| Yes || Wait for Temp (Head)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M116_UNUSED|M116]] &lt;br /&gt;
| ''No'' || ''Pause for All Temps''&lt;br /&gt;
|-&lt;br /&gt;
! [[#M140_Set_Temp_.28Bed.29|M140]] &lt;br /&gt;
| Yes || Set Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M141_Set_Temp_.28Chamber.29|M141]] &lt;br /&gt;
| Yes || Set Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M190_Wait_for_Temp_.28Bed.29|M190]] &lt;br /&gt;
| Yes || Wait for Temp (Bed)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M191_Wait_for_Temp_.28Chamber.29|M191]] &lt;br /&gt;
| Yes || Wait for Temp (Chamber)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M203_Set_G0_Speed|M203]] &lt;br /&gt;
| Yes || Set G0 Speed&lt;br /&gt;
|-&lt;br /&gt;
! [[#M221_Set_Flow_Rate|M221]] &lt;br /&gt;
| Yes || Set Flow Rate&lt;br /&gt;
|-&lt;br /&gt;
! [[#M229_Use_E_Values|M229]] &lt;br /&gt;
| Yes || Use E Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M253_Turn_On_Lathe_.28CW.29|M253]] &lt;br /&gt;
| Yes || Turn On Lathe (CW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M254_Turn_On_Lathe_.28CCW.29|M254]] &lt;br /&gt;
| Yes || Turn On Lathe (CCW)&lt;br /&gt;
|-&lt;br /&gt;
! [[#M255_Turn_Off_Lathe|M255]] &lt;br /&gt;
| Yes || Turn Off Lathe&lt;br /&gt;
|-&lt;br /&gt;
! [[#M619_Map_Aux_Port|M619]] &lt;br /&gt;
| Yes || Map Aux Port&lt;br /&gt;
|-&lt;br /&gt;
! [[#M620_Enable_Device|M620]] &lt;br /&gt;
| Yes || Enable Device&lt;br /&gt;
|-&lt;br /&gt;
! [[#M621_Set_Laser_Power|M621]] &lt;br /&gt;
| Yes || Set Laser Power&lt;br /&gt;
|-&lt;br /&gt;
! [[#M623_Duration_Emit|M623]] &lt;br /&gt;
| Yes || Duration Emit&lt;br /&gt;
|-&lt;br /&gt;
! [[#M670_Enable_Y-arm_Light|M670]] &lt;br /&gt;
| Yes || Enable Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M672_Set_Y-arm_Light|M672]] &lt;br /&gt;
| Yes || Set Y-arm Light&lt;br /&gt;
|-&lt;br /&gt;
! [[#M701_Set_Head_Reporting|M701]] &lt;br /&gt;
| Yes || Set Head Reporting&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M702]] &lt;br /&gt;
| Yes || Establish Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M703]] &lt;br /&gt;
| Yes || Add to Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M702_-_M704_Cloning_Heads|M704]] &lt;br /&gt;
| Yes || Remove from Clone Squad&lt;br /&gt;
|-&lt;br /&gt;
! [[#M718_Stop_Logging_to_File|M718]] &lt;br /&gt;
| Yes || Stop Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M719_Start_Logging_to_File|M719]] &lt;br /&gt;
| Yes || Start Logging to File&lt;br /&gt;
|-&lt;br /&gt;
! [[#M721_Set_Unprime_Values|M721]] &lt;br /&gt;
| Yes || Set Unprime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M722_Set_Prime_Values|M722]] &lt;br /&gt;
| Yes || Set Prime Values&lt;br /&gt;
|-&lt;br /&gt;
! [[#M723_Set_Manual_Flow|M723]] &lt;br /&gt;
| Yes || Set Manual Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M728_Set_Motor_Current_Boost|M728]] &lt;br /&gt;
| Yes || Set Motor Current Boost&lt;br /&gt;
|-&lt;br /&gt;
! [[#M756_Set_Height_for_Flow|M756]] &lt;br /&gt;
| Yes || Set Height for Flow&lt;br /&gt;
|-&lt;br /&gt;
! [[#M772_Reset_All_Metrics|M772]] &lt;br /&gt;
| Yes || Reset All Metrics&lt;br /&gt;
|-&lt;br /&gt;
! [[#M773_Generate_Basic_Report|M773]] &lt;br /&gt;
| Yes || Generate Basic Report&lt;br /&gt;
|-&lt;br /&gt;
! [[#M783_Tie_Aux_to_Extrusion|M783]] &lt;br /&gt;
| Yes || Tie Aux to Extrusion&lt;br /&gt;
|-&lt;br /&gt;
! [[#M790_New_Layer_Actions|M790]] &lt;br /&gt;
| Yes || New Layer Actions&lt;br /&gt;
|-&lt;br /&gt;
! [[#M791_Snap_Image|M791]] &lt;br /&gt;
| Yes || Snap Image&lt;br /&gt;
|-&lt;br /&gt;
! [[#M792_Execute_Action|M792]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Description&lt;br /&gt;
|-&lt;br /&gt;
! [[ANCHOR|MCODE]] &lt;br /&gt;
| Yes || Execute Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''[[#What_is_GCode.3F|Back to top]]'''&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
	<entry>
		<id>https://hyrel3d.in/wiki/index.php?title=Sekret!&amp;diff=4283</id>
		<title>Sekret!</title>
		<link rel="alternate" type="text/html" href="https://hyrel3d.in/wiki/index.php?title=Sekret!&amp;diff=4283"/>
		<updated>2020-05-10T15:21:03Z</updated>

		<summary type="html">&lt;p&gt;Greg: /* M772 Reset All Metrics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using the T with the ESR and 30M ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gcodes the customer shouldn't need ==&lt;br /&gt;
&lt;br /&gt;
Diagnostics, reporting.&lt;br /&gt;
&lt;br /&gt;
=== G38 Distance Probing ===&lt;br /&gt;
&lt;br /&gt;
G38 will move the bed until a probe until contact is made, and report the position when contact is made, storing a list of coordinate points with depths. This is helpful for making the bed level (and potentially working on non-planar surfaces).&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
  G38 Xn Yn Zn An Bn T# Pn Dn In Hn On Fn&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
  '''Xn''' ''relative'' move in this axis&lt;br /&gt;
  '''Yn''' ''relative'' move in this axis&lt;br /&gt;
  '''Zn''' ''relative'' move in this axis&lt;br /&gt;
  '''An''' ''relative'' move in this axis&lt;br /&gt;
  '''Bn''' ''relative'' move in this axis&lt;br /&gt;
  '''T#''' head where probe is loaded; if no '''T#''', probe is not in a tool position; default: no T&lt;br /&gt;
  '''Pn''' probe connection&lt;br /&gt;
      ''If T is specified, P values can be:''&lt;br /&gt;
        '''0'''  : PA3 pin on 10-pin connector&lt;br /&gt;
        '''1'''  : PA2 pin on 10-pin connector&lt;br /&gt;
        '''2'''  : LIMIT1 pin on 18-pin connector&lt;br /&gt;
        '''3'''  : LIMIT2 pin on 18-pin connector&lt;br /&gt;
        '''4'''  : RTD1 pin on 18-pin connector&lt;br /&gt;
        '''5'''  : RTD2 pin on 18-pin connector&lt;br /&gt;
      ''If T is not specified, P values can be:''&lt;br /&gt;
        '''0'''  : No direct connect probe; canbus based probe one  *** must specify probeHead via T arg&lt;br /&gt;
        '''1'''  : X Limit1 or W_RTD1 (sys30)&lt;br /&gt;
        '''2'''  : X Limit2 or W_RTD2 (sys30)&lt;br /&gt;
        '''3'''  : X Fault&lt;br /&gt;
        '''4'''  : X Home&lt;br /&gt;
        '''5'''  : unused&lt;br /&gt;
        '''6'''  : Y Limit1&lt;br /&gt;
        '''7'''  : Y Limit2&lt;br /&gt;
        '''8'''  : Y Fault&lt;br /&gt;
        '''9'''  : Y Home&lt;br /&gt;
        '''10''' : unused&lt;br /&gt;
        '''11''' : Z Limit1&lt;br /&gt;
        '''12''' : Z Limit2&lt;br /&gt;
        '''13''' : Z Fault&lt;br /&gt;
        '''14''' : Z Home&lt;br /&gt;
        '''15''' : unused&lt;br /&gt;
        '''16''' : A Limit1&lt;br /&gt;
        '''17''' : A Limit2&lt;br /&gt;
        '''18''' : A Fault&lt;br /&gt;
        '''19''' : A Home&lt;br /&gt;
        '''20''' : unused&lt;br /&gt;
        '''21''' : B Limit1&lt;br /&gt;
        '''22''' : B Limit2&lt;br /&gt;
        '''23''' : B Fault&lt;br /&gt;
        '''24''' : B Home&lt;br /&gt;
        '''25''' : unused&lt;br /&gt;
        '''26''' : C Limit1&lt;br /&gt;
        '''27''' : C Limit2&lt;br /&gt;
        '''28''' : C Fault&lt;br /&gt;
        '''29''' : C Home&lt;br /&gt;
  '''D''' only 1 is presently supported; other options for future development&lt;br /&gt;
  '''I''' is probe polarity; 0 if contact makes a circuit, 1 if contact breaks the circuit&lt;br /&gt;
  '''H''' head offset register to use for tool dimension&lt;br /&gt;
  '''O''' additional offset&lt;br /&gt;
  '''F''' feedrate in mm/min (nonpersistent)&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
  G38 Z-9 T# P3 D1 I1 F200 &lt;br /&gt;
&lt;br /&gt;
This command is decoded and executed by the printer as follows:&lt;br /&gt;
&lt;br /&gt;
* '''G38''' (probe) &lt;br /&gt;
** '''Z-9''' (9 mm in Z toward 0)&lt;br /&gt;
** '''T#''' (target head)&lt;br /&gt;
** '''P3''' (LIMIT2 pin on 18-pin connector)&lt;br /&gt;
** '''D1''' (only option)&lt;br /&gt;
** '''I1''' (contact breaks circuit)&lt;br /&gt;
** '''F200''' (at 200 mm/smin)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== M670 Toggle Y-Arm Light Now ===&lt;br /&gt;
&lt;br /&gt;
Turn on Y-arm light immediately. S 0 - 100 for duty.&lt;br /&gt;
&lt;br /&gt;
=== M671 Toggle X-Arm Lights ===&lt;br /&gt;
&lt;br /&gt;
Toggle X-arm Lights  S 0 - 100 for duty.&lt;br /&gt;
&lt;br /&gt;
=== M672 Toggle Y-Arm with Sensor ===&lt;br /&gt;
&lt;br /&gt;
See main Gcode page.&lt;br /&gt;
&lt;br /&gt;
=== M673 Toggle Y-Arm Light Next ===&lt;br /&gt;
&lt;br /&gt;
Toggle Y-arm light after all previous commands are finished.  S 0 - 100 for duty.&lt;br /&gt;
&lt;br /&gt;
=== M772 Reset All Metrics ===&lt;br /&gt;
&lt;br /&gt;
In addition to info on the Code page, these other reports are available:&lt;br /&gt;
&lt;br /&gt;
  M772 - reset all internal data gathering to “0” state&lt;br /&gt;
  Sn - optional.  If Sn != 0, then Sn is a mask of which reports to auto send when M30 is processed.   S1 or S3 are typical user settings to get basic print info.&lt;br /&gt;
  Bit0 (0x01): enables M773 report (basic print stats)&lt;br /&gt;
  Bit1 (0x02): enables M774 report (system configuration)&lt;br /&gt;
  Bit2 (0x04): enables M774 report (queue metrics)&lt;br /&gt;
  Bit3 (0x08): enables M775 report (crashDataFromRam)&lt;br /&gt;
  Bit4 (0x10): enables M776 report (command and motionQ usage)&lt;br /&gt;
  Bit5 (0x20): enables M779 report (slice timing)&lt;br /&gt;
&lt;br /&gt;
=== M797 Report Sensors ===&lt;br /&gt;
&lt;br /&gt;
Generates a text report of sensor states in 3D-View text window!&lt;br /&gt;
&lt;br /&gt;
M797 I1 reports what is homed and what is not:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;GB: Logical State&lt;br /&gt;
  &amp;gt;GB: A   S     H L L  &lt;br /&gt;
  &amp;gt;GB: x   t D   o i i F&lt;br /&gt;
  &amp;gt;GB: i   e i   m m m l&lt;br /&gt;
  &amp;gt;GB: s   p r   e 1 2 t&lt;br /&gt;
  &amp;gt;GB: ==  = =   = = = =&lt;br /&gt;
  &amp;gt;GB: X:  - F   - . . .&lt;br /&gt;
  &amp;gt;GB: Y:  - F   H . . .&lt;br /&gt;
  &amp;gt;GB: Z:  - F   . . . .&lt;br /&gt;
&lt;br /&gt;
Old style:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;GB: AX ST DR  HM L1 L2 FT&lt;br /&gt;
  &amp;gt;GB: == == ==  == == == ==&lt;br /&gt;
  &amp;gt;GB: X  1  1   1  0  0  1&lt;br /&gt;
  &amp;gt;GB: Y  1  1   0  0  0  1&lt;br /&gt;
  &amp;gt;GB: Z  1  0   1  0  0  1&lt;br /&gt;
  &amp;gt;GB: A  0  0   1  0  0  1&lt;br /&gt;
  &amp;gt;GB: B  0  0   0  0  0  0&lt;br /&gt;
  &amp;gt;GB: C  0  0   0  0  0  0&lt;br /&gt;
&lt;br /&gt;
AX - Axis&lt;br /&gt;
ST - Step&lt;br /&gt;
DR - Direction&lt;br /&gt;
HM - Home&lt;br /&gt;
L1 - Limit 1&lt;br /&gt;
L2 - Limit 2&lt;br /&gt;
FT - Fault&lt;/div&gt;</summary>
		<author><name>Greg</name></author>
	</entry>
</feed>