ADN Club > Revit API
Назначение типов AddIn в файле манифейста
(1/1)
Алексей Статных:
Доброго время суток. Вопрос у меня есть. Создаю расширение для Revit 2014. Подскажите чем отличается тип манифеста команда и приложение и в какой момент времени выполняется у приложения OnStartup. Вопрос такой возник в результате того что я подключаю dll к ревит и выполняется только код который в файле команды
Виктор Чекалин:
Алексей, добрый день.
Все очень просто.
Файл манифеста предназначен для описания вашего расширения. Именно из файла манифеста Revit узнает о вашей надстройке.
При старте Revit происходит поиск файла c расширением addin в соответствующих папках, читает из них информацию и загружает вашу надстройку.
В надстройке вы можете создать два типа класса:
* Класс, реализующий интерфейс IExternalApplication
* Класс, реализующий интерфейс IExtefnalCommand
Таких классов в одной надстройке может быть несколько. Но чтобы Revit знал об их существовании, их нужно описать в файле манифеста.
Типичный файл манифеста выглядит примерно так:
--- Код - XML [Выбрать] ---<?xml version="1.0" encoding="utf-8"?><RevitAddIns> <AddIn Type="Command"> <Text>Command RevitTemp</Text> <Description>Some description for RevitTemp</Description> <Assembly>RevitTemp.dll</Assembly> <FullClassName>RevitTemp.Command</FullClassName> <ClientId>69529763-1ebd-4139-938b-bc0318a656b0</ClientId> <VendorId>TBC_</VendorId> <VendorDescription>The Building Coder, http://thebuildingcoder.typepad.com</VendorDescription> </AddIn> <AddIn Type="Application"> <Name>Application RevitTemp</Name> <Assembly>RevitTemp.dll</Assembly> <FullClassName>RevitTemp.App</FullClassName> <ClientId>0b1c0fcb-e87e-4ce4-9355-c6187223ad41</ClientId> <VendorId>TBC_</VendorId> <VendorDescription>The Building Coder, http://thebuildingcoder.typepad.com</VendorDescription> </AddIn></RevitAddIns>
В типе Application, необходимо указать название класса, реализующего интерфейс IExternalApplication. Этот интерфейс содержит 2 метода: OnStartup и OnShutdown.
Метод OnStartup выполняется при запуске Revit. Или если быть точнее, после того как Revit прочитал информацию из файла манифеста и создал экземпляр класса, описанного в манифесте.
В типе Command описываются ваши команды. Т.е. классы, реализующие интерфейс IExternalCommand. Описанные в манифесте команды Revit добавляет на вкладку Надстройки - Внешние команды в интерфейсе. Метод Execute будет выполнен, когда вы выберите соответсвующую команду в интерфейсе.
Важно помнить, что экземпляр класса IExternalApplication будет создан при загрузке Revit. И если по каким то причинам не удалось создать экземпляр этого класса (чаще всего по причине неверного описания в манифесте), то Revit предупредит об этом сразу при загрузке. Экземпляр класса команды создается только непосредественно в момент вызова команды. И если команда описана неверно, то вы увидите предупреждение при попытке вызова команды.
Надстройка не обязательно должна содержать оба типа. Более того, если вам не нужно проделывать каких-либо действий при загрузке Revit, то лучше убрать описание Application из манифеста, так как это ускорит загрузку Revit.
Команду же можно запустить не только из вкладки Надстройки - Внешние команды, но и при помощи кнопки на ленте. В этом случае создаете описываете только Applciation и создаете кнопку для вызова команды в методе OnStartup.
Навигация
Перейти к полной версии