Если требуется использовать для макросов программу-образец SDK, необходимо внести изменения.
В средствах Revit SDK содержатся две папки образцов:
\Revit SDK <версия>\Software Development Kit\Samples\...
\Revit SDK <версия>\Software Development Kit\Macro Samples\...
В программах в папке \Samples\ SDK используется стандартный API Revit. Такие образцы здесь называются "программы-образцы SDK", в отличие от "образцов макросов Revit".
Действуйте, как описано в данном разделе. В примере использован образец на языке программирования C#. Однако те же инструкции относятся и к версиям образцов SDK на языке VB.NET.
Исходные операции
Первоначальные операции по переносу образцов для стандартного API из SDK в проект Revit Macro IDE подобно описаны в разделе Интеграция макросов в Revit IDE. Вместо копирования файлов из папок \Macro Samples\<имя-образца>\... SDK нужно будет скопировать файлы из папок \Samples\<имя-образца>\... SDK.
Приведем необходимые операции в качестве напоминания:
- В IDE добавьте обязательные ссылки
- В IDE создайте папки для образцов SDK, для которых требуется выполнить перенос.
- В Проводнике Windows скопируйте файлы образцов SDK для стандартного API в соответствующие папки файловой системы.
- В IDE добавьте имеющиеся файлы в проект макроса.
Обновление программы образцов SDK
В Revit Macro IDE интерфейс IExternalCommand недоступен и не используется. В программе-образце SDK для стандартного API следует обновить класс, унаследованный из этого интерфейса:
- удалите параметры метода и оператор return из метода Execute;
- обновите остальной программный текст, относящийся к ExternalCommandData.
Пример программы перед внесением правки
Далее приводится фрагмент программы, использующей стандартный API Revit:
Пример программы после внесения правки
В Revit Macro IDE необходимо обновить код, как указано далее. В данном примере показан макрос уровня приложения. Метод RunSampleRooms() представляет собой точку входа для данного образца макроса. Обратите внимание, что вместо commandData.Application используется указатель this.
Дополнительные замечания по процедуре переноса образцов SDK для стандартного API
- По умолчанию пространство имен образца SDK — Revit.SDK.Samples.<ИмяОбразца>.CS. По мере редактирования программы-образца, взятой из образцов SDK для стандартного API, не забудьте изменить пространство имен на принятое для Revit IDE. Например, в файле ThisApplication.cs:
namespace AppCSharp.csproj
- Ссылки по умолчанию в проектах Revit IDE содержат только базовые ссылки, такие как Revit.Proxy. Не забудьте добавить остальные требуемые ссылки. Например, для запуска образцов с пользовательским интерфейсом необходимо добавлять System.Windows.Forms и System.Drawing.
- Некоторые образцы содержат ресурсы, которые должны быть определены в файле resources.resx. Один из таких примеров — макрос GridCreation. При переносе образца SDK по созданию сеток (GridCreation) в стандартный интерфейс API в Revit IDE обязательно настройте свойство resx.
- Сборочные зависимости проекта в Revit Macro IDE не поддерживается. Чтобы использовать другие файлы DLL, необходимо скомпилировать зависимый пример проекта вне Revit Macro IDE. Например, в образцах SDK для стандартного API имеется несколько образцов, связанных со средствами просмотра (Viewer), такими как AnalyticalViewer и RoomViewer, которые связаны отношениями со ссылками на RevitViewer.
Однако зависимости проекта настроить нельзя по причине ограничений в Revit IDE, и перенос образца RevitViewer невозможен. Поэтому необходимо скомпилировать RevitViewer как независимый образец SDK, а затем добавить его файл DLL как ссылку в проект Revit IDE.
- При переносе образцов SDK для стандартного API в Revit IDE не следует копировать какие-либо файлы решений (*.sln*) или имеющиеся файлы проектов (*.csproj или *.vbproj).
- Образцы, связанные с панелями инструментов, в Revit IDE не реализуются.