Lorsque je change un peu le câblage du fichier .brd d'Eagle, le masque métallique ne peut pas être réutilisé si la position de la pièce est également modifiée. Je veux éviter cela autant que possible, mais sans le remarquer lors du changement de câblage Pour éviter cela, j'ai écrit un programme en Python qui peut vérifier les changements dans le mouvement des pièces invisibles à l'œil humain, c'est donc un mémo.
Le "nom" de la pièce avant et après le changement est le même.
Nous profitons du fait que le fichier .brd d'Eagle est un fichier xml. Tout d'abord, recherchez l'élément avec le même attribut "nom" dans l'élément "élément" de l'ancien fichier et l'élément "élément" du nouveau fichier. Après cela, si les coordonnées x ou y sont différentes, le nom de la pièce et les coordonnées (x, y) avant et après le changement sont affichés, et s'il n'y a pas de problème, "Aucune erreur" s'affiche. ..
# -*- coding: utf-8 -*-
from xml.etree.ElementTree import *
def check(file1, file2):
c = 1
tree1 = parse(file1)
elem1 = tree1.getroot()
tree2 = parse(file2)
elem2 = tree2.getroot()
for e1 in elem1.getiterator("element"):
for e2 in elem2.getiterator("element"):
if e1.get("name", ) == e2.get("name", ):
if e1.get("x") != e2.get("x") or e1.get("y") != e2.get("y"):
print "Error"
print "Parts Name = " + e1.get("name")
print ("x1=" + e1.get("x")) * (e1.get("x") != e2.get("x"))
print ("x2=" + e2.get("x")) * (e1.get("x") != e2.get("x"))
print ("y1=" + e1.get("y")) * (e1.get("y") != e2.get("y"))
print ("y2=" + e2.get("y")) * (e1.get("y") != e2.get("y"))
c = 0
return c
if __name__ == "__main__":
file1 = raw_input() #Entrez le chemin du fichier avant la modification
file2 = raw_input() #Entrez le chemin du fichier modifié
print "No error" * check(file1, file2)
Contrairement à la commande Linux "diff", elle peut être appliquée même si l'ordre de "element" est différent.
Référence: http://hikm.hatenablog.com/entry/20090206/1233950923
Recommended Posts