Найти в Дзене
Закреплено автором
Revit API и автоматизация Revit с нуля
Создание и подключение плагина для Revit
10,6 тыс · 2 года назад
Revit API и автоматизация Revit с нуля
Каталог статей блога
1275 · 2 года назад
Обмен информацией между Revit и Web-приложением
Сегодня расскажу, как решить одну интересную задачу — написать плагин для Revit, который будет работать как веб-страница. Я расскажу про базовый обмен данными между Revit и веб-приложением, в моём случае оно будет статичным, но в целом, никто не мешает вам сделать его динамическим или задеплоить на удалённым сервере...
3 дня назад
Работа с Excel-настройками для плагина. Библиотека ClosedXML
Всем привет! Сегодня я решу небольшую прикладную задачу — создам Excel-файл с правилами заполнения параметров, а потом заполню параметры в элементах Revit по этим правилам. Создадим Excel-файл из 2 столбцов: в первом столбце напишем категорию элемента, а во втором — значение параметра Комментарии для этой категории. Добавим этот файл в ресурсы приложения, чтобы он скомпилировался в итоговый dll. (Тут вопрос спорный, в реальном приложении вы сможете указать путь к файлу, а потом менять этот файл для всех пользователей, не обновляя плагин...
130 читали · 1 месяц назад
Единицы измерения в Revit и ForgeTypeId
Если вы начинали свой путь в программировании под Ревит с Dynamo, то, наверное, помните магическое число 304,8 (или 0,3048). Это коэффициент, который используется для перевода из внутренних единиц Ревита (футов) в миллиметры. Но вообще, внутренние единицы Ревита это не только футы. Площади, объёмы, массовые расходы, сила тока, напряжение, может измеряться под капотом в чём угодно. Давайте попробуем разобраться, как с максимальной точностью переходить от внутренних единиц к понятным нам единицам, и что такое ForgeTypeId...
118 читали · 1 месяц назад
Паттерн Result и управление потоком выполнения программы
В этой статье я не буду открывать Америку — материалов про паттерн Result на любом языке очень много. Но он мне очень понравился, так что я решил поделиться им и с вами, уважаемые подписчики, и конечно же, как и всегда, в контексте Revit API. Это классический вариант управления потоком в C# и в Revit API тоже. Давайте рассмотрим его на примерах: Пример 1. У нас есть 2 линии, нам надо найти точку их пересечения. Написать метод, который принимает на вход 2 Line, возвращает XYZ. Метод будет выглядеть, допустим, так: Давайте посмотрим на поток выполнения: 1...
172 читали · 2 месяца назад
Csproj-файл, что это, с чем едят и как можно его упростить. SDK-style .csproj.
Сегодня расскажу про тему, которую начинающие программисты, особенно использующие Visual Studio, часто упускают из виду. Упускают, потому что в VS сложно перейти в режим редактирования .csproj-файла, и он достаточно удобно редактируется через графический интерфейс. А вот в Rider это легко делается напрямую (тут писал подробнее про эту IDE). Когда мы программируем, мы даже не задумываемся, что происходит, когда мы запускаем сборку решения. Откуда компилятор знает, из каких файлов брать код, из каких...
281 читали · 2 месяца назад
Обмен сообщениями между классами и модулями приложения
Всем привет! Сегодня рассмотрим интересный функционал, который даёт нам библиотека Community.Toolkit — обмен сообщениями. Предположим, у нас есть некое приложение, в котором есть модуль, который мы разделили на маленькие классы, что-то типа такого: В данном случае классы, находящиеся выше, знают, что они будут использовать нижележащие классы, но нижележащие классы универсальны и не знают, кто и как их будет использовать. Но тут мы хотя бы в пределах одного проекта, и мы можем прокинуть эти зависимости в обратном направлении...
285 читали · 2 месяца назад
Изменение Schema в Revit без потери данных
Когда уже умеешь программировать, то рассматриваешь всё только с позиции микроскопа. но иногда молоток тоже вполне себе решение (с) Конфуций, V в. до н.э. Всем привет! Сегодня расскажу про свою библиотеку для генерации кода, которая упрощает работу со схемами в Revit API, а так же позволяет их изменять. Да и вообще, упрощает работу со схемами почти до уровня обычного запроса к базе данных. И если с первыми двумя неудобствами можно смириться, то вот в третьим может возникнуть проблема. Допустим, мы написали плагин со схемой и выдали его в работу...
381 читали · 1 год назад
Генерация общих параметров в ФОП
Фоп-стоп, мы подошли из-за угла (с), гопник Коля, ПТУ #6, через неделю после неудачного гоп-стопа, когда ему выбили зубы Год назад я писал статью о том, как добавлять общие параметры, существующие в файле общих параметров, к категориям проекта. Рассказал как сделать привязку по типу, по экземпляру, настроить изменение значение среди групп. Но как оказалось — самое интересное я и не рассказал. Нам вообще не обязательно иметь общие параметры в ФОП, мы можем генерировать их самостоятельно. Перед генерацией...
291 читали · 1 год назад
Ресурсы (в том числе бесплатные), которые я использую для программирования
Работа программистом — не волк, работа — work, а walk — это прогулка (с) Джейсон Стейтем Всем привет! Задумал статью о том, что я использую во время работы, на что опираюсь, и где ищу информацию для развития. Сначала я думал, что статья получится маленькой и не особо интересной, но потом вспомнил, что таких ресурсов, в принципе, не мало, и мне есть что рассказать о них. Кроме того, вы всегда можете поделиться в комментариях, что используете вы, подняв ценность данной статьи для всего коммьюнити. Когда я начинал изучать C#, мой друг подарил мне на день рождения книгу об основах C#...
538 читали · 1 год назад
JetBrains Rider — теперь бесплатная IDE. Почему лучше выбрать его вместо Visual Studio
.Net-разработчики делятся на 2 типа: те, кто любят Rider, и те, кто ещё его не пробовал. (с) Конфуций, "Избранные цитаты из интернета", V век до н.э. Всем привет! Сегодня расскажу немного про свою любимую программу, в которой пишу код постоянно, однажды попробовав — JetBrains Rider. Совсем недавно мне дали бесплатную лицензию как open-source разработчику (правда, не без проблем, потому что я паспортом не вышел), но вскоре после этого Rider стал бесплатным для некоммерческой разработки — так что теперь и вы можете попробовать его...
4504 читали · 1 год назад
WPF. Добавление анимаций к элементу. Стили
Самое важное в плагине для Revit — это анимации (с), Лао-цзы, VI в. до н.э. Всем привет! Сегодня расскажу, как добавить анимацию к кнопке WPF. Тема особо не касается Revit, да и многие её пренебрегают — ведь плагин без анимаций будет выполнять бизнес-задачу, а анимация без плагина никому не нужна, но почему бы и не рассказать о том, как сделать пользовательский интерфейс своего приложения более интересным. Сделаем так, чтобы наша кнопка при наведении увеличивалась на 5%, а её границы становились толстыми...
385 читали · 1 год назад
Dependency Injection с помощью контейнеров в десктопных приложениях на C#
Всем привет! Сегодня рассмотрим довольно интересную тему, которая является очевидной базой для веб-разработчиков, но для разработчиков десктопных приложений часто является чем-то непонятным. Так что давайте разбираться, что это за инъекция зависимостей (dependency injection, DI, внедрение зависимостей) и зачем она нужна. В целом, инъекция зависимостей — это паттерн проектирования ПО, в котором зависимости, используемые объектом, предоставляются ему извне, а не создаются самим объектом. Простейший...
448 читали · 1 год назад