Zum Inhalt springen

Format-Dekoratoren

Die Dekoratoren @format_reader() und @format_writer() registrieren Klassen als benutzerdefinierte Import-/Export-Formate in LinkCAD.

@format_reader()

Reader-Signatur

@format_reader(
name: str,
extensions: list[str],
description: str = "",
)
class MyReader(FormatReader):
def read(self, path: Path, drawing: DrawingContext) -> None:
...

Parameter

ParameterTypStandardBeschreibung
namestrerforderlichAnzeigename des Formats
extensionslist[str]erforderlichDateimuster (z. B. ["*.gds", "*.gdsii"])
descriptionstr""Formatbeschreibung

FormatReader-Basisklasse

class FormatReader:
def read(self, path: Path, drawing: DrawingContext) -> None:
"""Override to implement file import logic."""
...

Der DrawingContext stellt eine Builder-API zum Erstellen der Zeichnung bereit:

def read(self, path: Path, drawing: DrawingContext) -> None:
with drawing.cell("main", main=True) as cell:
with cell.layer("metal1") as layer:
layer.polygon([(0, 0), (100, 0), (100, 100), (0, 100)])
layer.polyline(10, [(0, 0), (200, 200)], closed=False)
layer.circle((500, 500), 200)

@format_writer()

Signatur

@format_writer(
name: str,
extensions: list[str],
description: str = "",
)
class MyWriter(FormatWriter):
def write(self, path: Path, drawing: WriterContext) -> None:
...

Writer-Parameter

ParameterTypStandardBeschreibung
namestrerforderlichAnzeigename des Formats
extensionslist[str]erforderlichDateimuster
descriptionstr""Formatbeschreibung

FormatWriter-Basisklasse

class FormatWriter:
def write(self, path: Path, drawing: WriterContext) -> None:
"""Override to implement file export logic."""
...

Der WriterContext stellt Lesezugriff auf die Zeichnung bereit:

def write(self, path: Path, drawing: WriterContext) -> None:
with open(path, "w") as f:
for shape in drawing.shapes():
f.write(f"{shape.layer_name}: {len(shape.vertices)} vertices\n")

FormatInfo

Beide Dekoratoren erstellen ein FormatInfo-Objekt, das an die Klasse angehängt wird:

FeldBeschreibung
nameAnzeigename des Formats
extensionsListe der Dateimuster
descriptionFormatbeschreibung

Registrierung

Registrierte Formate erscheinen automatisch in den Open/Save-Dialogen von LinkCAD:

  • Reader werden im Format-Dropdown von File → Open aufgeführt
  • Writer werden im Format-Dropdown von File → Save As aufgeführt

Die Liste extensions legt die Dateitypzuordnung fest. Beispiel:

@format_reader(name="My Format", extensions=["*.myf", "*.myfx"])

Dies fügt dem Open-Dialog „My Format (*.myf, *.myfx)“ hinzu.