Domande frequenti: macro di Revit

In questa sezione vengono fornite risposte a domande frequenti sulle macro di Revit.

Domanda Risposta

Perché continua ad essere visualizzato il messaggio "Do you trust the authors of files in this folder?" e come si può evitare che compaia questo messaggio?

Il messaggio proviene da VSCode e fa parte del programma Workspace Trust di Microsoft per migliorare la sicurezza.

Per impedire la visualizzazione del messaggio:
  1. Avviare l'impostazione Manage Workspace Trust in VSCode.
  2. Nella parte inferiore della finestra, fare clic su Add Folder.
  3. Selezionare il seguente percorso per l'attendibilità:
    • C:\ProgramData\Autodesk\Revit\Macros\2025\Revit\AppHookup
      Nota: 2025 si riferisce all'anno della versione di Revit che si sta utilizzando. Modificare in base alle esigenze.
Perché la nuova macro creata non è visualizzata nell'elenco catalogato di Gestione macro? Le nuove macro vengono visualizzate in Gestione macro dopo la corretta generazione del progetto macro in Revit macro IDE (utilizzando il menu Genera).
È necessario aggiungere RevitAPI.dll e RevitAPIUI.dll come riferimento quando si scrive una nuova macro? No. Questa operazione viene eseguita automaticamente. Un progetto macro di Revit utilizza entrambi come riferimenti necessari.

Vedere Ripristino di RevitAPI.dll e RevitAPIUI.dll.

È necessario modificare i file Revit.ini? No. Le macro di Revit vengono automaticamente registrate in modo da essere disponibili in Gestione macro senza apportare ulteriori modifiche al sistema.
In Revit macro IDE, è stata eliminata una macro rimuovendo il relativo metodo nel file This*.cs o This*.vb. Il nome di tale macro è tuttavia ancora visualizzato nell'elenco catalogato di Gestione macro. Come è possibile eliminare il nome dall'elenco? È necessario generare correttamente il progetto modificato affinché la rimozione venga rilevata in Gestione macro.
Si consiglia di includere nei metodi di avvio e arresto le seguenti funzioni: Module_Startup e Module_Shutdown?

Il metodo Module_Startup viene richiamato quando si carica un modulo mentre il metodo Module_Shutdown viene richiamato quando il modulo viene scaricato.

Per i moduli delle macro a livello di applicazione, Module_Startup viene richiamato all'avvio di Revit e Module_Shutdown alla chiusura di Revit.

Per i moduli delle macro a livello di documento, Module_Startup viene richiamato all'apertura di un progetto Revit e Module_Shutdown quando si chiude il documento di progetto.

Module_Startup e Module_Shutdown vengono richiamati anche quando il progetto macro viene rigenerato.

È possibile aggiungere il codice di inizializzazione ai metodi Module_Startup ed eseguire le operazioni di pulizia nei metodi Module_Shutdown. Ad esempio, è possibile registrare gestori di eventi all'avvio e annullare la registrazione all'arresto (procedura consigliata).

Come e perché è necessario eseguire ed annullare la registrazione del gestore di eventi Revit? Come osservato in precedenza, la procedura consigliata per eseguire tale operazione in Revit IDE consiste nel registrare i gestori di eventi nel metodo *_Startup e annullarne la registrazione nel metodo *_Shutdown. Ogni macro verrà caricata e scaricata dinamicamente. Quando si esegue il debug di una macro, se l'annullamento della registrazione del gestore di eventi non viene eseguita correttamente, Revit può richiamare un metodo errato (ad esempio un indirizzo di memoria non valido). Sebbene Revit IDE possa impedire la chiusura anomala di Revit, l'errato annullamento della registrazione di un qualsiasi gestore di eventi può comportare problemi di prestazioni durante la sessione corrente di Revit.
Una finestra di dialogo sembra non funzionare correttamente e causa problemi in Revit. Le finestre di dialogo non modali che operano al di fuori dell'ambito di un callback dell'API in esecuzione possono causare problemi. Si consiglia di evitare tali operazioni di callback per impedire instabilità in Revit.
È possibile ottenere un esempio di utilizzo dei metodi Startup e Shutdown e di un gestore di eventi? Il codice di esempio riportato di seguito consente di registrare un gestore di eventi OnDocumentNewed. In seguito a tale registrazione, viene visualizzata automaticamente una finestra di messaggio al momento della creazione di un nuovo progetto di Revit. Nota: uno degli esempi di macro in Revit SDK può includere un esempio dei metodi di avvio e di arresto di un gestore di eventi a livello di documento. Queste domande frequenti includono esempi di gestori di eventi a livello di applicazione.

Si noti che nel 2011 è possibile accedere a tutti gli eventi API da IDE. Gli eventi precedenti al 2011 sono stati rimossi. Gli esempi seguenti mostrano i nuovi eventi.

Esempio C#, a livello di applicazione:

private void Module_Startup(object sender, EventArgs e)
{
   this.Application.DocumentOpened
      += new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened);
}

private void Module_Shutdown(object sender, EventArgs e)
{
   this.Application.DocumentOpened
      -= new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened); 
}

void Application_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e)
{ 
   System.Windows.Forms.MessageBox.Show("message here");
}