I've recently implemented M200 in Marlin, which makes it possible to send the filament diameter to the firmware and then send E values in units of volume (cubic millimeters) instead of sending an extrusion length (with filament diameter data already baked-in). This makes it possible to adjust the filament diameter after slicing, and is needed for the UFID project or printers with a built-in filament measuring device. Slic3r just needs to be able to send the M200 code and output E values in these units, bypassing the step where extrusion length is calculated from filament diameter and just sending the volume measurement.
I will do that, thank you for the idea :)
@whosawhatsis, how are multiple extruders supported with M200?
Same as with M104/109, diameter value goes to the active extruder unless you include a tool number on the same line, so for a dual extruder you would see something like this:
M200 D1.75 T0
M200 D1.8 T1
BTW, as with M104/109, you should scan the start gcode for an M200 and not insert another one if it's there. It can be advantageous to insert it in a specific place in the start code, such as after a priming procedure.
Option to use volumetric E values. #1746
Good idea. Done! :-)
Discussion followup at:
Don't put any M200 automatically when volumetric mode is selected. Ex…
…plain how to do it manually in the tooltip. #1746
Is this compatible with triffid's trick where you put 1.12838 as the filament diameter then set the diameter in the firmware? I would have thought that if volumetric is set in the slicer then perhaps filament diameter would be greyed out, as it's to be set in firmware. Or is it that if M200 isn't set, the gcode will just continue in non-volumetric mode?
@braddo99 Yes. What this does is ignore the filament diameter setting for gcode calculation and just export units of cubic millimeters. The filament diameter setting isn't greyed-out for (at least) two reasons: