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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
059afa8b69
commit
343a557332
@@ -0,0 +1,47 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user