格式装饰器
@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 的打开/保存对话框中:
- 读取器列在 File → Open 格式下拉框中
- 写入器列在 File → Save As 格式下拉框中
extensions 列表决定文件类型关联。例如:
@format_reader(name="My Format", extensions=["*.myf", "*.myfx"])这会将 “My Format (*.myf, *.myfx)” 添加到 Open 对话框。