跳转到内容

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.drawingread_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_NAMES
fmt.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格式支持源检查元数据