跳转到内容

格式装饰器

@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 的打开/保存对话框中:

  • 读取器列在 File → Open 格式下拉框中
  • 写入器列在 File → Save As 格式下拉框中

extensions 列表决定文件类型关联。例如:

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

这会将 “My Format (*.myf, *.myfx)” 添加到 Open 对话框。