Format Decorators
The @format_reader() and @format_writer() decorators register classes as custom import/export formats in LinkCAD.
@format_reader()
Signature
@format_reader(
name: str,
extensions: list[str],
description: str = "",
)
class MyReader(FormatReader):
def read(self, path: Path, drawing: DrawingContext) -> None:
...
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name |
str |
required | Format display name |
extensions |
list[str] |
required | File patterns (e.g. ["*.gds", "*.gdsii"]) |
description |
str |
"" |
Format description |
FormatReader Base Class
class FormatReader:
def read(self, path: Path, drawing: DrawingContext) -> None:
"""Override to implement file import logic."""
...
The DrawingContext provides a builder API for constructing the drawing:
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()
Signature
@format_writer(
name: str,
extensions: list[str],
description: str = "",
)
class MyWriter(FormatWriter):
def write(self, path: Path, drawing: WriterContext) -> None:
...
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name |
str |
required | Format display name |
extensions |
list[str] |
required | File patterns |
description |
str |
"" |
Format description |
FormatWriter Base Class
class FormatWriter:
def write(self, path: Path, drawing: WriterContext) -> None:
"""Override to implement file export logic."""
...
The WriterContext provides read access to the drawing:
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
Both decorators create a FormatInfo object attached to the class:
| Field | Description |
|---|---|
name |
Format display name |
extensions |
List of file patterns |
description |
Format description |
Registration
Registered formats automatically appear in LinkCAD's Open/Save dialogs:
- Readers are listed in the File → Open format dropdown
- Writers are listed in the File → Save As format dropdown
The extensions list determines file type association. For example:
This adds "My Format (.myf, .myfx)" to the Open dialog.