Как загрузить файл Revit в API с помощью C#?
Я хочу загрузить *.api
файл в C#
код. Я пытаюсь экспортировать изображения из файла Revit для конкретных видов в приложении C#. Проблема в том, чтобы получить ExternalCommandData из revit (*.rvt
) файл.
public Autodesk.Revit.UI.Result Execute(ExternalCommandData revit,
ref string message, ElementSet elements)
{
UIApplication uiapp = revit.Application;
}
Я хочу просмотреть все *.rvt
файл и вызов вышеуказанного метода из формы Windows.
3 ответа
Я только что ответил на вашу соответствующую ветку на форуме Revit API:
https://forums.autodesk.com/t5/revit-api-forum/how-to-load-revit-file-in-api-using-c/m-p/7071015
Вызов напрямую в Revit API из внешнего контекста является, был и всегда был незаконным.
Revit API нельзя использовать, кроме как в допустимом контексте Revit API.
Такой контекст предоставляется исключительно методами обратного вызова Revit.
Вам необходимо подписаться на событие Revit, такое как метод внешней команды Execute.
В обработчике событий можно использовать Revit API.
Вы также можете использовать Revit API для настройки внешнего события, которое может вызываться из контекста не Revit-API, такого как ваше автономное внешнее приложение.
Это демонстрируется образцом SDK ModelessDialog / ModelessForm_ExternalEvent Revit. Вот все, что вам нужно знать о Revit SDK и о том, как начать работу с Revit API.
В прошлом на этот вопрос много раз отвечали и подробно обсуждали как на дискуссионном форуме Revit API, так и в The Building Coder.
Многие примеры и дальнейшие объяснения представлены в тематической группе "Строительный кодекс" на холостых и внешних событиях для немодального доступа и вождения Revit извне.
Вот некоторые из обсуждений форума Revit API, посвященных аналогичным проблемам:
Если все, что вы хотите сделать, это экспортировать изображения из файла RVT или RFA, ваши потребности уже могут быть полностью покрыты Forge. Для получения полной информации о том, как и почему, пожалуйста, обратитесь к моему посту в блоге по Внешнему доступу к Revit API.
Revit может запускать плагины только в процессе, поэтому вы не можете использовать его API из приложения WinForm. Упомянутый вами метод Execute фактически вызывается Revit в коде DLL.