linkcad.conv
文件格式转换——以编程方式加载和保存图纸。
from linkcad.v1.conv import ( Conversion, Conversions, FormatRegistry, FormatInfo, Format, FormatAttributes,)类
Conversions
批处理容器,也是获取 Conversion 的唯一途径。Conversion 从不直接构造——请向 Conversions 集合索取。
from linkcad.v1.conv import Conversions
batch = Conversions()conv = batch.append_new("GDSII", "DXF")conv.import_paths = ["/data/design.gds"]conv.export_path = "/data/design.dxf"
conv.read_file()if not conv.succeeded: raise RuntimeError("Import failed")
dwg = conv.drawing# optionally inspect/modify dwg under WriteLock here
conv.write_file()if not conv.succeeded: raise RuntimeError("Export failed")| 属性 / 方法 | 说明 |
|---|---|
Conversions() | 创建空集合 |
batch.append_new(import_format, export_format) | 追加并返回一个新的 Conversion |
batch.start() / batch.next() | 把游标移到第一个/下一个转换 |
batch.done | 游标越过最后一个转换后为 True |
batch.current | 游标所指的转换;done 之后访问会抛出异常 |
len(batch) | 转换数量 |
batch.position | 当前转换的索引(从 0 开始) |
batch.clear() | 移除所有转换 |
batch.has_duplicate_file_titles | 是否有两个作业会写出相同的文件标题 |
batch.owner_window | 模态进度对话框使用的属主窗口 ID;可赋值 |
迭代批处理:
batch.start()while not batch.done: conv = batch.current conv.read_file() conv.write_file() batch.next()Conversion
单次导入 → 导出操作。
| 属性 / 方法 | 说明 |
|---|---|
conv.import_format | 导入格式名称(例如 "GDSII");可赋值 |
conv.import_format_extension / conv.import_format_attributes | 导入格式的元数据 |
conv.import_paths | 输入文件路径,字符串列表;可赋值 |
conv.export_path | 输出文件路径,字符串;可赋值,并接受任何 os.PathLike |
conv.create_export_path() | 根据输入路径推导输出路径 |
conv.export_format / conv.export_format_extension / conv.export_format_attributes | 导出格式的元数据 |
conv.read_file() | 执行导入步骤 |
conv.write_file() | 执行导出步骤 |
conv.drawing | read_file() 产生的 Drawing,或 None |
conv.delete_drawing() | 释放图纸占用的内存 |
conv.succeeded | 上一次操作成功则为 True |
conv.progress | 进度百分比(0-100) |
conv.cancel() / conv.cancelled | 取消,以及是否已取消 |
conv.import_log | 导入日志,类型为 IEventLogReader |
conv.export_log | 导出日志,类型为 IEventLog |
导出格式在创建转换时即已确定,因此 export_format 是只读的——请把它传给 append_new()。
FormatRegistry
LinkCAD 可读写格式的单例注册表。
from linkcad.v1.conv import FormatRegistry
registry = FormatRegistry.get_instance()for info in registry.import_formats: file_filter, display_name = registry.import_format_filter(info.plugin_name) print(f"{display_name}: {file_filter}")| 属性 / 方法 | 说明 |
|---|---|
FormatRegistry.get_instance() | 静态方法——获取单例注册表 |
registry.import_formats / registry.export_formats | 每个已注册格式对应一个 FormatInfo |
registry.import_format(plugin_name) / registry.export_format(plugin_name) | 该格式的 Format 约束,或 None |
registry.import_format_filter(plugin_name) / registry.export_format_filter(plugin_name) | (file_filter, display_name) 元组 |
registry.default_extension(plugin_name) | 默认文件扩展名 |
registry.import_format_licensed(plugin_name) / registry.export_format_licensed(plugin_name) | 许可检查 |
registry.plugin_name_from_id(id) | 解析数字格式 ID |
许可管理器由宿主应用程序在任何脚本运行之前装入,因此 get_instance() 不接受参数。
FormatInfo
注册表描述格式条目时返回。
| 属性 | 说明 |
|---|---|
info.id | 唯一格式 ID |
info.plugin_name | 插件名称(例如 "GDSII") |
info.display_name | 可读的显示名称 |
info.licensed | 该格式是否已授权 |
Format
文件格式对图层名和单元名施加的验证约束。格式插件构造一个 Format 来声明自身支持的内容;FormatRegistry.import_format() 返回内置格式的约束。
from linkcad.v1.conv import Format, FormatAttributes
fmt = Format()fmt.attributes = FormatAttributes.LAYER_NUMBERS | FormatAttributes.LAYER_NAMESfmt.set_layer_number_range(0, 255)fmt.layer_max_length = 32| 属性 / 方法 | 说明 |
|---|---|
Format() | 创建带默认属性的格式描述符 |
fmt.attributes | 格式能力标志;可赋值 |
fmt.layer_max_length / fmt.cell_max_length | 名称最大长度;可赋值 |
fmt.set_layer_number_range(min, max=-1) | 设置有效的图层编号范围 |
fmt.set_valid_layer_chars(char_set, initial_chars=None, preferred_prefix=None) | 设置图层名允许的字符 |
fmt.set_cell_number_range(min, max=-1) | 设置有效的单元编号范围 |
fmt.set_valid_cell_chars(char_set, initial_chars=None, preferred_prefix=None) | 设置单元名允许的字符 |
fmt.set_file_name_extension(ext) | 设置单元文件名的扩展名 |
fmt.layer_min_number / fmt.layer_max_number | 当前图层编号范围 |
fmt.cell_min_number / fmt.cell_max_number | 当前单元编号范围 |
fmt.layer_char_set / fmt.cell_char_set | 当前有效的字符集 |
fmt.is_valid_layer_name(layer_name, auto_uppercase=False) | 验证一个图层名 |
fmt.is_valid_cell_name(cell_name, auto_uppercase=False) | 验证一个单元名 |
fmt.validate_layers(drawing, copy_from_input=True, allow_duplicates=False) | 验证图纸中的图层 |
fmt.validate_cells(drawing, copy_from_input=True) | 验证图纸中的单元 |
set_layer_number_range() 和 set_cell_number_range() 仍是方法:一次接受多个值的设置器无法写成赋值。
FormatAttributes
表示格式能力的位标志常量。用 | 组合后赋给 Format.attributes。
| 常量 | 含义 |
|---|---|
FormatAttributes.NONE | 无特殊属性 |
FormatAttributes.LAYER_NUMBERS | 格式支持图层编号 |
FormatAttributes.LAYER_NAMES | 格式支持图层名 |
FormatAttributes.LAYER_FILE_NAMES | 格式把图层名存为文件名 |
FormatAttributes.LAYER_COMMENTS | 格式支持图层注释 |
FormatAttributes.LAYER_COLORS | 格式支持图层颜色 |
FormatAttributes.LAYER_ELEVATION | 格式支持图层高程/Z 值 |
FormatAttributes.LAYER_FLASHED_RECTS | 格式支持闪烁矩形 |
FormatAttributes.LAYER_FLASHED_CIRCLES | 格式支持闪烁圆 |
FormatAttributes.LAYER_FILLED_POLYGONS | 格式支持填充多边形 |
FormatAttributes.LAYER_OUTLINED_POLYS | 格式支持轮廓多边形 |
FormatAttributes.LAYER_POLARITY | 格式支持图层极性 |
FormatAttributes.CELL_NUMBERS | 格式支持单元编号 |
FormatAttributes.CELL_NAMES | 格式支持单元名 |
FormatAttributes.CELL_FILE_NAMES | 格式把单元名存为文件名 |
FormatAttributes.CELL_NAMES_IGNORE_CASE | 单元名匹配忽略大小写 |
FormatAttributes.SUPPORT_BULGE_POLYGONS | 格式支持带凸度的多边形 |
FormatAttributes.MULTIPLE_FILES | 格式可读写多个文件 |
FormatAttributes.SINGLE_PASS | 格式可单遍完成 |
FormatAttributes.DIRECTORY_OUTPUT | 格式写出一个目录 |
FormatAttributes.DIRECTORY_INPUT | 格式读取一个目录 |
FormatAttributes.SOURCE_INSPECTION | 格式支持源检查元数据 |