Учебные материалы по Revit API

Решил собрать в одном месте все материалы, которые будут полезны тем, кто решил начать программировать под Revit. Будет пополняться. Как всегда, прошу под кат.

Ссылки

 

Первое с чего все начинали — учебный курс "Моя первая программа под Revit". Рассчитан на тех, кто с программированием пока вообще не сталкивался: https://www.autodesk.ru/autodesk-developer-network/api-trainings/my-first-plugin/first-prog-adsk-revit

Русскоязычное сообщество разработчиков: http://adn-cis.org/articles/revit-dotnet-api/

Официальный форум Автодеска по Revit API: https://forums.autodesk.com/t5/revit-api-forum/bd-p/160

Блог главного гуру по Revit API — Джереми Таммика: thebuildingcoder.typepad.com

Вот еще хороший блог: spiderinnet.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

Ну и у меня на блоге нимношк: http://weandrevit.ru/category/revit-programming/

Для простых макросов можно пользоваться встроенным в Revit редактором Sharp Develop, но для чего-то более серьезного можно поставить бесплатную версию Visual Studio (при установке выбирать "Разработка под .NET Framework C#"): visualstudio.microsoft.com/ru/vs/community/

Лучшая русскоязычная обучалка по C#, сам тут учился: https://metanit.com/sharp/tutorial/https://visualstudio.microsoft.com/ru/vs/community/

Частые вопросы:

 

Зачем тратить силы на изучение C#, если можно использовать Dynamo и Python, это же намного проще?

Dynamo — замечательный инструмент для решения геометрических задач: построить кривые и поверхности, разбить на участки, найти пересечения, элементы разложить и всё такое (спасибо библиотеке ProtoGeometry.dll). Но для работы с данными — считать, записать параметры, сделать проверки и т.д. — Dynamo уже плохо подходит. Синтаксис Python действительно проще C# — но и его тоже нужно изучать! При этом для C# есть специализированная среда разработки, где тебе и сразу подходящие варианты предлагают, и ошибки сразу подсвечивают. Почти все примеры кода, которые вы встретите в документации и в интернете, тоже будут на сяшарпе. Dynamo же, бывает, оперирует собственными классами, не описанными в API, и разбираться с ними — то еще развлечение. Смотрю на вопросы в чатах по динамам и питонам, и понимаю, что благодаря удобной среде разработки даже не столкнулся в их проблемами. В общем, вам выбирать, я своё мнение высказал…

По какому пути лучше идти? Пару раз начинал изучать программирование, и что-то не пошло.

Если изучать по принципу "так, что-то у меня вечер свободный, чем бы заняться, может по программированию видосики посмотреть?" — действительно ничего не выйдет. Лично я начал изучать не от хорошей жизни. Совсем другой настрой, когда перед тобой стоит задача, и отвертеться от неё никак не получится — голову об эту стенку разбей, зубами вцепись и грызи, но сделай.
Перепробовал весь стандартный функционал, какой только в Ревите есть; всю сеть перешерстил на тему готовых плагинов и всех знакомых спросил, есть ли у них идеи; попытался за свои деньги нанять программиста и так и не дождался результата; чуть не сошел с ума, раз за разом вписывая одни и те же циферки; засыпал с мыслью об этих чертовых табличках и просыпался с мыслью о них же — и вот теперь ты на нужном уровне мотивации, чтобы приступать к API! А если "пробую и что-то не получается" — значит, оно и не надо.

Я столько слышал про API, будто это что-то легендарное, изучу и смогу делать что угодно, это правда?

Увы, нет. API это по большей части всё то же, что и делаешь, нажимая кнопочки в интерфейсе. А бывает даже так, что к каким-то вещам у API вообще нет доступа! Например, нет доступа к формулам расчетных параметров или переопределению графики связанных файлов. Редко когда встретишь в API такую возможность, которой в графическом интерфейсе нет. Так что сказкам не верьте, ничего нет сверхъестественного.

Есть ли обучающие видеокурсы по Revit API?

В интернетах таких курсов не видел, и один знакомый программист даже говорил, что такой курс сделать невозможно. Но тем не менее, я провел такой курс, пока в Пике работал, именно "с нуля" — половина по теории C#, половина по Revit API. Когда-нибудь и на "широкую аудиторию" его проведу (нет)

Программирование доступно только гениям и избранным, даже пробовать не буду…

Тоже неправда. Тот, кто разрабатывает семейства-спецификации в Ревите — уже программист! Например, уже знаком с логикой ООП, пусть даже и не знает еще, что это именно оно. Логика программ сложна, но не сложнее той логики, которую надо продумать в каком-нибудь составном параметрическом семействе. А для того, чтобы сделать первые плагины, достаточно самых азов языка (в этом курсе, например, из 25 глав достаточно изучить первые 3). А в создании ореола "избранности" обычно сами программисты и заинтересованы, и неудивительно…

 

(здесь должен быть какой-то эпилог, но я его не придумал)

Всем успехов!