Photo by Christin Noelle on Unsplash

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

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 di progetto o BIM Coordinator ha aggiunto parametri necessari per uno specifico progetto o model use?

Ci vorrebbe una procedura più semplice e più scura 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 accesso 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 a una riga sul file txt (in realtà ne ho aggiunte un paio all’inizio, ma sono solo commenti, trasparenti all’interprete di Revit)

No alt text provided for this image

No alt text provided for this image

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 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.

No alt text provided for this image

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, MINVERSIONNo alt text provided for this image

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.No alt text provided for this image

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.No alt text provided for this imageNo alt text provided for this image

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 d’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 questaNo alt text provided for this image

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.No alt text provided for this image

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

No alt text provided for this image

Nella cella selezionata comparirà il GUID del parametro condiviso.No alt text provided for this image

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.No alt text provided for this image

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.No alt text provided for this imageNo alt text provided for this image

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.No alt text provided for this imageNo alt text provided for this image

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 quinta riga aggiunge il menu all’interfaccia grafica

Funzione spaiGuid()

  • La riga nove crea l’accesso allo spreadsheet e 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

A un certo punto al momento del salvataggio, Google vi chiederà di dare le autorizzazioni all’applicazione, date pure l’ok per le autorizzazioni.No alt text provided for this imageNo alt text provided for this image

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 e 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.

Link Google sheet

Per i più pigri lascio anche il link diretto qui.
Attenzione che per utilizzarlo dovete comunque fare gli ultimi passaggi per dare le giuste autorizzazioni.
Per accedere alle schermate delle autorizzazioni dovete far girare lo script nell’editor dello script.

Lo lascio aperto, così se volete copiarvelo nel vostro Google Drive potete farlo. Okkio che se fate confusione su questo file poi chi lo aprirà dopo non potrà più utilizzarlo

Troverete questo articolo anche su:

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

Articoli correlati

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

Torna in alto