Найти в Дзене
Закреплено автором
Revit API и автоматизация Revit с нуля
Создание и подключение плагина для Revit
9490 · 2 года назад
Revit API и автоматизация Revit с нуля
Каталог статей блога
1267 · 2 года назад
Работа с Excel-настройками для плагина. Библиотека ClosedXML
Всем привет! Сегодня я решу небольшую прикладную задачу — создам Excel-файл с правилами заполнения параметров, а потом заполню параметры в элементах Revit по этим правилам. Создадим Excel-файл из 2 столбцов: в первом столбце напишем категорию элемента, а во втором — значение параметра Комментарии для этой категории. Добавим этот файл в ресурсы приложения, чтобы он скомпилировался в итоговый dll. (Тут вопрос спорный, в реальном приложении вы сможете указать путь к файлу, а потом менять этот файл для всех пользователей, не обновляя плагин...
6 дней назад
Единицы измерения в Revit и ForgeTypeId
Если вы начинали свой путь в программировании под Ревит с Dynamo, то, наверное, помните магическое число 304,8 (или 0,3048). Это коэффициент, который используется для перевода из внутренних единиц Ревита (футов) в миллиметры. Но вообще, внутренние единицы Ревита это не только футы. Площади, объёмы, массовые расходы, сила тока, напряжение, может измеряться под капотом в чём угодно. Давайте попробуем разобраться, как с максимальной точностью переходить от внутренних единиц к понятным нам единицам, и что такое ForgeTypeId...
1 неделю назад
Паттерн Result и управление потоком выполнения программы
В этой статье я не буду открывать Америку — материалов про паттерн Result на любом языке очень много. Но он мне очень понравился, так что я решил поделиться им и с вами, уважаемые подписчики, и конечно же, как и всегда, в контексте Revit API. Это классический вариант управления потоком в C# и в Revit API тоже. Давайте рассмотрим его на примерах: Пример 1. У нас есть 2 линии, нам надо найти точку их пересечения. Написать метод, который принимает на вход 2 Line, возвращает XYZ. Метод будет выглядеть, допустим, так: Давайте посмотрим на поток выполнения: 1...
152 читали · 1 месяц назад
Csproj-файл, что это, с чем едят и как можно его упростить. SDK-style .csproj.
Сегодня расскажу про тему, которую начинающие программисты, особенно использующие Visual Studio, часто упускают из виду. Упускают, потому что в VS сложно перейти в режим редактирования .csproj-файла, и он достаточно удобно редактируется через графический интерфейс. А вот в Rider это легко делается напрямую (тут писал подробнее про эту IDE). Когда мы программируем, мы даже не задумываемся, что происходит, когда мы запускаем сборку решения. Откуда компилятор знает, из каких файлов брать код, из каких...
245 читали · 1 месяц назад
Обмен сообщениями между классами и модулями приложения
Всем привет! Сегодня рассмотрим интересный функционал, который даёт нам библиотека Community.Toolkit — обмен сообщениями. Предположим, у нас есть некое приложение, в котором есть модуль, который мы разделили на маленькие классы, что-то типа такого: В данном случае классы, находящиеся выше, знают, что они будут использовать нижележащие классы, но нижележащие классы универсальны и не знают, кто и как их будет использовать. Но тут мы хотя бы в пределах одного проекта, и мы можем прокинуть эти зависимости в обратном направлении...
240 читали · 1 месяц назад
Изменение Schema в Revit без потери данных
Когда уже умеешь программировать, то рассматриваешь всё только с позиции микроскопа. но иногда молоток тоже вполне себе решение (с) Конфуций, V в. до н.э. Всем привет! Сегодня расскажу про свою библиотеку для генерации кода, которая упрощает работу со схемами в Revit API, а так же позволяет их изменять. Да и вообще, упрощает работу со схемами почти до уровня обычного запроса к базе данных. И если с первыми двумя неудобствами можно смириться, то вот в третьим может возникнуть проблема. Допустим, мы написали плагин со схемой и выдали его в работу...
369 читали · 1 год назад
Генерация общих параметров в ФОП
Фоп-стоп, мы подошли из-за угла (с), гопник Коля, ПТУ #6, через неделю после неудачного гоп-стопа, когда ему выбили зубы Год назад я писал статью о том, как добавлять общие параметры, существующие в файле общих параметров, к категориям проекта. Рассказал как сделать привязку по типу, по экземпляру, настроить изменение значение среди групп. Но как оказалось — самое интересное я и не рассказал. Нам вообще не обязательно иметь общие параметры в ФОП, мы можем генерировать их самостоятельно. Перед генерацией...
289 читали · 1 год назад
Ресурсы (в том числе бесплатные), которые я использую для программирования
Работа программистом — не волк, работа — work, а walk — это прогулка (с) Джейсон Стейтем Всем привет! Задумал статью о том, что я использую во время работы, на что опираюсь, и где ищу информацию для развития. Сначала я думал, что статья получится маленькой и не особо интересной, но потом вспомнил, что таких ресурсов, в принципе, не мало, и мне есть что рассказать о них. Кроме того, вы всегда можете поделиться в комментариях, что используете вы, подняв ценность данной статьи для всего коммьюнити. Когда я начинал изучать C#, мой друг подарил мне на день рождения книгу об основах C#...
532 читали · 1 год назад
JetBrains Rider — теперь бесплатная IDE. Почему лучше выбрать его вместо Visual Studio
.Net-разработчики делятся на 2 типа: те, кто любят Rider, и те, кто ещё его не пробовал. (с) Конфуций, "Избранные цитаты из интернета", V век до н.э. Всем привет! Сегодня расскажу немного про свою любимую программу, в которой пишу код постоянно, однажды попробовав — JetBrains Rider. Совсем недавно мне дали бесплатную лицензию как open-source разработчику (правда, не без проблем, потому что я паспортом не вышел), но вскоре после этого Rider стал бесплатным для некоммерческой разработки — так что теперь и вы можете попробовать его...
4174 читали · 1 год назад
WPF. Добавление анимаций к элементу. Стили
Самое важное в плагине для Revit — это анимации (с), Лао-цзы, VI в. до н.э. Всем привет! Сегодня расскажу, как добавить анимацию к кнопке WPF. Тема особо не касается Revit, да и многие её пренебрегают — ведь плагин без анимаций будет выполнять бизнес-задачу, а анимация без плагина никому не нужна, но почему бы и не рассказать о том, как сделать пользовательский интерфейс своего приложения более интересным. Сделаем так, чтобы наша кнопка при наведении увеличивалась на 5%, а её границы становились толстыми...
379 читали · 1 год назад
Dependency Injection с помощью контейнеров в десктопных приложениях на C#
Всем привет! Сегодня рассмотрим довольно интересную тему, которая является очевидной базой для веб-разработчиков, но для разработчиков десктопных приложений часто является чем-то непонятным. Так что давайте разбираться, что это за инъекция зависимостей (dependency injection, DI, внедрение зависимостей) и зачем она нужна. В целом, инъекция зависимостей — это паттерн проектирования ПО, в котором зависимости, используемые объектом, предоставляются ему извне, а не создаются самим объектом. Простейший...
434 читали · 1 год назад
Основы C#. Структуры данных. Массив, список, словарь, HashSet
Всем привет! Сегодня статья, не связанная с Revit. Поговорим о структурах данных, которые наиболее часто используются в языке C#. Дисклеймер: статья написана в основном для начинающих программистов под Revit на основе моего опыта. Если вы лучше меня знаете, что всё на самом деле не так или не совсем так, то делитесь подробностями в комментарии, или оставляйте там ссылки на свои блоги. При кажущейся простоте, тема сложная, и осветить прям все-все аспекты довольно тяжело. Когда я начинал программировать, я сначала немного изучил Python, а потом начал переходить на C#...
557 читали · 1 год назад