Revit api что это
Revit api что это
Этот учебный курс предназначен для опытных пользователей Autodesk Revit, которые заинтересованы в более производительной работе, стремятся автоматизировать и расширить возможности Revit, но не имеют навыков компьютерного программирования.
*В учебном курсе рассматривается работа с Autodesk Revit Architecture, однако все описанные действия можно применить и для других вариантов Revit. Принципы написания дополнений для 2011 (и последующих) версий продуктов Revit Architecture, Revit Structure и Revit MEP идентичны. Для 2011 и 2012 версий в ходе занятий пользователям предлагается работать в среде Visual Studio Tools for Applications (VSTA). В Revit 2013 VSTA заменена на SharpDevelop.
В Интернете доступно множество учебных ресурсов по Autodesk Revit API, но большинство из них предназначено для пользователей, имеющих достаточный опыт в программировании. Этот учебный курс организован по-другому: не предполагая наличия навыков программирования у обучаемого, он помогает создать первый плагин, при этом не перегружая пользователя лишней информацией. Вне зависимости от уровня владения основами программирования, уже через час после начала занятий обучаемый будет иметь вполне работоспособное приложение. Курс открывается обзором преимуществ адаптации продуктов Autodesk, а затем мы перейдем непосредственно к занятиям по использованию Autodesk Revit API. Обучаемые создадут работоспособный плагин, и лишь после этого во всех подробностях ознакомятся с основополагающими принципами и приступят к расширению функциональных возможностей приложения.
В ходе учебного курса «Моя первая программа» будет создана новая команда, копирующая группу объектов (в нее могут входить мебель, перегородки и элементы инженерных систем) из одной комнаты в другую. В моделях зданий часто встречается одинаковая компоновка мебели. Ее копирование вручную – довольно трудоемкий процесс: проблемой может стать, например, сохранение одинакового положения. Задачи такого рода идеально подходят для автоматизации посредством Autodesk Revit API, что и будет представлено вниманию обучаемых в этом курсе.
Видео: Готовый плагин
В видеоролике демонстрируется финальный вариант плагина, созданный на шестом занятии учебного курса.
Видео: Установка Visual C# 2010 Express
Урок 1. Общее представление о программе
На этом уроке мы создадим первый базовый плагин для Autodesk Revit, который копирует выбранную пользователем группу в указанное место.
Урок 4. Отладка кода
На этом уроке мы научимся использовать отладчик Visual Studio для пошагового исполнения плагина и отслеживания изменения переменных.
Урок 8. Дополнительные ресурсы
На этом уроке мы предоставим вам дополнительную информацию, которая поможет повысить эффективность разработки плагинов для Autodesk Revit. Мы покажем, где найти справочные сведения по API, документацию, примеры, а также порекомендуем ресурсы для дальнейшего изучения Autodesk Revit API.
Revit api что это
Последнее занятие учебного курса посвящено дополнительной информации, которая поможет вам увеличить эффективность разработки плагинов для Autodesk Revit. Мы покажем вам, где найти справочные сведения по API, документацию и примеры для изучения Autodesk Revit API.
Прежде всего давайте проанализируем ресурсы API, которые могут быть установлены с продуктом Autodesk Revit:
Набор инструментов разработчика Autodesk Revit (SDK)
Revit SDK содержит большой набор информации по Revit API. Они делятся на три категории: документация, примеры и инструменты.
Набор SDK содержит два документа Microsoft Word: один для начинающих изучать Revit API, а другой содержит список изменений в сравнении с предыдущей версией Revit API. Также там присутствует документ Adobe PDF под названием Revit API Developer Guide, в котором содержится информация об основах API по разделам. Еще один очень важный документ для работы с Revit API – это справочная документация, которая находится в файле RevitAPI.CHM. Вам доступен поиск по всем классам, методам и свойствам в Revit API с примерами кода (если они представлены).
SDK содержит солидный список примеров API, которые покрывают почти все возможности Revit API. Наиболее эффективным будет открыть главный файл решения “Samples” в Visual C# Express и найти метод API, с которым вы хотели бы работать. Вы быстро изучите способы применения данного метода и сможете использовать его в своих плагинах. SDK также содержит примеры Visual Studio для Applications (VSTA), которые показывают возможности VSTA для подготовки наброска кода и проверки функциональности в Revit API.
Autodesk Revit Developer Center – это отличный ресурс, посвященный Autodesk Revit API. Помимо улучшений и дополнений к API, он содержит еще несколько полезных вещей. В него включено:
Блог The Building Coder
Building Coder – это популярный блог с информацией по Revit API, включая статьи, обсуждения методов использования API и ответы на наиболее часто задаваемые вопросы по API.
На этом учебный курс завершается. Надеемся, что данные статьи оказались вам полезны и дали старт в освоении Revit API. Желаем вам успеха в работе с API.
Autodesk ® Revit, Autodesk® Revit® Architecture, Autodesk® Revit® Structure, Autodesk® Revit® MEP
Получайте новости и рекомендации непосредственно от специалистов Autodesk.
Блог специалистов технической поддержки ADN — ADN AEC DevBlog
Форумы пользователей
Включайтесь в обсуждения проблем применения API на форумах, которые модерируются специалистами Autodesk.
Autodesk App Store для Revit: Наращивайте функционал Revit с помощью приложений, разработанных для сообщества пользователей.
Облачные вычисления: Узнайте, как можно разработать и интегрировать с Revit собственное облачное решение (Software as a Service).
DevTV: Дополнение к Введению в программирование для Revit 2012/2013 (на английском языке)
Краткий учебный видеокурс рассказывает об изменениях в Revit 2012 API и том как запустить примеры разобранные в «Введение в программирование для Revit»
DevTVs Часть 1 и 2 для Revit 2012
Онлайн-просмотр | Загрузка
Конференция Autodesk Revit DevCamp 2013 (онлайн и на русском языке)
Смотрите видеоролики и скачивайте презентации. Изучайте материалы, которые были представлены на конференции Autodesk Revit DevCamp 2013.
Архив презентаций.
Также вы можете воспользоваться полезным онлайн справочником Revit Wiki Help:
Software Development Toolkit (SDK) входит в каждый продукт семейства Revit. Установить Revit SDK можно двумя способами:
Revit SDK можно также загрузить здесь:
* Использование Revit SDK регламентируется условиями лицензионного договора, который отображается в процессе установки.
Если вам необходима профессиональная поддержка по вопросам программирования в Autodesk Revit, мы рекомендуем присоединиться к сообществу Autodesk Developer Network.
При поддержке компании Autodesk проводятся тренинги на русском языке для программистов и опытных пользователей по API основных программных продуктов. Информацию о тренингах Autodesk Revit API можно найти здесь
Если вы хотите оставить заявку на проведение тренинга по Autodesk Revit API в вашем регионе или на вашем предприятии, вы можете связаться с нами. Контактное лицо в Autodesk – Ярослав Решетников,
yaroslav.reshetnikov@autodesk.com.
Техническая поддержка по программированию на платформах Autodesk на русском языке.
Если у вас есть вопросы по программированию на платформах Autodesk, вы можете задать их на русскоязычном форуме технической поддержки.
Учебные материалы по Revit API
Решил собрать в одном месте все материалы, которые будут полезны тем, кто решил начать программировать под Revit. Будет пополняться. Как всегда, прошу под кат.
Ссылки
Первое с чего все начинали — учебный курс «Моя первая программа под Revit». Рассчитан на тех, кто с программированием пока вообще не сталкивался: https://www.autodesk.ru/autodesk-developer-network/api-trainings/my-first-plugin/first-prog-adsk-revit
Блог главного гуру по Revit API — Джереми Таммика: thebuildingcoder.typepad.com
Главный источник информации по API — это комплект разработчика (SDK), его можно скачать здесь: https://www.autodesk.com/developer-network/platform-technologies/revit
Там есть папка Samples с готовыми примерами кода, от простых до сложных, а еще файлик RevitAPI.chm — полный комплект документации по Revit API.
Ваши глаза в лабиринте Revit API — супер-полезная утилита Revit Lookup (серьезно, поставить в обязательном порядке): https://forums.autodesk.com/t5/revit-bim-russkiy/revitlookup/td-p/7393469
Частые вопросы:
Зачем тратить силы на изучение C#, если можно использовать Dynamo и Python, это же намного проще?
Dynamo — замечательный инструмент для решения геометрических задач: построить кривые и поверхности, разбить на участки, найти пересечения, элементы разложить и всё такое (спасибо библиотеке ProtoGeometry.dll). Но для работы с данными — считать, записать параметры, сделать проверки и т.д. — Dynamo уже плохо подходит. Синтаксис Python действительно проще C# — но и его тоже нужно изучать! При этом для C# есть специализированная среда разработки, где тебе и сразу подходящие варианты предлагают, и ошибки сразу подсвечивают. Почти все примеры кода, которые вы встретите в документации и в интернете, тоже будут на сяшарпе. Dynamo же, бывает, оперирует собственными классами, не описанными в API, и разбираться с ними — то еще развлечение. Смотрю на вопросы в чатах по динамам и питонам, и понимаю, что благодаря удобной среде разработки даже не столкнулся в их проблемами. В общем, вам выбирать, я своё мнение высказал…
По какому пути лучше идти? Пару раз начинал изучать программирование, и что-то не пошло.
Если изучать по принципу «так, что-то у меня вечер свободный, чем бы заняться, может по программированию видосики посмотреть?» — действительно ничего не выйдет. Лично я начал изучать не от хорошей жизни. Совсем другой настрой, когда перед тобой стоит задача, и отвертеться от неё никак не получится — голову об эту стенку разбей, зубами вцепись и грызи, но сделай.
Перепробовал весь стандартный функционал, какой только в Ревите есть; всю сеть перешерстил на тему готовых плагинов и всех знакомых спросил, есть ли у них идеи; попытался за свои деньги нанять программиста и так и не дождался результата; чуть не сошел с ума, раз за разом вписывая одни и те же циферки; засыпал с мыслью об этих чертовых табличках и просыпался с мыслью о них же — и вот теперь ты на нужном уровне мотивации, чтобы приступать к API! А если «пробую и что-то не получается» — значит, оно и не надо.
Я столько слышал про API, будто это что-то легендарное, изучу и смогу делать что угодно, это правда?
Увы, нет. API это по большей части всё то же, что и делаешь, нажимая кнопочки в интерфейсе. А бывает даже так, что к каким-то вещам у API вообще нет доступа! Например, нет доступа к формулам расчетных параметров или переопределению графики связанных файлов. Редко когда встретишь в API такую возможность, которой в графическом интерфейсе нет. Так что сказкам не верьте, ничего нет сверхъестественного.
Есть ли обучающие видеокурсы по Revit API?
В интернетах таких курсов не видел, и один знакомый программист даже говорил, что такой курс сделать невозможно. Но тем не менее, я провел такой курс, пока в Пике работал, именно «с нуля» — половина по теории C#, половина по Revit API. Когда-нибудь и на «широкую аудиторию» его проведу (нет)
Программирование доступно только гениям и избранным, даже пробовать не буду…
Тоже неправда. Тот, кто разрабатывает семейства-спецификации в Ревите — уже программист! Например, уже знаком с логикой ООП, пусть даже и не знает еще, что это именно оно. Логика программ сложна, но не сложнее той логики, которую надо продумать в каком-нибудь составном параметрическом семействе. А для того, чтобы сделать первые плагины, достаточно самых азов языка (в этом курсе, например, из 25 глав достаточно изучить первые 3). А в создании ореола «избранности» обычно сами программисты и заинтересованы, и неудивительно…
(здесь должен быть какой-то эпилог, но я его не придумал)
Всем привет! Тут мой блог об Autodesk Revit, а на самом деле — просто блокнот, куда я записываю свои идеи.
Надеюсь, что информация окажется полезной и интересной.
Практические приемы использования многопоточных вычислений при работе с Revit API
Я архитектор, долгое время проектировал здания и сооружения, но вот с лета прошлого года начал программировать на C# используя Revit API. У меня уже есть несколько модулей-надстроек для Revit и теперь я хочу поделиться некоторым опытом разработки для Revit. Предполагается, что читатели умеют писать макросы для Revit на C#.
Недавно исследуя многопоточные вычисления пришел к некоторым неожиданным для себя выводам и избавился от заблуждений связанных с работой Revit API. В этой статье я напишу как ускорить работу макросов в несколько раз, какие ограничения при работе с параллельными вычислениями у Revit API, что бы наконец не оставалось вопросов.
В прошлый раз, когда я писал о параллельных вычислениях, я решал абстрактную задачу, рассматривая работу вычислений в многопоточном режиме. Сейчас рассмотрим следующую практическую задачу:
Выполняя параллельные вычисления, мы можем работать и непосредственно с объектами Revit API (в данном случае с Wall), но при этом нам надо помнить о двух обстоятельствах:
Казалось бы можно приступить к тесту, но есть еще одно обстоятельство. Выполняя некоторые вычисления в цикле с объектами Ревит, важно не допустить повторного вычисления промежуточных значений (в нашем случае вычисление средней точки стены). Как оказывается, это очень затратная операция, которую обязательно надо кэшировать.
Мы же пойдем дальше в исследованиях и создадим класс, который даже будет предварительно получать свойства объектов Revit API, то есть кэшировать их. Кроме того наш класс сможет кэшировать значение средней точки стены. Что же, теперь приступим.
Сначала создадим макрос WallTesting. Не забудем добавить пару библиотек, необходимых для работы с параллельными вычислениями.
И теперь создадим кэширующий класс, который будет предварительно получать необходимые для работы свойства объектов стен.
В общем состав кэширующего класса и его работа расписана в комментариях. Теперь можно написать метод WallWithCashParallel, который будет работать с нашим кэширующим классом MyCashWall и сможет выполнять наши задачи в параллельном или последовательном режиме, да еще мы сможет выбрать, стоит ли кэшировать вычисление средней точки.
В приложенном файле вы еще найдете методы WorkWithWall и WorkWithWallCashValue.
Метод WorkWithWall решает наши задачи в параллельном и последовательном режиме, работает непосредственно с объектами Revit API, но не кэширует вычисление средней точки стены.
Метод WorkWithWallCashValue тоже решает наши задачи в параллельном и последовательном режиме, работает непосредственно с объектами Revit API, но этот метод кэширует вычисление средней точки стены.
Теперь создадим главный рабочий метод WallTesting:
Теперь работа завершена, остается создать примерно 2000 стен, запустить макрос у увидеть, как он работает. Я не делал обработчик исключения, на тот случай, если стены не выделены перед запуском макроса. Так, что не забудьте сначала выделить стены.
В общем можно сделать достаточно интересные выводы. Возьмем за эталон, с которым все будем сравнивать, последовательную обработку объектов в цикле без всякого кэширования промежуточных результатов.
Очевидно, что выполнять обработку массивов элементов, не сохраняя при этом результаты промежуточных вычислений (точки середины стены) неблагоразумно. При этом скорость параллельной обработки непосредственно элементов Revit API по сравнению с простой последовательной обработкой элементов Revit API будет падать при возрастании количества обрабатываемых элементов в цикле. Разница достигает до 6 раз при обработке цикла из 2000 стен.
Если мы кэшируем значения промежуточных вычислений (предварительно сохраним значения средней точки стены), мы уже получим солидную прибавку к скорости, вычисления станут быстрее в 414 и 170 раз при параллельной и последовательной обработке стен массива из 2000 стен.
Если мы потратим немного больше времени, что бы создать классы кеширующие свойства элементов Revit API, то получим также солидный выигрыш в производительности — в 212 и 80 раз при параллельной и последовательной обработке собственных классов. Однако необходимость при каждом проходе цикла вычислять среднюю точку стен остается узким местом такого решения.
Но если уж вы сделаете классы, которые будут кэшировать свойства объектов Ревит, то тогда просто необходимо сделать кэширование и промежуточных значений вычислений. При работе таких классов в параллельном и последовательном режиме разница по сравнению с простой последовательной обработкой элементов Revit API — в 354 и 127 раз.
В большинстве случаев достаточно продумать как следует код и просто не допустить повторных вычислений одних и тех же значений. Параллельные вычисления помогут сделать такой код еще в 2 раза быстрее, но это имеет значение, если вы хотите обработать в цикле больше нескольких тысяч объектов или провести сложные вычисления. Очевидно, не стоит распараллеливать вычисления, если в цикле будет всего пару десятков объектов.
Если вы собираетесь обработать большое количество объектов Revit API, то создание кэширующих классов, которые сохранят и свойства объектов и промежуточные значения, не даст большего роста производительности по сравнению с работой напрямую с объектами Revit API (при условии кэширования промежуточных вычислений у объектов Revit API). Но при таком подходе, возможно, легче будет написать код для вычисления промежуточных результатов.