Cinquantatré minuti, o due secondi#
Quattrocento canali in un modello, e ognuno ha il suo campo «Commenti» da riempire a mano. Otto secondi a canale, se non ti fermi mai: fanno cinquantatré minuti. Un'ora del tuo mercoledì per scrivere quattrocento volte la stessa parola.
Nove righe di Python fanno la stessa cosa in meno di due secondi. Qui le leggiamo tutte e nove, senza saltarne nessuna.
L'unica immagine che serve#
Revit, per chi programma, è una scatola di pezzi già fatti. Python sono le tue mani. In mezzo c'è la forma degli incastri, e quella si chiama API. Ogni incastro ti dice come si chiama, cosa gli devi dare e cosa ti dà indietro. Tenuto questo, ogni riga che segue è un incastro.
Dove abitano le cose#

- Revit.exe: il programma. Non lo tocchi mai.
- RevitAPI.dll: la scatola dei mattoncini del modello. Muri, canali, parametri, transazioni. Lato DB, database.
- RevitAPIUI.dll: l'altra scatola, l'interfaccia. Selezione, finestre, ribbon. Lato UI.
Una dll è una libreria: un programma senza pulsante di avvio, fatto per essere usato da altri programmi. Non la apri, la importi.
Nel RevitPythonShell le due scatole sono già sul tavolo, ridotte a due parole: doc, il modello, e uidoc, l'interfaccia.
Si comincia sbagliando#

NameError: name FilteredElementCollector is not defined. Tradotto: e chi è questo signore?
Non è un guasto, è il contratto che parla. Il mattoncino esiste ma sta ancora nella scatola. Lo dichiari con un import: from Autodesk.Revit.DB import FilteredElementCollector. Dallo scaffale Autodesk-Revit-DB, portami il collector.
Le nove righe#



walls = FilteredElementCollector(doc).OfClass(Wall). Aprimi lo schedario del modello, e poi tienimi solo i muri. Il punto si legge «e poi». walls = dà un nome al mazzo di schede: una variabile.
Riga 8. t = Transaction(doc, "Riempire Commenti"). Una transazione è un contratto: sto per toccare il modello, e da adesso finché non firmo tutto è un blocco unico. Il testo fra virgolette compare nella cronologia dell'annulla: mettici nomi veri.
Riga 9. t.Start(). Il contratto si apre. Le parentesi vuote sono il dito che preme il pulsante.
Riga 10. for w in walls:. Un ciclo: per ogni muro, fai quello che segue. È il motivo per cui quattrocento canali costano come quattro. Il rientro delle righe dopo i due punti non è estetica: in Python è grammatica.
Riga 11. p = w.LookupParameter("Commenti"). Di questo muro, dammi il campo che si chiama Commenti. Attento: il nome è quello della lingua della tua interfaccia. In un Revit inglese si chiama Comments.
Riga 12. if p and not p.IsReadOnly:. La prudenza. Se il parametro esiste davvero, e non è di sola lettura. Senza questa riga lo script funziona per un po', poi arriva il muro strano e si ferma a metà.
Riga 13. p.Set("Verificato"). Il lavoro vero, in una riga. Rientrata due volte: sta dentro l'if, che sta dentro il for.
Riga 14. t.Commit(). Si firma. Se qualcosa fosse andato storto al muro duecentotrenta, il contratto non si chiude e Revit rimette tutto com'era. Tutto, o niente. Mai a metà.
Tre parole e un cognome#


- Document: non è il file .rvt. Il file è il libro chiuso sullo scaffale; Document è il libro aperto sul tavolo, la sessione viva.
- Element: tutto è Element. Un muro, un canale, ma anche la vista, l'abaco, il livello, il cartiglio. Un solo insieme di verbi basta per tutto.
- Parameter: la scheda di ogni elemento. Nome, lunghezza, commenti, livello.
- ElementId: il numero unico di ogni elemento, valido dentro quel documento e basta.
E il capovolgimento che vale tutto il video: il pannello delle proprietà non è l'informazione. È una finestra puntata sulle schede. L'API guarda le stesse schede da un'altra finestra. Ecco perché uno script legge in un secondo quello che a mano costa mille clic: non clicca più veloce, non clicca.
Tre domande senza risposta tecnica#
Perché devo aprire una transazione? Perché le unità interne sono in piedi? Perché su sedici nuclei Revit ne usa uno? Nessuna delle tre è un capriccio. Sono fossili, e c'è un video apposta: «I fossili».
Guarda il video#
Sedici minuti sulla finestra vera del RevitPythonShell dentro Revit: l'errore, l'import, le nove righe che scorrono e i quattrocento canali che cambiano insieme.
Il video completo è su YouTube: se ti è piaciuto, iscriviti al canale e attiva la campanella per i prossimi episodi.
Domande o commenti?
Le domande sui video e sul libro sono benvenute: scrivimi, o commenta sotto il video su YouTube.
Su LinkedIn pubblico ogni video del canale, con due righe in più.


