Zum Inhalt springen

linkcad.controller

Übergeordneter Controller für den Konvertierungsablauf. Verwenden Sie ihn, wenn Sie die vollständige Zustandsmaschine des Konvertierungsassistenten brauchen (Formate wählen, Optionen setzen, lesen, Tools anwenden, schreiben), statt linkcad.conv direkt zu steuern.

from linkcad.v1.controller import (
ConversionController, ConversionState,
ControllerEvent, IControllerListener, ProgressInfo,
)

Klassen

ConversionController

Steuert den mehrstufigen Konvertierungsablauf des LinkCAD-Assistenten.

from linkcad.v1.controller import ConversionController
ctrl = ConversionController()
ConversionController.import_format = "GDSII"
ConversionController.export_format = "DXF"
ctrl.selected_input_files = ["/data/design.gds"]
ConversionController.output_file = "/data/design.dxf"
ctrl.start_read()
dwg = ctrl.current_drawing
if dwg is None:
raise RuntimeError("Import produced no drawing")
ctrl.start_write()
print(ctrl.current_state)

Formatauswahl und Ausgabepfad sind prozessweiter Zustand der Engine; import_format, export_format und output_file sind daher statische Eigenschaften: weisen Sie sie an der Klasse zu. Das Lesen über eine Instanz funktioniert ebenfalls und liefert denselben Wert.

Eigenschaft / MethodeBeschreibung
ConversionController()Eine neue Controller-Instanz erzeugen
ConversionController.import_format / .export_formatFormatnamen (z. B. "GDSII"); statisch, zuweisbar
ConversionController.output_filePfad der Ausgabedatei; statisch, zuweisbar
ctrl.selected_input_filesListe der Eingabedateipfade; zuweisbar
ctrl.set_import_options(options_json) / ctrl.set_export_options(options_json)Optionen als JSON-Zeichenkette anwenden
ctrl.tools_enabledOb zwischen Lesen und Schreiben Tools laufen; zuweisbar
ctrl.configure_tools(tools_config)Die Tool-Stufe per JSON konfigurieren
ctrl.batch_modeStapelverarbeitungsmodus; zuweisbar
ctrl.start_read()Das Lesen der Eingabedatei(en) starten
ctrl.start_write()Das Schreiben der Ausgabedatei starten
ctrl.start_batch()Eine Stapelkonvertierung starten
ctrl.finish_operation(success)Die aktuelle Operation als abgeschlossen markieren
ctrl.cancel_current_operation()Die laufende Operation abbrechen
ctrl.operation_in_progressTrue, solange eine Operation läuft
ctrl.next() / ctrl.back() / ctrl.reset()Durch die Zustände des Ablaufs navigieren
ctrl.can_go_next / ctrl.can_go_backOb Navigation möglich ist
ctrl.current_stateAktueller ConversionState
ctrl.current_drawingDie geladene Drawing oder None
ctrl.current_progressAktuelle ProgressInfo
ctrl.import_logImportprotokoll, als IEventLogReader
ctrl.export_logExportprotokoll, als IEventLog
ctrl.conversionsDie zugrunde liegende Conversions-Sammlung — siehe linkcad.conv
ctrl.add_listener(listener) / ctrl.remove_listener(listener)Einen IControllerListener an- oder abmelden

set_import_options() und set_export_options() bleiben Methoden: der Controller reicht das JSON direkt an das Plugin weiter und behält nichts zum Auslesen, und eine Eigenschaft ohne Getter ist keine Eigenschaft.

ConversionState

Enum, das jede Seite des Konvertierungsassistenten benennt.

WertBeschreibung
ConversionState.BeginAnfangszustand
ConversionState.SelectFormatAuswahl von Import- und Exportformat
ConversionState.ImportOptionsSeite mit Importoptionen
ConversionState.ExportOptionsPreExportoptionen, vor dem Lesen angezeigt
ConversionState.ReadFileLesen der Eingabedatei(en)
ConversionState.ApplyToolsAnwenden der Geometrie-Tools
ConversionState.ReadLogDurchsicht des Importprotokolls
ConversionState.OpenPolysBehandlung offener Polylinien
ConversionState.BatchToolsTool-Konfiguration für Stapelläufe
ConversionState.StructureSeite zur Zellen-/Ebenenstruktur
ConversionState.ExportOptionsPostExportoptionen, nach dem Lesen angezeigt
ConversionState.SelectBatchFilesAuswahl der Stapeldateien
ConversionState.ConvertBatchFilesStapelkonvertierung läuft
ConversionState.WriteFileSchreiben der Ausgabedatei
ConversionState.WriteLogDurchsicht des Exportprotokolls
ConversionState.SummaryZusammenfassungsseite
ConversionState.EndAblauf abgeschlossen

ControllerEvent

Enum der Benachrichtigungen, die ein Controller aussendet.

WertBeschreibung
ControllerEvent.StateChangedDer Ablauf hat den Zustand gewechselt
ControllerEvent.PageActivatedEine Assistentenseite wurde aktiv
ControllerEvent.ProgressUpdatedDie Fortschrittsinformation hat sich geändert
ControllerEvent.LogUpdatedEin Protokoll hat Einträge erhalten
ControllerEvent.DrawingChangedDie aktuelle Zeichnung wurde ersetzt
ControllerEvent.OperationFinishedEine Operation wurde abgeschlossen
ControllerEvent.OperationCancelledEine Operation wurde abgebrochen
ControllerEvent.ErrorOccurredEin Fehler wurde gemeldet

ProgressInfo

Momentaufnahme des Fortschritts, geliefert von ctrl.current_progress.

EigenschaftBeschreibung
percentageFortschritt in Prozent (0-100)
current_operationBeschreibung des aktuellen Schritts
current_fileAktuell verarbeitete Datei
current_file_indexIndex der aktuellen Datei
total_filesAnzahl der Dateien im Auftrag

IControllerListener

Leiten Sie hiervon ab, um Controller-Benachrichtigungen zu empfangen. Jede Methode muss überschrieben werden.

from linkcad.v1.controller import ConversionController, IControllerListener
class Watcher(IControllerListener):
def on_state_changed(self, new_state): print(f"state: {new_state}")
def on_page_activated(self, page): pass
def on_progress_updated(self, progress): print(f"{progress.percentage}%")
def on_log_updated(self): pass
def on_drawing_about_to_be_cleared(self, drawing): pass
def on_drawing_changed(self, drawing): pass
def on_operation_finished(self, success): print(f"finished: {success}")
def on_operation_cancelled(self): pass
def on_error_occurred(self, message): print(f"error: {message}")
ctrl = ConversionController()
watcher = Watcher()
ctrl.add_listener(watcher)
MethodeAufgerufen, wenn
on_state_changed(new_state)Der Zustand des Ablaufs wechselt
on_page_activated(page)Eine Assistentenseite aktiviert wird
on_progress_updated(progress)Der Fortschritt aktualisiert wird
on_log_updated()Ein Protokoll aktualisiert wird
on_drawing_about_to_be_cleared(drawing)Unmittelbar bevor die aktuelle Zeichnung verworfen wird
on_drawing_changed(drawing)Die Zeichnung wechselt
on_operation_finished(success)Eine Operation abgeschlossen wird
on_operation_cancelled()Eine Operation abgebrochen wird
on_error_occurred(message)Ein Fehler auftritt