Post Processors #247
Replies: 13 comments 5 replies
-
Hi Greg, I am quite happy to add your scripts as and when you produce versions that are compatible with my Cura variant. I guess the question is ... is it worth your effort? I have no idea how many people use my builds. May only be a handful. I tend to make a release every couple of months. |
Beta Was this translation helpful? Give feedback.
-
There isn't any real effort involved. As I was scribbling them I used your builds as well as UM and Creality to debug. The posts are finished and just sitting here. I use them all the time and I pass them along to other people who may mention somewhere that they have a situation that one of the scripts could fix. I had put several of them in as PR's on UM (I will probably re-submit them) but things move slowly over there and I'm easily bored. That caused me to keep opening up the files to make minor alterations. I think the constant stream of commits was getting to Remco and Casper. I've also ported all those post processors to a Visual Basic app. It will accept gcode files from any of the popular slicers. Whether a gcode is created with Cura, Bambu Studio, PrusaSlicer, OrcaSlicer, et al, it can be post processed about 28 different ways. Then it takes and writes the altered code to a new file. I'm retired, fishing sucks, it isn't like I have a lot of other stuff to do. |
Beta Was this translation helpful? Give feedback.
-
Here is "Support-Interface Material Change". This is for single extruder printers although multi-extruders are allowed if only T0 is enabled. It works really well if I do say so myself. |
Beta Was this translation helpful? Give feedback.
-
The filament change process in Marlin also deals with purging the old filament etc. so it is likely to be a whole lot easier to change filament this way than to have a Pause and then have to do the filament change without the assistance of the firmware. |
Beta Was this translation helpful? Give feedback.
-
Hi @smartavionics and @Sophist-UK , An option from my side would be to take the settings as entered, add them to the M600 line as: If people complain I'll look at it. I've used this script on about 15 prints and I really like it. |
Beta Was this translation helpful? Give feedback.
-
@GregValiant This is why @smartavionics suggested that M600 should be an option in your script rather than a straight swap for M0. And believe me, it would be worth your while finding a more up to date Marlin build for your Ender 3 Pro than is provided as standard. The speed and quality of my prints is way better with the newer functionality turned on (and dialled in). |
Beta Was this translation helpful? Give feedback.
-
There must be a purge because we are changing material. Also, since we are changing material the temperatures can be wildly different. I had trouble pulling the PETG out when the temperature would drop to PLA's 200. My fix was to calculate the median temperature and hold at that point for the change. When I continue the print the M109 R holds the machine until the temperature has dropped or risen to the new print temperature. M600 can't do that. It may be a show stopper. My testing showed that if less than about 60mm is purged, the previous material will not clean out of the nozzle completely. That will allow the previous material to mix with the next material over part of a layer causing a definite weak spot as the layer adhesion will be terrible. I'll look at adding M600 and when I get it done I'll pass the script along as you guys will need to debug it. FYI - I will not be changing my 1.1.5- 8bit mainboard running Marlin 1.1.8 (which prints very, very well thank you) with some unknown new combination. Ain't happenin'. Rule # 2: "Never upgrade an operating system." Something won't get the memo and things will quickly go into the dumper. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
@smartavionics |
Beta Was this translation helpful? Give feedback.
-
@GregValiant You seem determined to look for excuses. We have already determined that even though e.g. Marlin currently supports M600, there are many people whose firmware either is too old for this functionality or it was not enabled in the build - and so consequently the use of M600 needs to be optional. Thus it matters not if only some firmware supports it. What matters more is what the parameters are, and as you clearly state the use of no parameters is supported by various versions of firmware.
You need to make a thoughtful choice between reading the default temperature using an API call and using the actual print temperature as used in the last M104/M109 gcode (because there may be other temp overrides from (e.g. support blocker settings or bridging etc.)
This is a minor point and I am not going to argue it further. You are the author and it is your choice.
There is a lot of sense in what you say about the use of basic G-code supported by all flavours as it will result in consistently correct operation. M600 on my printer moves to the parking position (default is defined by firmware) unloads the filament and waits, then loads new filament when prompted by the user and does a purge - then asks if the user wants more purge or to continue, and only on continue does it move back to the print position. If you have a filament runout detector, it does this automatically when the spool runs out. But I accept that this may not be how firmware other than Marlin may work, or how earlier versions of Marlin might work and it will definitely depend on the configuration settings used when your firmware was built (which may not have been fully configured or tuned for your hardware).
See above - I agree that there is a lot of consistency to be gained by hand coding the gcode rather than using e.g. M600. What M600 gives those people whose firmware is both modern and well configured is a process which can be more interactive than a manual gcode process can ever be e.g. by asking whether you want to purge more filament. As an example of this, the filament load length assumes that the gripper grips the filament from the very start - supposing it doesn't grip the filament until 100mm of filament should already have been drawn in - the prime is going to be 100mm short. M600 allows the user to fix this - a predefined gcode doesn't. So, pros and cons on both sides - hence why offering M600 as an option is a good thing IMO.
Typo - should have said M125.
It says in the Marlin firmware: "For Bowden Extruders make this [EXTRUDE_MAXLENGTH] large enough to allow load/unload." If the builder gets it right for your machine, this should have a maximum length which is just > than the bowden tube length. In my firmware I set EXTRUDE_MAXLENGTH to FILAMENT_CHANGE_UNLOAD_LENGTH (because the LOAD length is actually split into fast and slow portions - slow to grip the filament, fast to load it, then slower to purge).
That was not my point - my point was not to slavishly follow what my M600 does (and what I gave you was a simplified version) but that a normal retract (at a fast speed) may be needed to reduce the residue of old filament left in the hotend that then needs to be purged.
Well - this is an argument to:
You can do all of this if you use M0 or alternatively M702 and then M701 rather than M600. (M701 is the clever bit that queries for more purge.)
Oh I agree - when purging you have to try not to cook either the old or new temps and a median is a good guess (in the absence of an explicit temp set by the user). You just don't want to set that until the user loads the new filament - in the interim you want to cool the hotend using M104 S0 and not waiting and then when the user says to load the filament you set M104 Smedian-temp, load the filament close to the hotend, then M109 Rmedian-temp then load the rest of the way and do a purge.
I am not sure that you should be looking for any comment - but rather another
Yes - I get this - I am struggling to get supports which break free easily without leaving a small z-gap (which then reduces the quality) - and I can see how use of a different plastic (which doesn't stick to the normal plastic) would improve things a lot. Presumably you only need to do this on the last layer or two of the support, so it is not every layer than contains any support (hence the need to specify layers).
Obviously the gcode visualiser will probably not show CUSTOM using the SUPPORT colour - hopefully CUSTOM has its own colour rather than showing as something else. I think distinguishing it from the standard SUPPORT colour is probably the right thing to do. (In your pictures, I can't zoom in to see the last layer of the support, bet the rest of the layers are bright blue helpers. I will look at the pics etc now as I am interested to know whether this technique can help me with the quality of my prints. |
Beta Was this translation helpful? Give feedback.
-
It is difficult to zoom in (because it is an inline picture rather than a separate image file), but the surface quality of the inside bottom face looks extremely good considering it was supported. This looks like an excellent technique. Changing filament just 4 times to get this major boost to quality seems like a good compromise to me.
Most descriptions of dual extruder printers are for multi-colour, but I actually think that this use case is at least as useful if not more so. |
Beta Was this translation helpful? Give feedback.
-
As an aside, whilst researching PostProcessor scripts I came across this: AddFilamentChangeBeforeAndAfterSupportInterface.py |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Mark,
I've been hanging around on GitHub, Reddit, and the UM Forum for about three years now. Over that time I've come across ideas for post processors ("Add Cooling Profile" is one) and other scripts that I've found helpful myself.
Since I'm self taught - my coding style is decidedly "non-pythonic", it just works.
The following have been merged into UM Cura for 5.7:
"Add Cooling Profile"
"Display Info on LCD" (this one combines the two existing posts into a single more capable post)
"Alter Zhops" allows the user to kill the zhops over ranges of layers.
"SuptIntMaterialChange" is in the queue at UM. It is similar to Pause at Height but pause for a user to change material for the top layer of a support interface and then pauses again at the end so the user can switch back to the model material. It's terrific for single extruder machines when you have large flat supports. Not so good for horizontal holes and curved surfaces because of all the pauses it can generate.
"Add Cura Settings" was passed on by UM as being too hard to maintain. My Personal feeling was that it's far better than nothing. It creates a list of the relevant settings and adds them to the gcode after the Ending Gcode.
"Little Utilities" is collection of 14 seldom used but occasionally very helpful post processors ranging from "Remove Comments" to "Number the Lines" (some firmware likes to see line numbers).
"Timed Cool Down" keeps the bed and/or build volume hot and slowly drops the temperature-over-time according to the user settings.
"Insert at Layer Change", "Search and Replace", "Time Lapse" were not near as capable as they could be and I've re-written them. In addition to those three I have a re-write of Pause at Height. I obsoleted "By Height" so the new one is "Pause at Layer". No more confusion regarding obtuse settings like "retraction" and "Disarm Time". None of those have been submitted to UM yet.
If you are interested I can piecemeal them out in PR's at a rate of maybe one per week. If you have no interest I will understand that too.
Greg
Beta Was this translation helpful? Give feedback.
All reactions