形式デコレーター
@format_reader() と @format_writer() デコレーターは、クラスを LinkCAD のカスタムインポート/エクスポート形式として登録します。
@format_reader()
@format_reader() シグネチャ
@format_reader( name: str, extensions: list[str], description: str = "",)class MyReader(FormatReader): def read(self, path: Path, drawing: DrawingContext) -> None: ...@format_reader() パラメーター
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
name | str | required | 形式の表示名 |
extensions | list[str] | required | ファイルパターン(例: ["*.gds", "*.gdsii"]) |
description | str | "" | 形式の説明 |
FormatReader 基底クラス
class FormatReader: def read(self, path: Path, drawing: DrawingContext) -> None: """Override to implement file import logic.""" ...DrawingContext は、図面を構築するためのビルダー API を提供します。
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()
@format_writer() シグネチャ
@format_writer( name: str, extensions: list[str], description: str = "",)class MyWriter(FormatWriter): def write(self, path: Path, drawing: WriterContext) -> None: ...@format_writer() パラメーター
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
name | str | required | 形式の表示名 |
extensions | list[str] | required | ファイルパターン |
description | str | "" | 形式の説明 |
FormatWriter 基底クラス
class FormatWriter: def write(self, path: Path, drawing: WriterContext) -> None: """Override to implement file export logic.""" ...WriterContext は、図面への読み取りアクセスを提供します。
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
どちらのデコレーターも、クラスに付加される FormatInfo オブジェクトを作成します。
| フィールド | 説明 |
|---|---|
name | 形式の表示名 |
extensions | ファイルパターンのリスト |
description | 形式の説明 |
登録
登録済みの形式は、LinkCAD の Open/Save ダイアログに自動的に表示されます。
- リーダーは File → Open 形式ドロップダウンに表示されます
- ライターは File → Save As 形式ドロップダウンに表示されます
extensions リストはファイルタイプの関連付けを決定します。例:
@format_reader(name="My Format", extensions=["*.myf", "*.myfx"])これにより “My Format (*.myf, *.myfx)” が Open ダイアログに追加されます。