Perguntas frequentes: Macros do Revit

Esta seção responde às perguntas frequentes sobre as macros do Revit.

Pergunta Resposta

Por que continuo vendo a mensagem “Você confia nos autores dos arquivos desta pasta?” e como posso impedir que essa mensagem seja exibida?

A mensagem é enviada pelo VSCode e faz parte do programa “Workspace Trust” da Microsoft para melhorar a segurança.

Para impedir que a mensagem seja exibida:
  1. Inicie a configuração “Gerenciar Workspace Trust” no VSCode.
  2. Na parte inferior da janela, clique em “Adicionar pasta”.
  3. Selecione o seguinte caminho no qual confiar:
    • C:\ProgramData\Autodesk\Revit\Macros\2025\Revit\AppHookup
      Nota: “2025” refere-se ao ano do Revit com o qual você está trabalhando. Altere conforme necessário.
Esperava ver minha macro recém-criada listada na lista categorizada do Gerenciador de macros, mas ela não se encontra listada. Por quê? É preciso desenvolver com êxito o projeto de macro no IDE de macro do Revit (use o menu Build), antes que suas novas macros apareçam no Gerenciador de macros.
Preciso adicionar o RevitAPI.dll e o RevitAPIUI.dll como uma referência ao codificar uma nova macro? Não é preciso referenciar os arquivos RevitAPI.dll e RevitAPIUI porque essa etapa foi concluída para você. Um projeto de macros do Revit usa ambas as referências necessárias.

Consulte Restaurar o RevitAPI.dll e o RevitAPIUI.dll.

Preciso editar meus arquivos Revit.ini? Não. As macros do Revit são automaticamente registradas para aparecer no Gerenciador de macros, sem qualquer modificação adicional no sistema.
No IDE de macros do Revit, excluí a macro removendo seu método no arquivo This*.cs ou This*.vb. No entanto, o nome da macro excluída ainda aparece quando abro novamente a lista categorizada do Gerenciador de macros. Como limpo o nome da lista? É preciso desenvolver com sucesso o projeto editado antes que o Gerenciador de macros reconheça a remoção.
O que devo incluir nos métodos de inicialização e encerramento: Module_Startup e Module_Shutdown?

O método Module_Startup é chamado quando um módulo é carregado e o Module_Shutdown é chamado quando um módulo é descarregado.

Para módulos de macros no nível do aplicativo, Module_Startup é chamado quando o Revit é iniciado e Module_Shutdown é chamado quando o Revit é fechado.

Para os módulos de macros no nível do documento, Module Startup é chamado quando o projeto do Revit é aberto e Module_Shutdown é chamado quando o documento do projeto é fechado.

Module_Startup e Module_Shutdown também serão chamados quando o projeto da macros for recriado.

É possível adicionar o código de inicialização nos métodos Module_Startup e efetuar o trabalho de limpeza nos métodos Module_Shutdown. Por exemplo, é possível registrar manipuladores de eventos no início e cancelar seus registros no fechamento (essa é a forma recomendada).

Como e por que deveria registrar e cancelar o registro de meu manipulador de eventos do Revit? Como anteriormente indicado, a forma recomendada para fazer isso no IDE do Revit é a de registrar manipuladores de eventos no método *_Startup e cancelar seu registro no método *_Shutdown. Cada macro será carregada e descarregada de forma dinâmica. Quando uma macro é depurada, se o manipulador de eventos não estiver apropriadamente registrado o Revit poderá chamar um método incorreto (talvez em um endereço inválido de memória). Embora o IDE do Revit possa prevenir que o Revit pare de funcionar neste cenário, qualquer manipulador de eventos que não estiver apropriadamente registrado poderá causar questões de desempenho durante a sessão atual do Revit.
Tenho uma caixa de diálogo que parece não funcionar corretamente e está causando problemas com o Revit. Caixas de diálogo sem modo operando fora do escopo de um retorno de chamada de API em execução, podem causar problemas. Recomenda-se evitar tais chamadas de retorno para prevenir a instabilidade do Revit.
Desejo experimentar os métodos Startup e Shutdown e um manipulador de eventos. Pode me mostrar um exemplo? O código de amostra a seguir mostra como registrar um manipulador de eventos OnDocumentNewed, que iniciará automaticamente uma caixa de mensagem quando um novo projeto do Revit for criado. Observação: Uma das amostras de macros fornecidas no Revit SDK poderá apresentar um exemplo de uma inicialização e fechamento de um manipulador de eventos no nível do documento. Estas perguntas frequentes mostram manipuladores de eventos no nível do aplicativo.

Observe que todos os eventos API poderão ser acessados pelo IDE do Revit em 2011. Os eventos anteriores a 2011 serão removidos. Os exemplos seguintes mostram os novos eventos.

Exemplo C#, no nível do aplicativo:

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");
}