# Punto di ingresso unico del progetto: seleziona da riga di comando quale # azione eseguire. # # python main.py mesh # disegna la sola mesh a elementi shell # python main.py fem # animazione 3D del campo FEM sulla mesh shell # python main.py csv # esporta in CSV la serie temporale del FEM # # Senza argomenti stampa l'elenco delle azioni disponibili. import argparse import sys def _azione_mesh() -> None: import plot_mesh plot_mesh.main() def _azione_fem() -> None: import plot_animazione_fem plot_animazione_fem.main() def _azione_csv() -> None: import esporta_csv esporta_csv.main() # Chiave da riga di comando -> (funzione, descrizione mostrata nell'help). AZIONI = { "mesh": (_azione_mesh, "Disegna la mesh a elementi shell della fascetta"), "fem": (_azione_fem, "Animazione 3D del campo FEM sulla mesh a elementi shell"), "csv": (_azione_csv, "Esporta in CSV la temperatura simulata e la lettura del sensore"), } def main() -> None: parser = argparse.ArgumentParser( description="Analisi termica FEM della fascetta riscaldata a induzione.", formatter_class=argparse.RawTextHelpFormatter, ) parser.add_argument( "azione", nargs="?", choices=list(AZIONI), help="\n".join(f"{nome}: {descrizione}" for nome, (_, descrizione) in AZIONI.items()), ) argomenti = parser.parse_args() if argomenti.azione is None: parser.print_help() sys.exit(1) AZIONI[argomenti.azione][0]() if __name__ == "__main__": main()