|
@@ -107,10 +107,10 @@
|
107
|
107
|
*
|
108
|
108
|
* I # Invalidate Invalidate specified number of Mesh Points. The nozzle location is used unless
|
109
|
109
|
* the X and Y parameter are used. If no number is specified, only the closest Mesh
|
110
|
|
- * point to the location is invalidated. The M parameter is available as well to produce
|
|
110
|
+ * point to the location is invalidated. The 'T' parameter is also available to produce
|
111
|
111
|
* a map after the operation. This command is useful to invalidate a portion of the
|
112
|
112
|
* Mesh so it can be adjusted using other tools in the Unified Bed Leveling System. When
|
113
|
|
- * attempting to invalidate an isolated bad point in the mesh, the M option will indicate
|
|
113
|
+ * attempting to invalidate an isolated bad point in the mesh, the 'T' option will indicate
|
114
|
114
|
* where the nozzle is positioned in the Mesh with (#). You can move the nozzle around on
|
115
|
115
|
* the bed and use this feature to select the center of the area (or cell) you want to
|
116
|
116
|
* invalidate.
|
|
@@ -126,14 +126,6 @@
|
126
|
126
|
* L # Load * Load Mesh from the specified location in the EEPROM. Set this location as activated
|
127
|
127
|
* for subsequent Load and Store operations.
|
128
|
128
|
*
|
129
|
|
- * O Map * Display the Mesh Map Topology.
|
130
|
|
- * The parameter can be specified alone (ie. G29 O) or in combination with many of the
|
131
|
|
- * other commands. The Mesh Map option works with all of the Phase
|
132
|
|
- * commands (ie. G29 P4 R 5 X 50 Y100 C -.1 O) The Map parameter can also of a Map Type
|
133
|
|
- * specified. A map type of 0 is the default is user readable. A map type of 1 can
|
134
|
|
- * be specified and is suitable to Cut & Paste into Excel to allow graphing of the user's
|
135
|
|
- * mesh.
|
136
|
|
- *
|
137
|
129
|
* The P or Phase commands are used for the bulk of the work to setup a Mesh. In general, your Mesh will
|
138
|
130
|
* start off being initialized with a G29 P0 or a G29 P1. Further refinement of the Mesh happens with
|
139
|
131
|
* each additional Phase that processes it.
|
|
@@ -173,7 +165,7 @@
|
173
|
165
|
* area you are manually probing. Note that the command tries to start you in a corner
|
174
|
166
|
* of the bed where movement will be predictable. You can force the location to be used in
|
175
|
167
|
* the distance calculations by using the X and Y parameters. You may find it is helpful to
|
176
|
|
- * print out a Mesh Map (G29 O) to understand where the mesh is invalidated and where
|
|
168
|
+ * print out a Mesh Map (G29 T) to understand where the mesh is invalidated and where
|
177
|
169
|
* the nozzle will need to move in order to complete the command. The C parameter is
|
178
|
170
|
* available on the Phase 2 command also and indicates the search for points to measure should
|
179
|
171
|
* be done based on the current location of the nozzle.
|
|
@@ -189,7 +181,7 @@
|
189
|
181
|
* to get it to grasp the shim with the same force as when you measured the thickness of the
|
190
|
182
|
* shim at the start of the command.
|
191
|
183
|
*
|
192
|
|
- * Phase 2 allows the O (Map) parameter to be specified. This helps the user see the progression
|
|
184
|
+ * Phase 2 allows the T (Map) parameter to be specified. This helps the user see the progression
|
193
|
185
|
* of the Mesh being built.
|
194
|
186
|
*
|
195
|
187
|
* P3 Phase 3 Fill the unpopulated regions of the Mesh with a fixed value. There are two different paths the
|
|
@@ -263,6 +255,12 @@
|
263
|
255
|
* at a later date. The GCode output can be saved and later replayed by the host software
|
264
|
256
|
* to reconstruct the current mesh on another machine.
|
265
|
257
|
*
|
|
258
|
+ * T Topology Display the Mesh Map Topology.
|
|
259
|
+ * 'T' can be used alone (e.g., G29 T) or in combination with some of the other commands.
|
|
260
|
+ * This option works with all Phase commands (e.g., G29 P4 R 5 X 50 Y100 C -.1 O)
|
|
261
|
+ * This parameter can also specify a Map Type. T0 (the default) is user-readable. T1 can
|
|
262
|
+ * is suitable to paste into a spreadsheet for a 3D graph of the mesh.
|
|
263
|
+ *
|
266
|
264
|
* U Unlevel Perform a probe of the outer perimeter to assist in physically leveling unlevel beds.
|
267
|
265
|
* Only used for G29 P1 O U It will speed up the probing of the edge of the bed. This
|
268
|
266
|
* is useful when the entire bed does not need to be probed because it will be adjusted.
|
|
@@ -381,7 +379,7 @@
|
381
|
379
|
if (code_seen('J')) {
|
382
|
380
|
if (grid_size!=0) { // if not 0 it is a normal n x n grid being probed
|
383
|
381
|
ubl.save_ubl_active_state_and_disable();
|
384
|
|
- ubl.tilt_mesh_based_on_probed_grid(code_seen('O'));
|
|
382
|
+ ubl.tilt_mesh_based_on_probed_grid(code_seen('T'));
|
385
|
383
|
ubl.restore_ubl_active_state_and_leave();
|
386
|
384
|
} else { // grid_size==0 which means a 3-Point leveling has been requested
|
387
|
385
|
float z1 = probe_pt(LOGICAL_X_POSITION(UBL_PROBE_PT_1_X), LOGICAL_Y_POSITION(UBL_PROBE_PT_1_Y), false, g29_verbose_level),
|
|
@@ -438,7 +436,7 @@
|
438
|
436
|
SERIAL_PROTOCOLLNPGM(").\n");
|
439
|
437
|
}
|
440
|
438
|
ubl.probe_entire_mesh(x_pos + X_PROBE_OFFSET_FROM_EXTRUDER, y_pos + Y_PROBE_OFFSET_FROM_EXTRUDER,
|
441
|
|
- code_seen('O'), code_seen('E'), code_seen('U'));
|
|
439
|
+ code_seen('T'), code_seen('E'), code_seen('U'));
|
442
|
440
|
break;
|
443
|
441
|
|
444
|
442
|
case 2: {
|
|
@@ -487,7 +485,7 @@
|
487
|
485
|
return;
|
488
|
486
|
}
|
489
|
487
|
|
490
|
|
- manually_probe_remaining_mesh(x_pos, y_pos, height, card_thickness, code_seen('O'));
|
|
488
|
+ manually_probe_remaining_mesh(x_pos, y_pos, height, card_thickness, code_seen('T'));
|
491
|
489
|
SERIAL_PROTOCOLLNPGM("G29 P2 finished.");
|
492
|
490
|
} break;
|
493
|
491
|
|
|
@@ -523,7 +521,7 @@
|
523
|
521
|
//
|
524
|
522
|
// Fine Tune (i.e., Edit) the Mesh
|
525
|
523
|
//
|
526
|
|
- fine_tune_mesh(x_pos, y_pos, code_seen('O'));
|
|
524
|
+ fine_tune_mesh(x_pos, y_pos, code_seen('T'));
|
527
|
525
|
break;
|
528
|
526
|
|
529
|
527
|
case 5: ubl.find_mean_mesh_height(); break;
|
|
@@ -601,7 +599,7 @@
|
601
|
599
|
SERIAL_PROTOCOLLNPGM("Done.\n");
|
602
|
600
|
}
|
603
|
601
|
|
604
|
|
- if (code_seen('O'))
|
|
602
|
+ if (code_seen('T'))
|
605
|
603
|
ubl.display_map(code_has_value() ? code_value_int() : 0);
|
606
|
604
|
|
607
|
605
|
/*
|
|
@@ -1112,7 +1110,7 @@
|
1112
|
1110
|
}
|
1113
|
1111
|
#endif
|
1114
|
1112
|
|
1115
|
|
- map_type = code_seen('O') && code_has_value() ? code_value_int() : 0;
|
|
1113
|
+ map_type = code_seen('T') && code_has_value() ? code_value_int() : 0;
|
1116
|
1114
|
if (!WITHIN(map_type, 0, 1)) {
|
1117
|
1115
|
SERIAL_PROTOCOLLNPGM("Invalid map type.\n");
|
1118
|
1116
|
return UBL_ERR;
|