linkcad.plugin
Das Plugin-Modul stellt das Framework zum Erstellen von Tools, Format-Readern und Format-Writern bereit.
Dekoratoren
@tool()
Registriert eine Klasse als Menü-Tool. Siehe Tool-Dekorator.
@tool(name="My Tool", menu="Tools/Custom")class MyTool(Tool): def run(self, drawing) -> None: ...@format_reader()
Registriert eine Klasse als Datei-Importformat. Siehe Format-Dekoratoren.
@format_reader(name="My Format", extensions=["*.myf"])class MyReader(FormatReader): def read(self, path: Path, drawing: DrawingContext) -> None: ...@format_writer()
Registriert eine Klasse als Datei-Exportformat. Siehe Format-Dekoratoren.
@format_writer(name="My Format", extensions=["*.myf"])class MyWriter(FormatWriter): def write(self, path: Path, drawing: WriterContext) -> None: ...Option-Klasse
Option stellt Factory-Methoden zum Definieren typisierter, persistenter Optionen bereit:
| Factory | Ergebnistyp | UI-Steuerelement |
|---|---|---|
Option.integer(label, default, min, max) | int | Spinbox |
Option.real(label, default, min, max, decimals) | float | Double-Spinbox |
Option.boolean(label, default) | bool | Kontrollkästchen |
Option.string(label, default) | str | Textfeld |
Option.choice(label, choices, default) | str | Dropdown |
Option.path(label, default, file_filter) | str | Dateiauswahl |
Option.color(label, default) | str | Farbauswahl |
Option.table(label, columns, default) | list[dict] | Bearbeitbares Raster |
Option.cell_choice(label, default) | str | Zellen-Dropdown |
Alle Factorys akzeptieren optionale Parameter tooltip und enabled_when.
Kontextklassen
DrawingContext
Builder-Schnittstelle für Format-Reader. Methoden:
cell(name, main)— Kontextmanager zum Erstellen von Zelleniter_lines(path)— Zeileniterator mit Fortschrittiter_binary(path, chunk_size)— Binäriterator mit Fortschrittprogress— Fortschritt abrufen/festlegen (0,0–1,0)
WriterContext
Reader-Schnittstelle für Format-Writer. Methoden:
shapes(cell, layer)— Formen mit Fortschritt durchlaufenshapes_by_layer(cell)— nach Ebene gruppierte Formenshapes_by_cell(layer)— nach Zelle gruppierte Formencells()— Zellennamen-Iteratorlayers()— Ebenennamen-Iteratorcell_count()/shape_count()— Anzahlenmain_cell_name()— Name der Top-Zelleflatten— Hierarchie-Reduzierung abrufen/festlegen
ShapeInfo
Datenklasse, die von WriterContext.shapes() geliefert wird:
layer_name: str— Ebenennamecell_name: str— Zellennamevertices: list[tuple]— (x, y)-Koordinatenis_polygon: bool— Polygon vs. Polyliniewidth: int— Polylinienbreiteis_closed: bool— gibt an, ob die Form geschlossen ist
Exceptions
| Exception | Verwendung |
|---|---|
PluginError | Basisklasse für alle Plugin-Fehler |
ParseError | Fehler beim Parsen von Dateien (akzeptiert kwargs line und path) |
WriteError | Fehler beim Schreiben von Dateien |
ValidationError | Fehler bei der Optionsvalidierung |
TableColumn
Datenklasse zum Definieren von Spalten für Tabellenoptionen:
key: str— Dict-Schlüssellabel: str— Spaltenüberschriftcol_type: str—string,integer,real,choice,cell_choicedefault: Any— Standardwertchoices: list[str]— fürchoice-Spaltendecimals: int— fürreal-Spaltenmin_value/max_value— für numerische Spalten