Only probe where printed. Solution here!
-
I just saw that PS added the option to call the dimensions of the print via expressions. So now it is easy to set the M557 for each print automaticly
just insert
M557 X{first_layer_print_min[0]}:{first_layer_print_max[0]} Y{first_layer_print_min[1]}:{first_layer_print_max[1]} S8
in your startcode before G28 and mesh of course
Keep in mind that the M557 stays active till the next print
-
@pcr for clarification from the PS Soruce code
// It does NOT encompass user extrusions generated by custom G-code, // therefore it does NOT encompass the initial purge line. // It does NOT encompass MMU/MMU2 starting (wipe) areas.
-
Incredible!
Some idea for Cura? -
Will Look Into it tomorrow
For Ideamaker
M557 X{print_pos_min_x}:{print_pos_max_x} Y{print_pos_min_y}:{print_pos_max_y} S8
-
Alternatively, to default to probing the whole bed, put this in your start GCode (example shown for IdeaMaker):
var minPrintX = {print_pos_min_x} var maxPrintX = {print_pos_max_x} var minPrintY = {print_pos.min_y} var maxPrintY = {print_pos_max_y}
Then in your mesh.g file:
var m557MinX = -100; ; put your default here var m557MaxX = 100; ; put your default here var m557MinY = -100; ; put your default here var m557MaxX = 100; ; put your default here if exists(var.minPrintX) set m557MinX = var.minPrintX if exists(var.maxPrintX) set m557MaxX = var.maxPrintX if exists(var.minPrintY) set m557MinY = var.minPrintY if exists(var.maxPrintY) set m557MaxY = var.maxPrintY M557 X{var.m557MinX,var.m557MaxX} Y{var.m557MinY,var.m557MayY} S8 ; put your required spacing here G29 S0
Caution: I have not tested this!
-
@pcr this is great!
Could you clarify, which Prusaslicer version you are using? I'm running Prusaslicer 2.2.0 and it seems to require later versions.-Marius
-
-
-
@o_lampe skirt is included
-
-
-
-
Doesn't look like cura has anything that is set as a user variable for print position max that I can find
-
Poked around in a sliced gcode from cura - it passes MIX/MAX as comments in beginning of gcode.
;FLAVOR:RepRap ;TIME:1813 ;Filament used: 2.3164m ;Layer height: 0.28 ;MINX:124.335 ;MINY:124.335 ;MINZ:0.24 ;MAXX:175.665 ;MAXY:175.664 ;MAXZ:21.45 ;Generated with Cura_SteamEngine 4.12.1
Looking to see if those are values that can be used in start... if not, may be able to write a small plugin that set variables
-
min and max for X and Y are also available as macro variables in the recent kiri:moto 3.1 development release.
-
Found a post processing script for cura here: https://forum.duet3d.com/topic/14994/f-r-auto-define-m557-mesh-bounds-from-gcode/5?_=1637506151764
It would be nice if we could have the firmware parse this as defining it in every tool i use is a pain
-
easier solution
- (Cura slicer plugin) To make the macro to work in Cura slicer, you need to install the post process plugin by frankbags - In cura menu Help -> Show configuration folder. - Copy the python script from the above link in to plugins folder. - Restart Cura - In cura menu Extensions -> Post processing -> Modify G-Code and select Mesh Print Size (PLUGIN)
the
M557 X%MINX%:%MAXX% Y%MINY%:%MAXY% S8
-
@pcr So awesome! Thanks!!
FYI, if its not loading for you, rename the file to match exactly the class name - it is CaSE SenSiTive "LevelingMeshOptimizer.pl"
-
@dc42 said in Only probe where printed. Solution here!:
Alternatively, to default to probing the whole bed, put this in your start GCode (example shown for IdeaMaker):
var minPrintX = {print_pos_min_x} var maxPrintX = {print_pos_max_x} var minPrintY = {print_pos.min_y} var maxPrintY = {print_pos_max_y}
Then in your mesh.g file:
var m557MinX = -100; ; put your default here var m557MaxX = 100; ; put your default here var m557MinY = -100; ; put your default here var m557MaxX = 100; ; put your default here if exists(var.minPrintX) set m557MinX = var.minPrintX if exists(var.maxPrintX) set m557MaxX = var.maxPrintX if exists(var.minPrintY) set m557MinY = var.minPrintY if exists(var.maxPrintY) set m557MaxY = var.maxPrintY M557 X{var.m557MinX,var.m557MaxX} Y{var.m557MinY,var.m557MayY} S8 ; put your required spacing here G29 S0
Caution: I have not tested this!
I'm using parts of your example now and it it ALMOST works! if i try to run the mesh.g manually it picks up the default size and probe the full bed. But it don't look like it's picking up the actual print area for some reason if i try to do a print.
This is what it my slicer outputs, and it seems right to me:
var minPrintX = 243.659 var maxPrintX = 278.245 var minPrintY = 56.6481 var maxPrintY = 91.2335
I've gotten my slicer setup so that it output's this in the very start of the custom start Gcode, long before the G29.
__
But just a little headsup it's a couple typos in the code
You've set "MaxX" two times in the default section, instead of "MaxY".
And in the M577 you're checking for " m557May" instead of "m557MaxY" -
Shouldn't the code be:
if exists(var.minPrintX) set var.m557MinX = var.minPrintX if exists(var.maxPrintX) set var.m557MaxX = var.maxPrintX if exists(var.minPrintY) set var.m557MinY = var.minPrintY if exists(var.maxPrintY) set var.m557MaxY = var.maxPrintY
-
@exerqtor said in Only probe where printed. Solution here!:
Shouldn't the code be:
if exists(var.minPrintX) set var.m557MinX = var.minPrintX if exists(var.maxPrintX) set var.m557MaxX = var.maxPrintX if exists(var.minPrintY) set var.m557MinY = var.minPrintY if exists(var.maxPrintY) set var.m557MaxY = var.maxPrintY
Correct! I did say it was untested.
-
@dc42 said in Only probe where printed. Solution here!:
@exerqtor said in Only probe where printed. Solution here!:
Shouldn't the code be:
if exists(var.minPrintX) set var.m557MinX = var.minPrintX if exists(var.maxPrintX) set var.m557MaxX = var.maxPrintX if exists(var.minPrintY) set var.m557MinY = var.minPrintY if exists(var.maxPrintY) set var.m557MaxY = var.maxPrintY
Correct! I did say it was untested.
Yeah np, just trying to get why it don't work lol. For some reason still won't probe just the print area.
-
@dc42
Looks like it might be a scope issue, even though "var minPrintX = 88.6323" (for example) is in the start gcode of an ongoing print I get this3.12.2021, 13:47:51 set var.m557MinX = var.minPrintX Error: meta command: unknown variable 'minPrintX'
when entered in DWC console.