Files
formation-arduino/schemas/generer.py
T
ArtemiaandClaude Opus 5.5 343a557332 Ajoute le générateur de schémas (schemdraw + matplotlib) et les figures du module 3
Charte commune (style.py), générateur SVG/PNG (generer.py) et 4 figures pour le module PWM & ADC : rapport cyclique, servo 50 Hz, montage du variateur, quantification ADC.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 14:38:29 +02:00

48 lines
1.2 KiB
Python

"""Génère les schémas (SVG + PNG) de tous les modules, ou de ceux passés en argument.
Usage : python schemas/generer.py [m03 ...]
"""
import importlib
import sys
from pathlib import Path
import matplotlib.pyplot as plt
ICI = Path(__file__).resolve().parent
sys.path.insert(0, str(ICI))
DOSSIER_SVG = ICI / "svg"
DOSSIER_PNG = ICI / "png"
def modules_figures(filtres=()):
"""Renvoie {préfixe 'mXX': [Figure, ...]} pour chaque fichier mXX_*.py."""
resultat = {}
for fichier in sorted(ICI.glob("m[0-9][0-9]_*.py")):
prefixe = fichier.stem[:3]
if filtres and prefixe not in filtres:
continue
resultat[prefixe] = importlib.import_module(fichier.stem).FIGURES
return resultat
def enregistrer(fig, id_):
if hasattr(fig, "fig"): # dessin schemdraw (backend matplotlib)
fig = fig.fig
fig.savefig(DOSSIER_SVG / f"{id_}.svg")
fig.savefig(DOSSIER_PNG / f"{id_}.png", dpi=200)
plt.close(fig)
def main():
DOSSIER_SVG.mkdir(exist_ok=True)
DOSSIER_PNG.mkdir(exist_ok=True)
for prefixe, figures in modules_figures(sys.argv[1:]).items():
for f in figures:
enregistrer(f.dessiner(), f.id)
print(f"{f.id} : OK")
if __name__ == "__main__":
main()