Il mio grande amico e collega A.S. mi chiama qualche giorno fa per sottopormi un problema: ha dei dati in una tabella di un database Microsoft Access che vorrebbe utilizzare all’interno di Dynamo.
Dynamo, per chi non lo conosce, è un ambiente di programmazione visuale che consente di elaborare informazioni semplicemente collegando tra di loro dei “nodi”, che effettuano delle operazioni, con dei “collegamenti” che invece portano i dati.
Generalmente in questi casi si cerca su Internet un “nodo” che faccia al caso nostro ma la ricerca non ha dato risultati positivi: non avendo niente di meglio da fare durante le vacanze di Pasqua (tanto mia moglie non legge questo Blog…) ho cercato una maniera per risolvere il problema.
E quindi, visto che sto anche preparando un corso sul tema, ho scritto un “nodo” utilizzando del codice in linguaggio Python che fa esattamente questo: avendo in ingresso un nome di un file di database di MS Access produce in uscita una lista con i nomi dei campi della tabella richiesti ed il contenuto dei record.
Il nodo accetta tre parametri, di cui solo il primo obbligatorio:
- se si immette solo il nome del file il nodo ritorna l’elenco delle tabelle presenti nel database;
- se si immette in più il nome della tabella si ottengono tutti i record con tutti i campi
- se si immette un elenco di campi separati da virgola vengono estratte le informazioni solo da quei campi (se ci sono spazi nei nomi dei campi bisogna mettere questi nomi tra parentesi quadre, es. [Nome Azienda])
Nell’esempio della figura qui sopra ho generato dei dati casuali ed ho creato con essi una tabella in MS Access contenente delle coordinate (X,Y,Z); ho fatto poi leggere questi dati a Dynamo con il nodo che ho creato e quindi gli ho fatto disegnare i punti.
Quello che avviene dietro le quinte in realtà è che Dynamo lancia MS Access – che quindi deve essere installato sulla macchina perché questo “nodo” funzioni – e lo interroga per ottenere le informazioni richieste. Semplice ed efficace.
Potete trovare il codice Python del nodo ed un esempio del utilizzo in Dynamo seguendo questo link
PS: Un collega mi ha fatto notare che nell’esempio ho usato il nodo “Points.NumbersToPoint” che non è presente di default ma richiede l’installazione del package “LunchBox”.