Wir haben uns in dieser Woche mal damit befasst wie man ein Plugin für Cura schreibt. Dazu haben wir uns erst einmal zu informieren versucht wie ein solches Plugin aussehen muss. Dazu gibt es auf dem Ultimaker Wiki unter How to write a Cura plugin ein Eintrag. Mithilfe dieses Beitrages und dem Quellcode eines anderen Plugins sind wir so langsam auf eine annehmbare Lösung gekommen. Dabei haben wir festgestellt wie der im Wikibeitrag erwähnte Header funktioniert.
#Name: Dieser wird in Cura als Name des Plugins angezeigt
#Info: Ein kleiner Beschrieb der in Cura angezeigt wird wenn das Plugin aktiviert wurde.
#Depend: Der zu verändernde Code, meistens GCode
#Type: Wann es ausgeführt wird, meistens postprocess
#Param: Variablenname im Programm(Datentyp:Standardwert) Name des Wertes in Cura
Weiter haben wir herausgefunden, dass Cura automatisch den Dateinamen mit absolutem Pfad in die Variable „filename“ schreibt, was sehr praktisch ist.Den Debug Modus von Cura haben wir nicht verwendet, stattdessen brauchten wir zum Debuggen die Python Shell.
So kreierten wir ein Plugin mit welchem sich Objekte auf andere drucken lassen. Dazu erhöhen wir einfach die Werte im GCode welche die Höhe des Druckkopfes respektive des Tisches angeben um die Höhe des ersten unteren Objektes. Unser Aufwand allein für das fertige funktionsfähige Plugin betrug etwa zwei Arbeitstage. Jedoch betrieben wir mit dem testen und Dokumentieren einen etwa genau so grossen Aufwand, womit wir insgesamt auf etwa vier Arbeitstage kommen. Dabei ist zu beachten das wir bereits über eine gewisse Erfahrung mit Python verfügten. Wer sich dazu noch die Grundlagen aneignen muss, muss sicher mit ein paar Tagen mehr rechnen.
Als wir der Meinung waren unser Plugin wäre bereit zum Testen druckten wir unser erstes Objekt, einfach eine 5mm hohen rechteckige Fläche. Diese liessen wir selbstverständlich auf dem Drucktisch.Natürlich verwendeten wir das Plugin dabei noch nicht. Erst bei dem Symbol welches dann hätte darauf gedruckt werden sollen aktivierten wir das Plugin in Cura und stellten alles ein wie es sein sollte. Nach dem wir das Filament gewechselt haben und den zweiten Druck auf das erste Objekt in Auftrag gaben, rammte der Druckkopf erst das erste Objekt und versenkte kurz darauf den Druckkopf darin. Selbstverständlich brachen wir den versuch sofort ab, der Drucker nahm zum Glück keinen Schaden.
Wir vergassen die Variablen die wir zum Debuggen brauchten zu löschen weshalb der GCode gar nie editiert wurde und der Drucker ganz normal ein zweites Objekt drucken wollte. Für einen zweiten Testversuch reichte es leider heute nicht mehr aber der kommt sicher noch. Das Plugin werden wir unter CuraPlugin: Printonobject veröffentlichen.
Update 31.12.2018
Da das Ultimaker Wiki nicht mehr verfügbar ist, haben wir für euch die Inhalte aus dem Internet Archiv verlinkt. Die Wayback Machine hat leider unser Plugin nicht gespeichert, weshalb wir es hier für euch zum Download anbieten: Printonobject.py
Kommentare