Недавно я спросил в своём телеграм-канале, о чём было бы интересно почитать моим подписчикам. Один из ответов был "Web интерфейс Ревита". Я не очень понял, что имеется в виду, но решил всё равно залезть в эту тему, чтобы посмотреть, какие тут есть возможности. Эта статья получилась короткой, но со своими приколами. Возможно, в будущем я буду развивать эту тему.
Открытие веб-страницы в Revit
Здесь не надо придумывать ничего особенного: в WPF есть специальный контрол для этой задачи, WebBrowser. Используем именно его, создадим окно, команду для отображения окна и в код-бехайнде отправим браузер на... да на эту самую статью и отправлю:
Результат:
Вообще ни разу ни также красиво, как в браузере, но результат достигнут: мы именно что видим нашу веб-страницу в окне Ревита.
Конец, всем спасибо за внимание...
Ладно, давайте сделаем что-нибудь ещё. Я добавил кнопку "Загрузить страницу с локального диска", и теперь попробую выбрать веб-страницу с отчётом о коллизиях и отобразить её в этом окне:
Так что теперь мы заодно узнали, как работает OpenFileDialog с фильтром по определённом типу файлов (строка 33), а так же то, что для загрузки локальной веб-страницы надо создать объект Uri.
Непосредственно к браузеру мы обращаемся за счёт того, что дали ему имя в XAML на строке 18:
Где это можно применить
Вообще, встроенный в WPF контрол очень уступает обычному браузеру. Не подгрузились стили, куча ошибок сценариев Javascript. Но пока я вижу тут 2 сценария:
1. Создать локальную справочную систему со всеми стилями и красивыми веб-страницами, и использовать её в немодальном окне или в DockablePane
2. Написать логику фронтенда на Javascript, подгрузить html в Ревит, а затем обмениваться данными через JSON и выполнять определённые действия
Но в целом, это открытый вопрос, так что если у вас, уважаемые читатели, возникнут идеи применения, обязательно делитесь ими в комментариях.
Заключение
Возможно, эта статья станет вводной в цикле взаимодействия Ревита с веб-интерфейсом. Не забывайте ставить лайки и подписываться на мой-телеграм-канал о Revit API.
Итоговый код в моём репозитории на GitHub (и звёздочки не забывайте ему ставить тоже).