Esta seção responde às perguntas freqüentes sobre as macros do Revit.
Pergunta | Resposta |
---|---|
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 (utilize 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. Não é preciso referenciar os arquivos RevitAPI. dll e RevitAPIUI porque esta etapa foi completada por você. Um projeto de macro do Revit usa ambas as referências necessárias. As macros do Revit irão falhar se você excluir estas referências no IDE: ![]() |
Preciso editar meus arquivos Revit.ini? | Não. Os macros do Revit são automaticamente registrados para aparecer no gerenciador de macros, sem qualquer modificação adicional para o sistema. |
No IDE de macro do Revit, excluí a macro ao remover 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 seu projeto editado antes que o Gerenciador de macros reconheça a remoção. |
Quais são as diferenças entre macros no nível de aplicativo e no nível de documento? | As macros no nível de aplicativo podem ser executadas em todos os projetos Revit abertos em uma única instância do aplicativo Revit. Projetos de macro no nível de documentos são armazenados no arquivo RVT. Elas podem ser carregadas de dentro do documento ativo atual e executadas naquele documento. |
Como posso acessar o objeto Aplicativo ou o externalCommandData equivalente? | Todas as macros no nível do aplicativo são associadas com o objeto UIApplication. Em macros no nível de aplicativo, o indicador da palavra-chave Aplicativo em C# e em VB.NET retorna o objeto doAplicativo API. Em macros no nível de documento, a palavra-chave Documento retorna o objeto Documento API. Para acessar o objeto UIApplication a partir de uma macro no nível de documento, utilize this.Application . |
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 carrega e o Module_Shutdown é chamado quando um módulo descarrega. Para os módulos de macro no nível de aplicativo, Module Startup é chamado quando é iniciado o Revitproject e Module_Shutdown é chamado quando o documento do projeto é fechado. Para módulos de macro no nível de documento,Module_Startup é chamado quando é iniciado o Revit e Module_Shutdown é chamado quando é fechado o Revit. Module_Startup e Module_Shutdown serão chamados quando o projeto da macro for recriado. É possível adicionar seu 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 ao iniciar e cancelar seus registros ao desligar (esta é a forma recomendada). |
Como e por que deveria registrar e cancelar o registro do meu manipulador de evento 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 irá automaticamente iniciar uma caixa de mensagem quando um novo projeto do Revit é iniciado. Nota: uma das amostras de macro fornecidas no Revit SDK podem apresentar um exemplo de uma inicialização e finalização de um manipulador de eventos no nível de documento. Estas perguntas freqüentes mostram manipuladores de eventos no nível de 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 de aplicativo:
private void Module_Startup(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");} private void Module_Shutdown(object sender, EventArgs e){ this.Application.DocumentOpened -= new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(Application_DocumentOpened);}}
exemplo VB.NET, no nível de aplicativo:
Private Sub Module_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.StartupAddHandler Me.OnDocumentNewed, AddressOf Me.ThisApplication_OnDocumentNewedEnd SubPrivate Sub Module_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ShutdownRemoveHandler Me.OnDocumentNewed, AddressOf Me.ThisApplication_OnDocumentNewedEnd SubPrivate Sub ThisApplication_OnDocumentNewed(ByVal document As Autodesk.Revit.Document)System.Windows.Forms.MessageBox.Show("VB.NET Application event OnDocumentNewed")End Sub