В данном разделе даны ответы на часто задаваемые вопросы о макросах Revit.
Вопрос | Ответ |
---|---|
Почему постоянно появляется сообщение «Вы доверяете авторам файлов в этой папке?» и как сделать так, чтобы оно не появлялось? |
Сообщение поступает из Visual Studio Code и является частью программы Microsoft Workspace Trust, предназначенной для повышения уровня безопасности. Чтобы предотвратить появление сообщения, выполните следующие действия.
|
Я полагал, что созданный макрос появится в систематизированном по категориям списке Диспетчера макросов, но это не так. Почему? | Для отображения нового макроса в окне "Диспетчер макросов" проект этого макроса должен быть предварительно скомпонован в Revit macro IDE (с помощью меню "Сборка"). |
Требуется ли добавлять файлы RevitAPI.dll и RevitAPIUI.dll в качестве ссылок при создании новой макрокоманды? | Нет. Добавлять ссылки на файлы RevitAPI.dll и RevitAPIUI не требуется, так как эта операция выполняется автоматически. В проекте макросов Revit обе ссылки являются обязательными.
См. раздел Восстановление файлов RevitAPI.dll и RevitAPIUI.dll. |
Требуется ли редактировать файлы Revit.ini? | Нет. Макросы Revit автоматически регистрируются и отображаются в Диспетчере макросов без изменения системных данных. |
Я удалил макрос в Revit macro IDE путем удаления его метода в файле This*.cs или This*.vb. Однако имя удаленного макроса все еще присутствует в систематизированном по категориям списке Диспетчера макросов при его повторном открытии. Как убрать имя из списка? | Необходимо выполнить компоновку отредактированного проекта, после чего Диспетчер макросов распознает удаление. |
Что следует включать в методы запуска и останова: Module_Startup и Module_Shutdown? |
Метод Module_Startup вызывается при загрузке модуля, а метод Module_Shutdown — при выгрузке модуля. Для модулей макрокоманд уровня приложения метод Module_Startup вызывается при запуске Revit, а метод Module_Shutdown — при завершении работы Revit. Для модулей макросов уровня документа метод Module_Startup вызывается при открытии проекта Revit, а метод Module_Shutdown — при закрытии документа проекта. Модули Module_Startup и Module_Shutdown также вызываются при повторной компоновке проекта макроса. Вы можете добавлять свой инициализирующий код в методы Module_Startup и выполнять некоторую «зачистку» в методах Module_Shutdown. Например, можно регистрировать обработчики событий при запуске и отменять регистрацию обработчиков при останове (это рекомендуемый способ). |
Как и почему следует регистрировать и отменять регистрацию обработчика событий Revit? | Как говорилось выше, в Revit IDE рекомендуется регистрировать обработчики событий в методе *_Startup и отменять их регистрацию в методе *_Shutdown. Каждый макрос будет загружаться и выгружаться в динамическом режиме. При отладке макроса, если отмена регистрации обработчика событий выполнена неверно, Revit может вызвать ошибочный метод (возможно, по ошибочному адресу памяти). Хотя Revit IDE может предотвратить аварийный останов работы Revit по такому сценарию, любые обработчики событий, отмена регистрации для которых была выполнена некорректно, могут вызвать неполадки, связанные с производительностью, в текущем сеансе Revit. |
В моем макросе имеется диалоговое окно, которое работает некорректно и приводит к проблемам с Revit. | Немодальные диалоговые окна, работающие за пределами текущего ответного вызова к API, могут вызывать проблемы. Рекомендуется избегать таких ответных вызовов во избежание нестабильности Revit. |
Мне хотелось бы поэкспериментировать с методами запуска и останова и обработчиком событий. Можно ли увидеть соответствующий пример? | В приведенном ниже образце кода показано, как зарегистрировать обработчик события OnDocumentNewed, который будет автоматически выводить окно сообщения при создании проекта Revit. Примечание. Один из образцов макросов, входящий в пакет Revit SDK, может служить примером запуска и останова обработчика событий на уровне документа. В данном разделе представлены примеры обработчика событий уровня приложения.
Следует учитывать, что доступ ко всем событиям API из Revit IDE возможен в версии 2011. События, относящиеся к более ранним версиям по сравнению с 2011, удалены. В следующих примерах показаны новые события. |
Пример на языке C#, уровень приложения:
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"); }