コンテンツにスキップ

形式デコレーター

@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() パラメーター

パラメーターデフォルト説明
namestrrequired形式の表示名
extensionslist[str]requiredファイルパターン(例: ["*.gds", "*.gdsii"]
descriptionstr""形式の説明

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() パラメーター

パラメーターデフォルト説明
namestrrequired形式の表示名
extensionslist[str]requiredファイルパターン
descriptionstr""形式の説明

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 ダイアログに追加されます。