Great implementation, well done.
Gave me a though I might start another thread in - why not incorporate a slicer in at this point? You’ve got the 3D viewer, and on a pi, you could fairly easily run a slic3r program in the background from the server.
Thoughts?

That's not what I am requesting. I would like the to have the single value that is returned when doing a bed probe for delta calibrations easily visible without having to do multiple clicks to find it.
So, for example
3:38:36 PMG32
Calibrated 6 factors using 13 points, deviation before 0.303 after 0.019
would display 0.019 somewhere near the calibrate button.
If that number is > 0.40 I recalibrate until it is < 0.40. Sometimes it takes a few times to do so.
It's also annoying that the result isn't displayed both on DWC and on the PanelDue console. It only displays on the one originating the G32.

How-to Print Queue and Automated Print Cycle
Machine: Prusa-Style machines with heat bed, using Duet Controller is convenient e.g. Prusa MK3, Cetus MK3, MakerGear M2
Bed Surface: Clean Glass using Isopropyl alcohol (I use Ikea LOTS mirror because of the quality and availability)
Filament: Tested working with typical PLA, PETG but should works with any materials which can be print on the glass surface and removed easily.
Model Size: Base 10x10cm (Width x Length) or bigger, Height: 2-3cm shorter than the maximum height of the machine.
The important aspect for the removal process is to lift the model up vertically instead of pushing horizontally. There's some strong force, that I feel like the vacuum, which prevented the model to move if push from the sides even if it was once removed. From my tests, I can only remove small models if push horizontally which also stress the gantry a bit.
Instruction:
Leveling the bed Manually level the bed or using manual/auto mesh bed compensation and make sure you get a good first layer adhesion, while it is not too squished or too high.
Add sprue Add 1mm cylinder in the model to an area that can be cleanly cut or easily broken off when the print finished. It can be added within your slicer software without modifying the original model. The sprue height should be 10-20mm higher so the model doesn't touch the heat block when ejecting. The tip of sprue is the area where the nozzle will be stopped.
Test print We will simulate some ejection steps first. The test model should be around the same footprint of your target model, with at least 1-3 mm thick so it is not flexible. e.g. 15cm x 15cm x 3mm rectangular plate. Test printing your model using the right temperature for heat bed, which doesn't warp your model or make it too sticky to the glass, then wait for the model to cool down after finished printing. Try pulling the model up vertically from the sprue, which should take only a little hand force to do if the first layer height is correct. Pay attention to the waiting time and the temperature that the model can be removed successfully because this is the value that you will be used in your ending script of the print. e.g. printing PLA at 60c heated bed, and the model can be successfully removed when the heat bed go down to 32c (which takes 5 minutes from 40c ... Duet's M190 command monitor the bed only when it is over 40c ).
Create End.g Macro This is the end script which will be called at the end of your model gcode, the essential steps are:
; ###Cool down###
; Wait 120 Seconds for nozzle to cool down to under the Glass Temperature of material e.g. My PLA is 60 Celsius
G4 S120
; Wait for Heated Bed to Cool down to 40 celsius
M190 R40
; Wait 600 Seconds for the heat bed to cool down to 32 celsius e.g. My PLA can be removed easily from the heat bed when it reach 32 celsius
G4 S600
;###Lift up###
;Set relative positioning
G91
;Move Z up 20mm, the nozzle will pull up the model effortlessly
G1 Z+20 F1000
###Drop the model###
;Move X,Y to edge of print bed, choose the suitable X,Y values for your printer
G1 Y-999 X999 F1000
;Heat the extruder to 200 celsius, so the PLA at the nozzle tip melts and the model drops from it around the corner of the heat bed. The model should fall to the table by gravity if placed the sprue at the other corner (Adjusted the location to suited your machine)
M109 S200
;Extruder heater off
M104 S0
###Push the model outside printing area###
; Slowly push the model out of printing area, this should be carefully planned if the model has an irregular shape. It can be easier if you have a mechanical push part on X/Y and set up the printing area to facilitate the ejection process.
G1 Y900 F1000
;Home X/Y/Z
G28 X999 Y999 Z999
Test End.g Macro Test your macro and refined it before use is a good idea. You will actually see how thing works at this time.
Create trigger2.g Go to System directory using System editor in your Duet Web Control and create trigger2.g (2-9 will do) and add this:
; Switch off trigger2.g
M581 Z S-1 T2 C
;Wait for current moves to finish
M400
;Wait 10 Seconds (can be omitted or changes)
G4 S10
; Print a.gcode, this is your xxx.gcode in your SD card to be printed
M32 "0:/gcodes/a.gcode"
Create CallTrigger2.g Macro
; Set up trigger2.g
M581 Z S0 T2 C0
; Execute trigger2.g
M582 T2
Test CallTrigger2.g Macro Test run your macro, it should start printing a.gcode now.
Putting them together Go to your slicer, loaded your model, add sprue, finish settings and put End.g and CallTrigger2.g in the ending script by adding this 2 lines:
; Run end.g macro
M98 P"/macros/End.g"
; Run CallTrigger2.g macro
M98 P"/macros/CallTrigger2.g"
Save the file The file name should be the same as one in CallTrigger2.g, in this example is a.gcode
Print them Congratulation! Now your printer should print a.gcode repeatedly without manual removal process .. with glass-like finishing at the bottom side
You can continuously print only one or many sets of model by using more triggerX.g files e.g. a.gcode call trigger2.g which print b.gcode, b.gcode call trigger3.g which print c.gcode and so on. Named the folder and copy that trigger set to /sys when you want to print them. This way, you could have many print sets with a limited number of triggerX.g.
Also, triggerX.g can be changed, modified without stop printing until the filament run out. You can print set A two times, then set B four times and so on with some planning, a webcam and come back a few times to delete, copy/paste trigger sets in Duet Web Control.
Notes:
The process was simplified, to make it easier to understand.
Now you get the idea, So, you should customize/modify and test your processes e.g. nozzle priming, heat bed temperature, removal, ejection that suitable for your machine before you begin your production run.
I think the process is not restricted to Duet only. With some more researches and knowledges, other controllers and firmwares should be able to do it too.
I'll add more videos, photos and details later on..
I'm curious what is the biggest footprint area that this method works because I don't have big printer. Please post it, if you tried it succesfully with big prints.
Credits:
Sanjay Mortimer, RepRap Auto Printing - Ejection of print and starting of new print.
P&U, 3d printer: auto removing of printed object

@veti In fairness to the OP, he asked his original question in a different section of these forums and was told that this is more a DWC thing. So he's started another thread in the DWC wish list section. I think that's a reasonable thing to do in this instance.

@dc42 yes I have it setup that way now but would like to be able to babystep each leadscrew individually. This is on a four leadscrew setup each independent 1000x600 bed so by the time it gets to the far end of the bed I have the close end good but sometimes the far end is out a couple of mm.

@phaedrux said in G-code Syntax Highlighting in Text Edit Windows:
@dc42 a quick google for in browser syntax highlighting brought up a few promising options.
https://prismjs.com
Just found the same thing. It does have GCode listed as supported language and there also exists Vue Prism Editor to integrate it into the new UI based on Vue.