Найти в Дзене

Работа с веб-страницами в окне Revit

Оглавление

Недавно я спросил в своём телеграм-канале, о чём было бы интересно почитать моим подписчикам. Один из ответов был "Web интерфейс Ревита". Я не очень понял, что имеется в виду, но решил всё равно залезть в эту тему, чтобы посмотреть, какие тут есть возможности. Эта статья получилась короткой, но со своими приколами. Возможно, в будущем я буду развивать эту тему.

Открытие веб-страницы в Revit

Здесь не надо придумывать ничего особенного: в WPF есть специальный контрол для этой задачи, WebBrowser. Используем именно его, создадим окно, команду для отображения окна и в код-бехайнде отправим браузер на... да на эту самую статью и отправлю:

Результат:

Кто помнит определение рекурсии, пишите в комменты
Кто помнит определение рекурсии, пишите в комменты

Вообще ни разу ни также красиво, как в браузере, но результат достигнут: мы именно что видим нашу веб-страницу в окне Ревита.

Конец, всем спасибо за внимание...

Ладно, давайте сделаем что-нибудь ещё. Я добавил кнопку "Загрузить страницу с локального диска", и теперь попробую выбрать веб-страницу с отчётом о коллизиях и отобразить её в этом окне:

-3

Так что теперь мы заодно узнали, как работает OpenFileDialog с фильтром по определённом типу файлов (строка 33), а так же то, что для загрузки локальной веб-страницы надо создать объект Uri.

Непосредственно к браузеру мы обращаемся за счёт того, что дали ему имя в XAML на строке 18:

-4

Где это можно применить

Вообще, встроенный в WPF контрол очень уступает обычному браузеру. Не подгрузились стили, куча ошибок сценариев Javascript. Но пока я вижу тут 2 сценария:

1. Создать локальную справочную систему со всеми стилями и красивыми веб-страницами, и использовать её в немодальном окне или в DockablePane

2. Написать логику фронтенда на Javascript, подгрузить html в Ревит, а затем обмениваться данными через JSON и выполнять определённые действия

Но в целом, это открытый вопрос, так что если у вас, уважаемые читатели, возникнут идеи применения, обязательно делитесь ими в комментариях.

Заключение

Возможно, эта статья станет вводной в цикле взаимодействия Ревита с веб-интерфейсом. Не забывайте ставить лайки и подписываться на мой-телеграм-канал о Revit API.

Итоговый код в моём репозитории на GitHub (и звёздочки не забывайте ему ставить тоже).

-5