Na, ich hab mir einfach vor meinem geistigen Auge einen strahlenden Xare vorstellt und dann die entsprechenden Befehle in den Code reingeschrieben. Ach so, du willst wissen, welche.
Also, Vorgehensweise:
1. Du erzeugst die Druckdatei wie gewohnt mit den Einstellungen im Plugin, also in dem Zustand, wie du sie mir gestern geschickt hast. Durch die Eingaben im Plugin wird dann der Code für die Druckpause reingeschrieben, nur eben mit dem Fehler, der die Wiederaufnahme des Drucks verhindert.
2. Du öffnest die .gcode-Datei mit einem Texteditor (Word Pad, TextEdit etc. - bitte NICHT mit einem Textverarbeitungsprogramm wie Word oder so; wichtig ist, dass der Dateiinhalt auch nach dem Speichern reiner Text bleibt, ohne irgendwelche Formatierungen, Header oder dergleichen).
3. Mit der Suchfunktion des Programms suchst du nach "pause" (ohne Anführungszeichen). Du findest dann solch eine Codepassage:
Die fette Hervorhebung ist von mir; diese Zeile (M0) ist die einzige, die uns interessiert. Da hat das Plugin nämlich eine Eingabe unterschlagen: Der Befehl M0 allein weist nämlich den Drucker an, solange zu pausieren, bis der Benutzer eine Taste drückt. Die von dir eingegebene Wartezeit von 15 Sekunden wird vom Plugin nicht gesetzt. Wäre ja eigentlich sogar optimal: Drucken bis Pause, Mutter einlegen, Taste drücken, weiterdrucken. Problem: Der Anycubic hat keine Taste, müsste also eine auf dem Touchscreen emulieren. Macht er aber nicht. Also muss zwingend die Wartezeit in den Code geschrieben werden, damit es nach der Pause wieder weitergeht. Für eine Wartezeit von 15 Sekunden bedeutet das, dem Befehl MO den Parameter S mit dem Wert 15 anzufügen:
Bitte genau so wie dargestellt, also mit Leerzeichen vor dem S und ohne Leerzeichen zwischen S und 15. Natürlich kannst du den Wert nach Belieben variieren, also für entsprechend andere Wartezeiten z.B. S10 oder S20 eingeben.
4. Jetzt wirfst du noch einen Blick auf den Code unmittelbar oberhalb der "added code"-Zeile: Da müsste in geringem Abstand oberhalb eine Zeile wie diese stehen:
Das ist die vom Slicer berechnete Druckzeit in Sekunden (zuzüglich Aufwärmen und Homing), die bis zum Ausführen des Pausenscripts vergangen sein wird. Im Beispiel 962 Sekunden, also 16 Minuten 2 Sekunden. Diese Zeit merkst oder notierst du dir, damit du beim Druck später nicht schon Minuten vorher vor dem Drucker lauern musst.
5. Danach speicherst du die Datei und fütterst den Drucker damit. Komforthalber startest du bei Druckbeginn einen Timer (im 16-Minuten-Beispiel würde ich den auf 14 Minuten setzen), und wenn der piept, bewegst du dich zum Drucker, um im passenden Moment die Mutter einzulegen.
Der Drucker druckt dann nach dem Pausenende automatisch fertig, und du hast dein Teil mit eingelegter Mutter.
Ja, das wars auch schon...
Tschöö
Stephan
Also, Vorgehensweise:
1. Du erzeugst die Druckdatei wie gewohnt mit den Einstellungen im Plugin, also in dem Zustand, wie du sie mir gestern geschickt hast. Durch die Eingaben im Plugin wird dann der Code für die Druckpause reingeschrieben, nur eben mit dem Fehler, der die Wiederaufnahme des Drucks verhindert.
2. Du öffnest die .gcode-Datei mit einem Texteditor (Word Pad, TextEdit etc. - bitte NICHT mit einem Textverarbeitungsprogramm wie Word oder so; wichtig ist, dass der Dateiinhalt auch nach dem Speichern reiner Text bleibt, ohne irgendwelche Formatierungen, Header oder dergleichen).
3. Mit der Suchfunktion des Programms suchst du nach "pause" (ohne Anführungszeichen). Du findest dann solch eine Codepassage:
Code:
;added code by post processing
;script: PauseAtHeight.py
;current layer: 40
M83 ; switch to relative E values for any needed retraction
G1 F1500 E-5
G1 F300 Z9.2 ; move up a millimeter to get out of the way
G1 F9000 X120 Y120
G1 F300 Z15 ; too close to bed--move to at least 15mm
M104 S205 ; standby temperature
[B]M0; Do the actual pause[/B]
M109 S205 ; resume temperature
G1 F1500 E5
G1 F199.998 E2
G1 F1500 E-5
G1 F300 Z9.2
G1 F9000 X8 Y8
G1 F300 Z8.2 ; move back down to resume height
G1 F1500 E5
G1 F2400 ; restore extrusion feedrate
M82 ; switch back to absolute E values
G92 E629.68892
Die fette Hervorhebung ist von mir; diese Zeile (M0) ist die einzige, die uns interessiert. Da hat das Plugin nämlich eine Eingabe unterschlagen: Der Befehl M0 allein weist nämlich den Drucker an, solange zu pausieren, bis der Benutzer eine Taste drückt. Die von dir eingegebene Wartezeit von 15 Sekunden wird vom Plugin nicht gesetzt. Wäre ja eigentlich sogar optimal: Drucken bis Pause, Mutter einlegen, Taste drücken, weiterdrucken. Problem: Der Anycubic hat keine Taste, müsste also eine auf dem Touchscreen emulieren. Macht er aber nicht. Also muss zwingend die Wartezeit in den Code geschrieben werden, damit es nach der Pause wieder weitergeht. Für eine Wartezeit von 15 Sekunden bedeutet das, dem Befehl MO den Parameter S mit dem Wert 15 anzufügen:
Code:
M0 S15; Do the actual pause
Bitte genau so wie dargestellt, also mit Leerzeichen vor dem S und ohne Leerzeichen zwischen S und 15. Natürlich kannst du den Wert nach Belieben variieren, also für entsprechend andere Wartezeiten z.B. S10 oder S20 eingeben.
4. Jetzt wirfst du noch einen Blick auf den Code unmittelbar oberhalb der "added code"-Zeile: Da müsste in geringem Abstand oberhalb eine Zeile wie diese stehen:
Code:
;TIME_ELAPSED:961.927575
Das ist die vom Slicer berechnete Druckzeit in Sekunden (zuzüglich Aufwärmen und Homing), die bis zum Ausführen des Pausenscripts vergangen sein wird. Im Beispiel 962 Sekunden, also 16 Minuten 2 Sekunden. Diese Zeit merkst oder notierst du dir, damit du beim Druck später nicht schon Minuten vorher vor dem Drucker lauern musst.
5. Danach speicherst du die Datei und fütterst den Drucker damit. Komforthalber startest du bei Druckbeginn einen Timer (im 16-Minuten-Beispiel würde ich den auf 14 Minuten setzen), und wenn der piept, bewegst du dich zum Drucker, um im passenden Moment die Mutter einzulegen.
Der Drucker druckt dann nach dem Pausenende automatisch fertig, und du hast dein Teil mit eingelegter Mutter.
Ja, das wars auch schon...
Tschöö
Stephan