Найти в Дзене
Закреплено автором
Revit API и автоматизация Revit с нуля
Создание и подключение плагина для Revit
2900 · 2 года назад
Revit API и автоматизация Revit с нуля
Каталог статей блога
277 · 2 года назад
Обмен сообщениями между классами и модулями приложения
Всем привет! Сегодня рассмотрим интересный функционал, который даёт нам библиотека Community.Toolkit — обмен сообщениями. Предположим, у нас есть некое приложение, в котором есть модуль, который мы разделили на маленькие классы, что-то типа такого: В данном случае классы, находящиеся выше, знают, что они будут использовать нижележащие классы, но нижележащие классы универсальны и не знают, кто и как их будет использовать. Но тут мы хотя бы в пределах одного проекта, и мы можем прокинуть эти зависимости в обратном направлении...
2 дня назад
Изменение Schema в Revit без потери данных
Когда уже умеешь программировать, то рассматриваешь всё только с позиции микроскопа. но иногда молоток тоже вполне себе решение (с) Конфуций, V в. до н.э. Всем привет! Сегодня расскажу про свою библиотеку для генерации кода, которая упрощает работу со схемами в Revit API, а так же позволяет их изменять. Да и вообще, упрощает работу со схемами почти до уровня обычного запроса к базе данных. И если с первыми двумя неудобствами можно смириться, то вот в третьим может возникнуть проблема. Допустим, мы написали плагин со схемой и выдали его в работу...
137 читали · 1 год назад
Генерация общих параметров в ФОП
Фоп-стоп, мы подошли из-за угла (с), гопник Коля, ПТУ #6, через неделю после неудачного гоп-стопа, когда ему выбили зубы Год назад я писал статью о том, как добавлять общие параметры, существующие в файле общих параметров, к категориям проекта. Рассказал как сделать привязку по типу, по экземпляру, настроить изменение значение среди групп. Но как оказалось — самое интересное я и не рассказал. Нам вообще не обязательно иметь общие параметры в ФОП, мы можем генерировать их самостоятельно. Перед генерацией...
1 год назад
Ресурсы (в том числе бесплатные), которые я использую для программирования
Работа программистом — не волк, работа — work, а walk — это прогулка (с) Джейсон Стейтем Всем привет! Задумал статью о том, что я использую во время работы, на что опираюсь, и где ищу информацию для развития. Сначала я думал, что статья получится маленькой и не особо интересной, но потом вспомнил, что таких ресурсов, в принципе, не мало, и мне есть что рассказать о них. Кроме того, вы всегда можете поделиться в комментариях, что используете вы, подняв ценность данной статьи для всего коммьюнити. Когда я начинал изучать C#, мой друг подарил мне на день рождения книгу об основах C#...
253 читали · 1 год назад
JetBrains Rider — теперь бесплатная IDE. Почему лучше выбрать его вместо Visual Studio
.Net-разработчики делятся на 2 типа: те, кто любят Rider, и те, кто ещё его не пробовал. (с) Конфуций, "Избранные цитаты из интернета", V век до н.э. Всем привет! Сегодня расскажу немного про свою любимую программу, в которой пишу код постоянно, однажды попробовав — JetBrains Rider. Совсем недавно мне дали бесплатную лицензию как open-source разработчику (правда, не без проблем, потому что я паспортом не вышел), но вскоре после этого Rider стал бесплатным для некоммерческой разработки — так что теперь и вы можете попробовать его...
1378 читали · 1 год назад
WPF. Добавление анимаций к элементу. Стили
Самое важное в плагине для Revit — это анимации (с), Лао-цзы, VI в. до н.э. Всем привет! Сегодня расскажу, как добавить анимацию к кнопке WPF. Тема особо не касается Revit, да и многие её пренебрегают — ведь плагин без анимаций будет выполнять бизнес-задачу, а анимация без плагина никому не нужна, но почему бы и не рассказать о том, как сделать пользовательский интерфейс своего приложения более интересным. Сделаем так, чтобы наша кнопка при наведении увеличивалась на 5%, а её границы становились толстыми...
1 год назад
Dependency Injection с помощью контейнеров в десктопных приложениях на C#
Всем привет! Сегодня рассмотрим довольно интересную тему, которая является очевидной базой для веб-разработчиков, но для разработчиков десктопных приложений часто является чем-то непонятным. Так что давайте разбираться, что это за инъекция зависимостей (dependency injection, DI, внедрение зависимостей) и зачем она нужна. В целом, инъекция зависимостей — это паттерн проектирования ПО, в котором зависимости, используемые объектом, предоставляются ему извне, а не создаются самим объектом. Простейший...
147 читали · 1 год назад
Основы C#. Структуры данных. Массив, список, словарь, HashSet
Всем привет! Сегодня статья, не связанная с Revit. Поговорим о структурах данных, которые наиболее часто используются в языке C#. Дисклеймер: статья написана в основном для начинающих программистов под Revit на основе моего опыта. Если вы лучше меня знаете, что всё на самом деле не так или не совсем так, то делитесь подробностями в комментарии, или оставляйте там ссылки на свои блоги. При кажущейся простоте, тема сложная, и осветить прям все-все аспекты довольно тяжело. Когда я начинал программировать, я сначала немного изучил Python, а потом начал переходить на C#...
207 читали · 1 год назад
Бенчмарки. Измерение производительности и эффективности кода
Всем привет! Сегодня расскажу о новой для себя теме — бенчмарках, и как с их помощью измерять время выполнения и расход памяти. Что такое бенчмарк? Это специальная библиотека, а так же созданное с её помощью приложение. В этом приложении мы пишем некоторое количество бенчмарк-тестов, для которых хотим сравнить время выполнения и расход памяти. После чего мы запускаем его, приложение (с помощью добавленной в него библиотеки) запускает наши тесты много раз, измеряет среднее время выполнения, расход...
1 год назад
Изменение правил сортировки элементов в C#
Всем привет! Сегодня расскажу о том, как решить довольно интересную задачу, которая возникла у меня однажды при работе с Revit. Впрочем, изложенные здесь вещи можно применить в любом C# приложении. У нас есть Revit-документ с некоторым количеством листов. Мы хотим создать окно, где пользователю будут представлены эти листы, отсортированные по номеру листа. Мы пишем код, пишем окно, делаем тестовый файл с 5 листами, всё отлично работает. Но потом к нам приходят пользователи и говорят "а почему листы отсортировались в порядке 1, 10, 11, 12 и т...
1 год назад
Работа с предупреждениями в файле Revit
Всем привет! Сегодня расскажу, как через API посмотреть список предупреждений документа, а так же покажу, как можно избавиться от некоторых из них. Поехали! Это предупреждения, которые сами по себе не мешают работе, но могут замедлять работу файла при большом их количестве. Кроме того, некоторые из них предупреждают о грубых ошибках модели: например, "В одном и том же месте имеются идентичные экземпляры". Вот так выглядит окно с предупреждениями в интерфейсе Ревит: Давайте попробуем найти эту таблицу через Revit Lookup...
191 читали · 1 год назад
Работа с помещениями. Создание пола по контуру помещения
Всем привет! Сегодня расскажу, как работать с помещениями, получать его контур разными способами, и превращать его в пол или перекрытие в Revit. Поехали. Для работы я буду использовать своё приложение для большого количества команд. В нём создам новый проект с WPF-окном. Пользователь будет выбирать тип пола и помещения, а затем плагин создаст полы для них. Я давно не писал статьи с полным описанием всех подробностей, и мои читатели могли пропустить что-либо среди других статей, поэтому сейчас некоторые вещи могут повторяться...
118 читали · 1 год назад