Erstelle eine benutzerdefinierte spezifische Herleitung
Einführung
Es hat einen großen Vorteil, einen abgeleiteten Übersetzer zu bauen. Es wird den vollständigen (Basis-)Eltern-Übersetzer verwenden, mit der einzigen Ausnahme, dass hier neue Inhalte hinzugefügt werden und neu definierte bestehende Funktionen die Basisfunktionen überschreiben. In diesem Fall bleibt der Basisübersetzer intakt. Aber auch, dass (große) Änderungen am Basisübersetzer automatisch auf jeden abgeleiteten Übersetzer angewendet werden.
Schritte
1. Abgeleiteter Übersetzer
| 1.1 | In Visual Studio Code öffnen Sie die CustomTranslator.py aus dem Beispiel-Plugin, das während der Vorbereitung implementiert wurde. |
| 1.2 | Am Anfang ist erneut die Klassendefinition des Übersetzers zu finden. Da wir von HelloWorld ableiten wollen, müssen wir es in den Klammern angeben. In diesem Beispiel sieht die hierarchische Struktur so aus: ![]() |
| 1.3 | Außerdem ist es wichtig, die folgende Zeile am Anfang jedes Downloaders hinzuzufügen. |
2. Übersteuerungsfunktionen
| 2.1 | Im Controller der Arbeitszelle ändert man den verwendeten Übersetzer auf CustomTranslator.py. ![]() |
| 2.2 | In der Elternklasse HelloWorld.py geben wir alle Attribute mit der Eigenschaft PROCESS_ATTRIBUTE aus. In CustomTranslator.py überschreiben wir die Funktion durch eine benutzerdefinierte Implementierung. Füge die folgenden Zeilen zur Funktion OperationStart() hinzu. # Hol Log Operator Logger = Operator. GetLogOperator() Logger. LogInfo (“Default OperationStart called”) # holen Sie den Operationsnamen operationName = Operation. GetName() # iterieren Sie alle Operationsattribute selbst. ProgramContent.append(‘Operation name: %s’ % operationName) Das Überschreiben der Funktion bedeutet, dass die vorherige Ausgabe der Operationsattribute in HelloWorld.py nicht mehr auftritt. Ausgabe von HelloWorld.py |
| 2.3 | Es ist jedoch auch möglich, am Ende die Funktion OperationStart() der Elternklasse aufzurufen. Füge die folgende Zeile zur Funktion hinzu. super(). OperationStart (Operator, Operation) Ausgabe: |
| 2.4 | So kannst du auch entscheiden, ob die Elternfunktion am Anfang oder am Ende aufgerufen werden soll. Ruf die OperationStart()-Implementierung der Elternklasse zu Beginn auf. Entfernen Sie die zuvor hinzugefügte Linie am Ende und legen Sie sie am Anfang an, gemäß dem Bild unten. Ausgabe: |
3. Ereignisausgabe
| 3.1 | Füge in deiner Arbeitszelle ein Textereignis zu einem Werkzeugpfad-Element hinzu, indem du das Ereignispanel öffnest. ![]() |
| 3.2 | Implementiere die Text-Ereignisausgabe. Füge die folgenden Zeilen zur Funktion HandleEvent() hinzu. # alle Attribute erhalten = Ereignis. GetAttributes() # initialisieren von Variablen text = ” isComment = True # iterieren Sie durch Attribute für Attribute in Attributen: # erhalten Sie Text, wenn Attribut. GetName() == ‘Text’: text = Attribut. GetValue() # get flag ist Text ist ein Kommentar (True) oder ein Befehl (False) elif-Attribut. GetName() == ‘IsComment’: isComment = Attribut. GetValue() # prüfe den Kommentar, wenn isComment: # erstelle einen String und füge ihn dem Quellstring-Array selbst hinzu. ProgramContent.append(‘Kommentar: %s’ % Text) sonst: self. ProgramContent.append(‘Command: %s’ % text) Ausgabe |
Was this page helpful?








