如何从Python BOM生成脚本读取KiCad页面设置值
解决KiCad V6 BOM脚本自动提取标题、版本并生成自定义文件名的方案
1. 利用KiCad Python API直接提取原理图页面信息
在你修改的bom_csv_grouped_by_value.py脚本中,KiCad会自动传入原理图的sch对象,直接通过API访问页面设置的Title和Revision字段:
# 在脚本的generate_bom函数内添加以下代码 # 获取页面设置的标题块信息 page_settings = sch.GetPageSettings() title_block = page_settings.GetTitleBlock() # 提取Title和Revision,为空时设置默认值 project_title = title_block.GetTitle() or "Untitled Project" project_rev = title_block.GetRevision() or "A"
2. 自动生成当前日期
使用Python的datetime模块生成符合格式的日期字符串:
from datetime import datetime # 生成dd-mm-yy格式的日期 current_date = datetime.now().strftime("%d-%m-%y")
3. 构建自定义BOM文件名
将提取的信息组合成目标文件名,替换原来的项目名命名逻辑:
# 构建最终文件名 bom_filename = f"BOM for {project_title} rev{project_rev} {current_date}.xlsx" # 后续保存Excel文件时使用这个文件名 # 例如,如果你用pandas保存: # df.to_excel(bom_filename, index=False)
4. 备用方案:直接解析原理图XML文件
如果KiCad API访问出现问题,可直接解析.kicad_sch文件(XML格式)获取字段:
import xml.etree.ElementTree as ET import sys # 获取KiCad传入的原理图路径参数 sch_path = sys.argv[1] tree = ET.parse(sch_path) root = tree.getroot() # 定位title_block节点并提取字段 title_block = root.find(".//title_block") if title_block is not None: project_title = title_block.findtext("title", default="Untitled Project") project_rev = title_block.findtext("rev", default="A") else: project_title = "Untitled Project" project_rev = "A"
注意事项
- 确保原理图的页面设置中已正确填写Title和Revision字段,否则会使用默认值
- 日期格式可根据需求调整,比如
%Y-%m-%d生成2022-11-17格式 - 如果脚本中原本依赖项目名生成文件名,替换为上述自定义文件名即可
内容的提问来源于stack exchange,提问作者AngusE
相关产品推荐
相关产品推荐

