Introduzione alla programmazione per ingegneri meccanici

Figura 1 Contenuto del file batch (estensione .bat) per copiare i file da una cartella ad un’altra. Il codice “rem” è un’abbreviazione di remarks, ossia commento. Serve appunto per identificare quali siano i commenti nel file e quindi quali linee non devono essere lette dal “prompt”.

Nell’ambito dell’ingegneria meccanica in continua evoluzione, la programmazione sta emergendo come una competenza cruciale. I progettisti e i disegnatori devono ora padroneggiare non solo le leggi fisiche, ma anche avere delle conoscenze sempre più approfondite di informatica. La progettazione sta passando dal basarsi sui prototipi reali a quelli virtuali. In questo articolo, esploreremo i concetti base per poterci avvicinarci al mondo della programmazione

di Carlo Augusto Pasquinucci

La programmazione è il processo di creazione di programmi utilizzando linguaggi specifici. Essi sono una serie di istruzioni che consentono a un processore di eseguire operazioni o compiti specifici. Ovviamente, per progettare software complessi sono necessarie conoscenze approfondite. Per fortuna, esiste anche la possibilità di crearne anche più semplici per risolvere operazioni meno generali e più specifiche. Questi vengono comunemente chiamati “script” o “macro”, a seconda se vengono eseguiti direttamente dal sistema operativo o all’interno di un software.

Essi sono composti normalmente da qualche decina di righe di istruzioni e servono per eseguire operazioni di ripetitive e di routine specifiche. Possiamo dividerli in tre macrocategorie:

  • Operazioni sui file (spostamento, rinomina, cancellazione, riordino, etc …)
  • Operazioni sui dati all’interno dei file (calcoli statistici, creazione di grafici, riordino di dati, etc …)
  • Operazioni all’interno di un software, che vengono specificamente chiamati macro.

Lo scopo è quello di avere un “assistente digitale” che può eseguire compiti tediosi o calcoli complessi in modo rapido e affidabile, consentendoci di concentrarci su attività di progettazione più creative e strategiche.

Figura 2 Contenuto del file Python (estensione “.py”) per effettuare lo spostamento dei file presenti in una cartella in un’altra. Rispetto al caso precedente, le righe di commento vengono identificate con il simbolo: “#”.
Il linguaggio di programmazione

Ovviamente, questi programmi devono essere scritti in un linguaggio specifico, con una sintassi particolare.

In generale, sarebbe quindi meglio cominciare a studiare un singolo linguaggio di programmazione, in base a quello che sono le necessità e per lo scopo più contingente. Passare da un linguaggio ad un altro non è ovviamente particolarmente difficile, anche se non esistono ancora software di “traduzione” capaci e robusti: bisogna quindi riscrivere tutto lo script da zero.

I linguaggi si possono dividere in due grandi categorie:

  • I linguaggi compilati (C, C++, Fortan, etc …)
  • I linguaggi interpretati (Java, Visual Basic, Python, etc …)

La differenza sostanziale è che i programmi scritti con i primi devono essere appunto compilati, ossia tradotti in linguaggio macchina prima di essere eseguiti. I secondi, invece, possono essere eseguiti direttamente. Ovviamente, i software scritti con i linguaggi compilati hanno delle prestazioni migliori, ma per semplici script la differenza è praticamente nulla. Per questo motivo, conviene inizialmente cominciare a studiare un linguaggio interpretato.

Figura 3 Grafico creato in Python utilizzando il modulo MatPlotLib. Come si può vedere, esso può creare dei grafici ben più complessi di quelli in Excel
Macro

Nel caso in cui si eseguano ripetutamente le stesse attività all’interno di un software, è possibile automatizzarle utilizzando una macro. Una macro è un’azione o un insieme di azioni che è possibile eseguire per un numero illimitato di volte. Un caso classico è l’esportazione in un determinato formato di tutte le parti di un assieme. O l’esportazione dei nomi e delle caratteristiche delle parti di un assieme per creare una distinta in un formato particolare. O ancora, l’inserimento di parti in un assieme in determinate posizioni. Nel caso in cui si debbano effettuare tante volte queste operazioni, conviene appunto utilizzare una macro.

In questo caso, la scelta del linguaggio da utilizzare è obbligata. Ogni programma ha il suo linguaggio in cui vengono scritte: Visual Basic per Excel, Solidworks e Catia V5, JavaScript per Star++, Python per Paraview e alcuni moduli di Ansys.

La creazione di una macro

Per poter creare una macro, conviene sfruttare la funzione denominata normalmente: “registra marco” o “registra operazioni”. In questo modo, il software stesso, mentre si eseguono manualmente le varie operazioni, trascriverà i relativi comandi in una macro che potrà poi essere salvata e successivamente modificata e utilizzata. In questo modo, basterà effettuare l’operazione una volta e poi si potrà lasciar lavorare il computer.

Ovviamente, spesso questo script deve essere in parte modificato. Molto probabilmente si dovrà includere la macro in un ciclo “for”, in modo da far effettuare quelle operazioni un determinato numero di volte, pari magari al numero delle parti. In particolare, si dovrà prestare molta attenzione ai nomi dei file e alle directory presenti. Inoltre, in alcuni casi, il programma scrive anche tutta una serie di comandi che riguardano i movimenti del mouse o impostazione di visualizzazione. Molto spesso, è possibile eliminarli, in modo da fare girare le macro più velocemente.

File BATCH

Per quanto riguarda, invece, le operazioni sui file, è possibile utilizzare due strade diverse.

In Windows, è possibile utilizzare il linguaggio del “Prompt dei comandi” e creare dei file batch (con estensione “.bat”). In questi file, si possono inserire le stringhe di comando che poi vengono eseguite direttamente dal “cmd”. Il file “.bat” sottostante, per esempio, sposta tutti i file presenti in una cartella in un’altra denominata “archive”. Questo semplice script, per esempio, può essere appunto utilizzato per spostare più facilmente e velocemente i file utilizzati per un progetto nel nostro archivio aziendale. È un’operazione di routine molto frequente in azienda che può essere facilmente automatizzata. Per questo motivo, ha senso creare uno script apposito. Inoltre, lo spostamento tramite script è molto più veloce che col metodo classico del “copia e incolla”.

È ovviamente poi possibile anche rinominare la cartella con il numero della commessa, il giorno dell’archiviazione, etc … etc … secondo le regole aziendali, in modo completamente automatico e teoricamente esente da errori umani.

Per fare operazioni simili, è anche possibile utilizzare il linguaggio di programmazione “Python”, che funziona quasi indifferentemente sia su Linux che Windows. Nella figura sottostante è presente lo script in Python per l’archiviazione dei file.

Figura 4 Elenco di script che vengono mostrati cercando la parole chiave “SolidWorks”. Cercando fra i vari progetti, si possono trovare script molto utile già pronti all’uso o facilmente modificabili.
Elaborazione dei dati

Noi ingegneri meccanici, soprattutto se effettuiamo delle simulazioni, dobbiamo gestire sempre una gran mole di dati. Lo strumento che viene spesso utilizzato è ovviamente Excel, uno dei più grandi amici degli ingegneri.

Purtroppo, questo strumento ha delle grandi limitazioni, soprattutto per quanto riguarda il numero di celle disponibili e l’automatizzazione. Come abbiamo spiegato prima, in realtà, in Excel è sempre possibile utilizzare delle macro create in VBA, ma esso non è il linguaggio di programmazione più funzionale per trattare dei dati.

Quasi tutti noi abbiamo avuto a che fare ai tempi dell’università con MatLab, il software principe per le operazioni matematiche e per lavorare coi numeri. Purtroppo, esso è un software commerciale e come tale ha una licenza con un costo non indifferente.

Per fortuna, esiste anche la versione open-source e gratuita: “Python”. Esso, inoltre, è un linguaggio di programmazione completo. All’interno di esso, infatti, possono essere implementati diversi “moduli”, creati direttamente e liberamente dai programmatori di tutto il mondo. La parte più complicata risulta quella di trovare il modulo che sia correttamente implementato e che faccia effettivamente al caso nostro.

Per quando riguarda l’analisi dei dati, consiglio vivamente di utilizzare il modulo “NumPy”. Con esso, è possibile calcolare diversi valori statistici di una gran mole di dati.

Inoltre, Python può essere utilizzato anche per creare dei grafici complessi, sia in 2D che in 3D (ma anche in 4D e 5D, utilizzando le forme e le trasparenze), ma anche creando dei grafici animati, sotto forma di video e animazioni.

Per fortuna, da luglio, Windows ha implementato in Excel la possibilità di utilizzare i comandi di Python direttamente nei fogli di calcolo. Inizialmente, questa opportunità verrà implementata solo in Excel 365, ma si spera che in futuro venga data indipendentemente dalla licenza. In pratica, sarà possibile richiamare i comandi di Python direttamente nelle celle di calcolo, semplicemente digitando “=PY” nella cella desiderata.

Sicuramente potrà essere un metodo più semplice per effettuare analisi dati e creare grafici, ma penso che alla fine convenga crearsi direttamente i propri script, visto la facilità con cui si può imparare e usare Python.

Strumenti utili

Ovviamente non è sempre semplice costruire degli script o delle macro per noi ingegneri meccanici. Per fortuna, esistono diversi strumenti che ci possono aiutare.

È possibile trovare diversi script già completi e testati su siti di condivisione di codice, come per esempio Github (github.com). Esso è principalmente utilizzato da sviluppatori che caricano il codice sorgente di programmi e lo rendono scaricabile e migliorabile da altre persone. Questi ultimi possono scaricare e utilizzare il codice, segnalare errori o richiedere delle modifiche e implementazioni. Basta effettuare delle ricerche per trovare centinaia di script da utilizzare o da cui partire per implementare il proprio.

Inoltre, è sempre possibile creare un progetto da zero e invitare altre persone a implementarlo. Questo metodo è molto utile se lo script che si vuole creare è piuttosto complesso, ma si ritiene che possa interessare a molti. Ovviamente, il progetto sarà visibile a tutti, con i relativi problemi riguardanti la gestione dei segreti industriali.

Sulla mia pagina, per esempio, (https://github.com/Carlopasquinucci) ci sono diversi script utili per creare o gestire i file di openFoam, liberamente consultabili e utilizzabili da chiunque.

Un altro strumento sicuramente molto utile è Chat-GPT, sia nella sua versione gratuita che ovviamente in quella migliorata a pagamento. È possibile chiedere all’intelligenza artificiale di scrivere un codice o una macro per noi. Essendo un prodotto generato dall’intelligenza artificiale, bisogna utilizzarlo con molta cautela, soprattutto per macro in software poco diffusi. Per esperienza personale posso assicurare che spesso esso si “inventa” comandi non esistenti. È comunque utile per capire quale passaggi logici utilizzare per scrivere lo script. D’altro canto, bisogna spezzare una lancia a favore di Chat-GPT. I codici presenti in questo articolo sono stati scritti direttamente da chat-GPT (e ovviamente controllati e testati). Come potete vedere anche negli esempi riportati, esso crea un codice e commentandolo, rendendo sicuramente più intuibile la logica sottostante.

Per quanto riguarda, invece, la risoluzione dei problemi, vorrei segnalare l’esistenza del sito “Stack Overflow” (stackoverflow.com). Esso è un forum in cui è possibile effettuare delle domande e ricevere comenti e risposte da utenti, generalmente da ingegneri informatici o informatici puri, in maniera completamente gratuita. Ovviamente, è possibile anche visualizzare le domande di altri utenti e quindi più o meno facilmente trovare le risposte e capire come scrivere il nostro codice o perché il suo comportamento non è quello desiderato. Conviene utilizzare questo servizio quando ci si imbatte in errori o in comportamenti anomali e quindi è possibile circostanziare la domanda a poche righe di codice.

Conclusione

In questo articolo, abbiamo visto brevemente come noi ingegneri meccanici possiamo approcciarci al mondo della programmazione e utilizzare queste conoscenze per automatizzare il nostro lavoro e quindi essere più produttivi. Ovviamente, non potremo mai essere efficienti come un programmatore esperto, ma per lo meno, possiamo comprendere le macro create dai software e gli script presenti magari su appositi siti e modificarli per far loro effettuare automaticamente delle operazioni specifiche ma ripetitive.