Files
Nixie_Tube_Clock/kibot_resources/scripts/get_sheet_title.py
aidanbrzezinski 1d094e6a04
Some checks failed
CI / release (push) Has been cancelled
CI / generate_outputs (push) Has been cancelled
Inital commit
2026-02-17 08:39:27 -05:00

50 lines
1.7 KiB
Python

import argparse
import xml.etree.ElementTree as ET
import sys
def get_sheet_title(file_path, page_number, dots_number):
try:
tree = ET.parse(file_path)
root = tree.getroot()
page_number = str(page_number)
titles = []
for sheet in root.findall(".//sheet"):
number = sheet.get("number")
if number == page_number:
# Get the last part of the 'name' attribute after '/'
name = sheet.get("name")
title_block = sheet.find("title_block")
title = title_block.find("title").text if title_block is not None else None
if name:
titles.append(name.split("/")[-2 if name.endswith("/") else -1])
if not titles:
print('.'*dots_number)
elif len(set(titles)) > 1:
print("Conflicting page numbers")
else:
print(titles[0])
except ET.ParseError:
print("Error: Invalid XML format")
except FileNotFoundError:
print("Error: XML File not found")
except Exception as e:
print(f"Error: {e}")
def main():
parser = argparse.ArgumentParser(description="Get the sheet title based on page number from a KiCad XML file")
parser.add_argument("-p", "--page-number", type=int, required=True, help="Page number to search")
parser.add_argument("-f", "--file", type=str, required=True, help="Path to the schematic XML file")
parser.add_argument("-d", "--dots-number", type=int, required=True, help="Number of dots for empty lines")
args = parser.parse_args()
get_sheet_title(args.file, args.page_number, args.dots_number)
if __name__ == "__main__":
main()