Skip to content

Commit

Permalink
Adds support for hierarchical sheets when rewriting schematics files.
Browse files Browse the repository at this point in the history
Recursively proceses hierarchical sheets when rewriting schematics
files.

This only affects KiCad 8+.
  • Loading branch information
gonzalop committed Aug 2, 2024
1 parent ec4aee0 commit bf9de69
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions schematicexport.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ def _update_schematic(self, path):
lastLoc = m.group(4)
lastRef = value
for part in store_parts:
if value == part[0]:
newLcsc = part[3]
if value == part["reference"]:
newLcsc = part["lcsc"]
break
# if we hit the pin section without finding a LCSC property, add it
m = pinRx.search(inLine)
Expand Down Expand Up @@ -206,10 +206,8 @@ def _update_schematic8(self, path):
with open(path, encoding="utf-8") as f:
lines = f.readlines()

if os.path.exists(path + "_old"):
os.remove(path + "_old")
os.rename(path, path + "_old")
partSection = False
files_seen = set() # keeps sheet files already processed.

for i in range(0, len(lines) - 1):
inLine = lines[i].rstrip()
Expand All @@ -230,7 +228,7 @@ def _update_schematic8(self, path):
value = m.group(2)
lastLcsc = value
if newLcsc not in (lastLcsc, ""):
self.logger.info("Updating %s on %s", newLcsc, lastRef)
self.logger.info("Updating %s on %s in %s", newLcsc, lastRef, path)
outLine = outLine.replace(
'"' + lastLcsc + '"', '"' + newLcsc + '"'
)
Expand All @@ -245,6 +243,12 @@ def _update_schematic8(self, path):
if value == part[0]:
newLcsc = part[3]
break
if key == "Sheetfile":
file_name = m.group(2)
if file_name not in files_seen:
files_seen.add(file_name)
dir_name = os.path.dirname(path)
self._update_schematic8(os.path.join(dir_name, file_name))
# if we hit the pin section without finding a LCSC property, add it
m3 = pinRx.search(inLine)
if m3 and partSection:
Expand All @@ -263,6 +267,9 @@ def _update_schematic8(self, path):
lastRef = ""
newlines.append(outLine)
newlines.append(lines[len(lines) - 1].rstrip())
if os.path.exists(path + "_old"):
os.remove(path + "_old")
os.rename(path, path + "_old")
with open(path, "w", encoding="utf-8") as f:
for line in newlines:
f.write(line + "\n")
Expand Down

0 comments on commit bf9de69

Please sign in to comment.