Photo by Christin Noelle on Unsplash

Revit Shared Parameters corrotto. Workflow per non perdere mai i dati con Google Sheet

AGGIORNAMENTO

Ho risistemato il foglio di Google Sheets.
Lo avevo lasciato aperto per poter permettere alle persone di fare prove e di vedere il codice ed il “dietro le quinte”, ma come sempre c’è chi se ne è approfittato, andando a cambiare codici ed altro e quindi non funzionava più.

Adesso se volete giocarci dovete prima copiarvelo sul vostro DRIVE (quindi dovete avere per forza un account Google) e poi ci potete fare quello che volete.

The nightmare

Uno degli incubi di chi lavora con Revit è accorgersi che “qualcuno” ha corrotto il file degli SharedParametrs. Certo i più accorti avranno una copia di Backup.

Sarà l’ultima versione? Qualche responsabile o BIM Coordinator ha aggiunto parametri necessari per uno specifico progetto o model use?

Ci vorrebbe una procedura più semplice e più sicura per la gestione di questo file fondamentale.

Premessa

Shared parameters, quei parametri che possono essere utilizzati trasversalmente a più modelli e famiglie.

Abbiamo il bisogno di aggiungerli, modificarli o cancellarli durante la gestione del progetto e del modello e spesso la procedura risulta lenta e noiosa.

Stavo perciò cercando un modo per snellire la procedura e renderla anche più robusta dal punto di vista della sicurezza del dato.

Il file che contiene gli Shared parameters è un file txt, accessibile a tutti e sul quale tutti possono fare modifiche. Perché dunque non gestirlo in maniera più semplice e soprattutto più sicura?

Amo la suite di Google e quindi ho deciso di creare un Google sheet per la gestione di questi parametri.

Innanzi tutto aggiungere, rimuovere o modificare un parametro condiviso è un’attività che va fatta secondo logiche ben precise, con una nomenclatura definita e quindi solo chi svolge all’interno dello studio mansioni di coordinamento e controllo (BIM Manager, BIM Coordinator o BIM specialist formati su questo) dovrebbero avere accesso a tale file.

Mettiamo ad esempio che un nostro collaboratore, la classica “scheggia impazzita” faccia una modifica al file degli shared parameters tramite l’interfaccia di Revit, oppure lo modifichi da notepad, peraltro il primo disclaimer da non fare che appare sul file txt. Come facciamo a ripristinare il vecchio?

Una soluzione è una copia di Backup del file txt, vediamo se c’è il modo di utilizzare sistemi più agili e sicuri per la gestione del file e soprattutto della sua modifica.

Gestire quindi i parametri condivisi con un Google sheet offre sia un controllo su chi ha aceesso al file, andando a dare accessi differenti ad utenti differenti (penso ad esempio a collaboratori che possono solo dare suggerimenti, senza che questo modifichi il file) sia un modo meno laborioso e più controllabile della finestra standard di Revit.

Impostazione Google Sheet

Il foglio di Google è impostato sulla falsa riga del file txt di Revit. Ogni riga del foglio corrisponde ad una riga sul file txt (in realtà ne ho aggiunte un paio all’inizio, ma sono solo commenti, trasparenti all’interprete di Revit).

.

Il foglio di Google dunque replica le informazioni presenti nel file SharedParameters.txt. Presenta però alcune semplificazioni per la sua compilazione o manutenzione.

Una delle funzioni che semplifica la gestione del foglio dei parametri condivisi è il menù a discesa che permette di scegliere il tipo di di Datatype con la sicurezza di non digitare male il nome del tipo. Collegando la cella alla convalida dati si crea così il menù a tendina per inserire il giusto DataType.

La parte più interessante di tutto il Google Sheet è quella data dal fatto che Google permette di utilizzare nei suoi fogli, e nelle altre applicazioni Google, Google Apps Script, un linguaggio molto simile al Javascript scritto da Google per la sua suite Google Workspace. Infatti con Apps Script ho aggiunto un Menu alla barra dei menu, per richiamare la funzione che genererà il GUID che è necessario a Revit per la gestione dei parametri condivisi.

Compilazione iniziale Google sheet.

Ma vediamo come creare il Google Sheet in modo che sia funzionante.

Le prime righe sono precedute ad un # e sono i commenti al foglio, potete aggiungere quante righe di commenti volete, a patto di non andare a capo all’interno di una cella ma di utilizzare ogni riga di celle per una riga di commenti.

Per avere un file txt più pulito ho deciso di unire le prime 10 colonne di ogni riga di commenti, ma non è necessario e lasciare le celle divise porterà solo ad una formattazione poco elegante nel file txt degli shared parameters ma senza influire sul funzionamento.

Dopo i commenti è obbligatorio inserire la riga con i valori *META, VERSION, MINVERSION

Anche in questo caso ho deciso, per pulizia di codice di unire le 8 celle del gruppo MINVERSION.

Inseriamo poi la riga con i valori META, 2, 1 con la logica della riga precedente.

Seguono poi le righe riferite ai gruppi.

La prima riga contiene i campi *GROUP, ID, NAME

Le righe sottostanti iniziano sempre con il campo GROUP, mentre l’ID della riga e il NAME sono liberi.

L’ID del gruppo, come vedremo dopo, legherà il parametro condiviso al giusto gruppo di appartenenza, il nome del gruppo è quello che apparirà nel menu a discesa della maschera dei parametri condivisi di Revit.

Come avrete intuito le righe che iniziano con l’asterisco * , sono quelle che ci danno informazioni su come compilare i campi e a quale campo faranno riferimento le celle compilate.

Il prossimo passaggio è quello di compilare i parametri veri e propri.

la riga di intestazione è composta da *PARAM, GUID, NAME, DATATYPE, DATACATEGORY, GROUP, VISIBLE, DESCRIPTION, USERMODIFIABLE, HIDEWHENNOVALUE.

Oltre alle colonne con i nomi più intuitivi, ce ne sono altre più criptiche. Ho fatto alcune ricerche per capire come funzionano realmente, ed il loro uso non è così immediato. Mi riprometto di scrivere un articolo solo per questo, ma dovrò farlo con esempi pratici per renderlo più user-friendly.

Cerchiamo di capire cosa significano questi parametri:

  • PARAM: Intestazione della riga per far capire a Revit cosa sta leggendo;
  • GUID: Globally Unique Identifier, un identificativo univoco per rendere unico un parametro;
  • NAME: il nome del parametro;
  • DATATYPE: il tipo di dato che stiamo creando, se è un testo, un intero, un’area ecc. ecc.;
  • DATACATEGORY: questo parametro è disponibile sono quando il DATATYPE è <Family Type…>, in questo Google Sheet non è previsto l’inserimento del DATATYPE <Family Type…> e non verrà quindi modificato;
  • GROUP: il numero del gruppo a cui si riferisce il parametro. Questo numero si riferisce all’ID del gruppo creato precedentemente;
  • VISIBLE: imposta se il parametro è visibile o meno all’utente. Può essere un parametro compilato, ma che risulta invisibile nella famiglia, che sia di tipo o di istanza;
  • DESCRIPTION: è la descrizione che appare nel Tooltip Description quando si creano i parametri;
  • USERMODIFIABLE: indica che un parametro non può essere modificato tramite l’interfaccia di Revit ma solamente via API (quindi la parte di scripting e programmazione);
  • HIDEWHENNOVALUE: Indica che se il parametro non ha valore non viene visualizzato nella maschera dei parametri.

Procediamo quindi alla compilazione dei parametri.

Per comodità copiare le colonne A e da C a J, lasciando la colonna B vuota.

Andare a modificare i valori necessari, come NAME, DATATYPE, DATACATEGORY, GROUP, DESCRIPTION. Se proprio volete cambiare anche gli altri parametri, vi consiglio una ricerca approfondita sul loro funzionamento o di lasciarli quindi con i seguenti valori:

  • VISIBLE: 1:
  • USERMODIFIABLE: 1;
  • HIDEWHENNOVALUE: 0.

Appena copiate tutte le celle necessarie e modificate in base alle esigenze, ci troveremo in una situazione come questa

Fatto questo possiamo procedere alla creazione del parametro GUI.

Attenzione, questo passaggio è importante, bisogna cliccare sulla cella dove vogliamo far apparire il parametro GUID, quindi la cella vuota. Se clicchiamo su una cella che contiene già il GUID, questo verrà sovrascritto.

E questo è male, molto male.

Infatti Revit non riconoscerà più il parametro, in quanto per Revit il nome del parametro è ininfluente, mentre il GUID è quello che gli permette di identificarlo univocamente.

A questo punto cliccare sul menu Spaikid App che trovate alla fine della barra dei menu (si lo so, sono egocentrico) e poi su Generate GUID.

Nella cella selezionata comparirà il GUID del parametro condiviso.

Quando avete finito di compilare le righe con i parametri che ritenete necessari potete esportare il file.

Per esportare il file andare su File -> Scarica -> Valori delimitati da tabulazioni (.tsv, foglio corrente).

Sapete la differenza tra un csv, ed un tsv, e tutto il vaso di pandora che si apre quando decidiamo di utilizzare questi formati?

Casomai ne riparliamo in un altro articolo.

Ma non vi preoccupate, in questo caso, oltre l’estensione, Google fa tutto da solo senza creare problemi.

Appena scaricato il file, andate nella cartella dei download predefinita del vostro Browser e rinominate il file con il nome che preferite e l’estensione .txt.

Ecco creato il vostro file di parametri SharedParameters.txt da caricare su Revit.

Fino a qui tutto chiaro? Non penso, anche perché non vi ho fatto vedere ancora il “dietro le quinte”.

Behind the scene — the making off

Cella DATATYPE.

Per la cella datatype ho creato una seconda tab dello sheet, dove ho inserito la lista dei datatype disponibili. Attenzione che quelli che vedete sono gli unici disponibili, quindi non vi inventate tipi di dato strani.

Scritti i valori da inserire nella cella possiamo utilizzare la funzione Convalida Dati per definire il menu a discesa.

Fatto la prima volta, vi conviene fare copia ed incolla della cella, quando vi serve inserire una nuova riga.

Menu personalizzato e creazione GUID

Passiamo ora alla parte complicata, la parte di aggiunta del Menu e della funzione.

Dal menu Strumenti -> Editor Script si aprirà la pagina per la gestione degli script Google Apps Script.

Questo è il codice che genera sia il menù che la funzione che gestisce la creazione del GUID.

Funzione onOpen()

  • La prima riga crea la funzione principale. onOpen dice a Google Sheet di richiamare questa funzione ogni volta che apriamo lo sheet.
  • la seconda riga crea l’accesso all’interfaccia grafica di google Sheet
  • la terza riga crea il menù chiamato Spaikid App nell’interfaccia grafica di google sheet.
  • la quarta riga aggiunge un elemento con il nome Generate GUID e lo associa alla funzione spaiGuid() che creeremo dopo
  • la riga 5 aggiunge il menu all’interfaccia grafica

Funzione spaiGuid()

  • la riga nove crea l’accesso allo spreadsheet ed allo sheet attivo, cioè quello dove stiamo lavorando;
  • la riga undici memorizza la posizione della cella selezionata;
  • la riga dodici scrive nella cella selezionata il valore restituito dalla funzione guid()

Funzione guid()

  • l’unica cosa che fa la funzione, nella riga sedici è creare un GUID formattato secondo lo standard Windows.

Ecco fatto.

Autorizzazioni

Ad un certo punto al momento del salvataggio, Google vi chiederà di dare le autorizzazioni all’applicazione, date pure l’ok per le autorizzazioni.

Tornando nel foglio di lavoro troverete il menu appena creato.

Consigli

Un paio di consigli.

  1. Se volete cancellare un parametro, cancellate tutta la riga corrispondente al parametro, e non solo le celle.
  2. Per aggiungere un nuovo gruppo, aggiungete una riga sotto l’ultimo gruppo presente compilando i giusti parametri.
  3. Siate certi che dopo l’ultima riga dei parametri, non sia presente altro testo o la casella a discesa del DataType, altrimenti Google Sheet esporterà anche quella riga e Revit non riuscirà a leggere il file correttamente.
  4. Se volete aggiungere parametri ai gruppi e mantenere ordine nel file inserire una nuova linea sotto l’ultimo parametro di un dato gruppo così da avere i parametri raggruppati per gruppo.

Disclaimer

Ho cercato di utilizzare quanto più possibile una terminologia semplice e forse poco accurata, soprattutto per chi già si intende di programmazione. Questo vuole però essere un articolo divulgativo, che tutti possano leggere, capire ed applicare.

Per chi volesse approfondire trovate tutte le informazioni necessarie sul sito di Google https://developers.google.com/apps-script o guardando i mille video che trovate su internet.

Spero di essere stato esaustivo e chiaro, se avete dubbi o qualche cosa non funziona nel modo giusto lasciatemi un commento o mandatemi una mail.

Troverete questo articolo anche su:

  1. LinkedIn: https://www.linkedin.com/in/sandro-pellegrinetti/
  2. Medium : https://medium.com/jug44d
Articolo creato 24

Articoli correlati

Inizia a scrivere il termine ricerca qua sopra e premi invio per iniziare la ricerca. Premi ESC per annullare.

Torna in alto