Zum Inhalt springen

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:

FactoryErgebnistypUI-Steuerelement
Option.integer(label, default, min, max)intSpinbox
Option.real(label, default, min, max, decimals)floatDouble-Spinbox
Option.boolean(label, default)boolKontrollkästchen
Option.string(label, default)strTextfeld
Option.choice(label, choices, default)strDropdown
Option.path(label, default, file_filter)strDateiauswahl
Option.color(label, default)strFarbauswahl
Option.table(label, columns, default)list[dict]Bearbeitbares Raster
Option.cell_choice(label, default)strZellen-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 Zellen
  • iter_lines(path) — Zeileniterator mit Fortschritt
  • iter_binary(path, chunk_size) — Binäriterator mit Fortschritt
  • progress — Fortschritt abrufen/festlegen (0,0–1,0)

WriterContext

Reader-Schnittstelle für Format-Writer. Methoden:

  • shapes(cell, layer) — Formen mit Fortschritt durchlaufen
  • shapes_by_layer(cell) — nach Ebene gruppierte Formen
  • shapes_by_cell(layer) — nach Zelle gruppierte Formen
  • cells() — Zellennamen-Iterator
  • layers() — Ebenennamen-Iterator
  • cell_count() / shape_count() — Anzahlen
  • main_cell_name() — Name der Top-Zelle
  • flatten — Hierarchie-Reduzierung abrufen/festlegen

ShapeInfo

Datenklasse, die von WriterContext.shapes() geliefert wird:

  • layer_name: str — Ebenenname
  • cell_name: str — Zellenname
  • vertices: list[tuple] — (x, y)-Koordinaten
  • is_polygon: bool — Polygon vs. Polylinie
  • width: int — Polylinienbreite
  • is_closed: bool — gibt an, ob die Form geschlossen ist

Exceptions

ExceptionVerwendung
PluginErrorBasisklasse für alle Plugin-Fehler
ParseErrorFehler beim Parsen von Dateien (akzeptiert kwargs line und path)
WriteErrorFehler beim Schreiben von Dateien
ValidationErrorFehler bei der Optionsvalidierung

TableColumn

Datenklasse zum Definieren von Spalten für Tabellenoptionen:

  • key: str — Dict-Schlüssel
  • label: str — Spaltenüberschrift
  • col_type: strstring, integer, real, choice, cell_choice
  • default: Any — Standardwert
  • choices: list[str] — für choice-Spalten
  • decimals: int — für real-Spalten
  • min_value / max_value — für numerische Spalten