«Справка Wiki, посвященная методам разработки с помощью API Dynamo, вспомогательных библиотек и инструментов».
https://github.com/DynamoDS/Dynamo/wiki
В этом блоге собраны наиболее актуальные статьи разработчиков Dynamo, посвященные новым функциям, рабочим процессам и всему, что связано с Dynamo.
Языки программирования служат для выражения идей, обычно включающих в себя логику и вычисления. Помимо этого, текстовый язык программирования Dynamo (ранее известный как DesignScript) также создавался для выражения проектных замыслов. Машинное проектирование носит исследовательский характер, и приложение Dynamo призвано поддерживать работу в этом направлении. Мы надеемся, что вы оцените гибкость этого языка и то, как он позволяет реализовывать проектные замыслы, быстро переходя от разработки концепции к итоговой форме. В этом руководстве пользователь, не имеющий опыта программирования или использования геометрии архитектурных объектов, найдет максимально полную информацию по этим двум взаимосвязанным дисциплинам.
http://dynamobim.org/wp-content/links/DesignScriptGuide.pdf
Dynamo Primer — проект с открытым исходным кодом, который был инициирован Мэттом Йежиком (Matt Jezyk) и рабочей группой по разработке Dynamo в компании Autodesk. Первая версия этого руководства была разработана в Mode Lab. Если вы хотите внести свой вклад в разработку этого проекта, создайте Fork-копию репозитория, добавьте в нее содержимое и отправьте запрос на внесение изменений.
https://github.com/DynamoDS/DynamoPrimer
На этой странице описывается процесс разработки пользовательского узла Dynamo на C#, использующего интерфейс Zero Touch. В большинстве случаев статические методы и классы C# можно импортировать без модификации. Если для библиотеки требуются только функции вызова без создания новых объектов, этого можно легко добиться с помощью статических методов. Когда приложение Dynamo загружает DLL, оно отделяет пространство имен классов и отображает все статические методы как узлы.
https://github.com/DynamoDS/Dynamo/wiki/Zero-Touch-Plugin-Development
Python — это интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Он включает в себя модули, исключения, динамический ввод, динамические типы данных очень высокого уровня и классы. Python сочетает в себе высокую мощность и понятный синтаксис. Он включает интерфейсы для взаимодействия с различными системными вызовами и библиотеками, а также с различными оконными системами. Кроме того, он поддерживает расширение с использованием C или C++. Его можно использовать как язык расширения для приложений, которым требуется программируемый интерфейс. Наконец, язык Python является переносимым: он работает на множестве вариантов Unix, компьютерах Mac, на платформах Windows 2000 и более поздних версий. В руководстве по Python для начинающих приведены ссылки на другие ознакомительные учебные пособия и ресурсы для обучения программированию на Python.
https://www.python.org/about/gettingstarted
AForge.NET — это платформа C# с открытым исходным кодом, предназначенная для разработчиков и исследователей в сферах компьютерного зрения и искусственного интеллекта: обработка изображений, нейронные сети, генетические алгоритмы, нечеткая логика, машинное обучение, робототехника и т. д.
http://www.aforgenet.com/framework/
MathWorld — это математический онлайн-ресурс, составленный Эриком В. Вайсстайном с помощью тысяч соавторов. С момента первой публикации в 1995 г. MathWorld стал лидирующим информационным ресурсом по математике как в математическом, так и в образовательном сообществах. На публикации MathWorld ссылается огромное количество журналов и книг разных степеней научности.
«Эти публикации в основном посвящены платформе Revit и помогают пользователям работать с ней с удовольствием».
«Эти записи призваны устранить ряд пробелов в ресурсах для изучения и применения API Revit в контексте рабочего процесса проектирования».
http://wiki.theprovingground.org/revit-api
«RevitPythonShell добавляет в Autodesk Revit и Vasari модуль IronPython, интерпретирующий данные». Этот проект возник до появления Dynamo и является отличным источником информации по разработке на Python. Проект RPS:
https://github.com/architecture-building-systems/revitpythonshell
Блог разработчика:
http://darenatwork.blogspot.com/
Исчерпывающий каталог рабочих процессов на основе API Revit от одного из ведущих специалистов по BIM.
В этом разделе указаны дополнительные ресурсы, которые позволят перейти на новый уровень владения Dynamo. Кроме того, мы добавили в это руководство индекс важных узлов, набор полезных пакетов и хранилище файлов примеров. Мы будем рады, если вы примете участие в пополнении этого раздела. Портал Dynamo Primer открыт для всех.
Процесс разработки большинства проектов включает в себя построение визуальных, системных и геометрических связей между элементами. В подавляющем большинстве случаев для создания этих связей используются рабочие процессы, в которых переход от концепции к конечному результату осуществляется за счет применения правил. Таким образом, процесс работы (возможно, непреднамеренно) строится по алгоритмическому принципу, в основе которого лежит использование пошагового набора действий, следующих стандартной логике: ввод данных, их обработка и, наконец, вывод. Инструменты программирования позволяют формализовать эти алгоритмические процессы и повысить эффективность их использования.
Алгоритмы являются мощными инструментами, однако само понятие алгоритм часто толкуется не совсем правильно. Безусловно, с помощью алгоритмов можно добиться самых неожиданных и поразительных результатов, однако не стоит искать в этом какой-то волшебный секрет. На самом деле алгоритмы по своей сути весьма и весьма ординарны. В качестве наглядного примера можно привести процесс создания бумажного журавлика. Мы берем квадратный лист бумаги (ввод), складываем его определенным образом (действия по обработке) и в результате получаем журавлика (вывод).
Итак, что же такое алгоритм? Это абстрактный набор шагов, которые можно представить либо в текстовой, либо в графической форме.
Текстовые инструкции
Возьмем квадратный лист бумаги и повернем его цветной стороной вверх. Сложим лист пополам, развернем, затем сложим его пополам в другом направлении и снова развернем.
Перевернем лист белой стороной вверх, сложим пополам, тщательно разгладим, развернем, затем сложим в другом направлении и опять развернем.
Следуя созданным сгибам, сложим лист так, чтобы совместить три верхних угла с нижним, и разгладим полученную конструкцию.
Сложим боковые углы верхнего квадрата к центру, затем развернем их обратно.
Сложим верхний угол модели книзу, тщательно разгладим и также развернем обратно.
Следуя созданным сгибам, раскроем верхний квадрат, потянув нижний угол вверх и сложив боковые стороны к центру. Тщательно разгладим полученную конструкцию.
Перевернем конструкцию и повторим шаги 4–6 с другой стороны.
Сложим боковые углы верхней части конструкции к центру.
Перевернем конструкцию и повторим это действие с другой стороны.
Согнем обе «ножки» конструкции в направлении вверх и развернем их обратно.
Следуя только что созданным сгибам, согнем обе «ножки» внутрь и вверх.
Проделаем аналогичную процедуру с концом одной из «ножек», чтобы сделать клюв, и опустим крылья вниз.
Получился журавлик.
Графические инструкции
Выполнение обоих представленных наборов инструкций приводит к одному и тому же результату — бумажному журавлику. Если вы следовали инструкциям и сделали журавлика, то вы только что применили алгоритм. Единственное различие между этими наборами инструкций заключается в их формальном выражении, что подводит нас к понятию программирование. Программирование (а точнее, компьютерное программирование) представляет собой создание исполняемой программы для обработки последовательности действий путем их формализации. Если преобразовать приведенные выше инструкции по созданию бумажного журавлика в формат, который сможет прочитать и выполнить компьютер, это и будет программированием.
Первое правило и первая трудность программирования заключается в том, что для эффективного взаимодействия с компьютером человеку приходится прибегать к той или иной форме абстракции. Абстракция достигается за счет использования языков программирования, таких как JavaScript, Python или C. Если у нас есть повторяемый набор инструкций, например для создания бумажного журавлика, то от нас требуется лишь перевести его на язык компьютера. В результате мы сможем создать с помощью компьютера нужного нам журавлика или целое множество журавликов, различающихся между собой по тем или иным параметрам. Таким образом, компьютер позволяет многократно выполнять отдельную задачу или набор задач без задержек и ошибок, возникающих в связи с человеческим фактором. В этом и заключается сила программирования.
Определение процесса визуального программирования
Скачайте файл примера, щелкнув указанную ниже ссылку.
Полный список файлов примеров можно найти в приложении.
Если бы вам было нужно написать инструкцию по созданию бумажного журавлика, что бы вы использовали: графику, текст или их сочетание?
Если вы решили использовать графику, то вам следует обратить внимание на визуальное программирование. Процессы текстового и визуального программирования по сути своей ничем не отличаются. И там, и там используется одна и та же платформа формализации, однако при визуальном программировании инструкции и связи в программе определяются посредством графического (т. е. визуального) пользовательского интерфейса и вместо ввода текста, ограниченного возможностями синтаксиса, создается цепочка из готовых к использованию узлов. Для сравнения рассмотрим один и тот же алгоритм рисования окружности через точку, заданный с помощью узлов и с помощью кода.
Визуальная программа
Текстовая программа
Результаты алгоритма
Визуальная наглядность этого способа программирования делает его более простым и понятным для программистов. Приложение Dynamo относится к средствам визуального программирования, но, как будет показано далее, оно также поддерживает возможности текстового программирования.
Ниже приведен список пакетов, наиболее популярных среди пользователей Dynamo. Разработчики, не стесняйтесь пополнять этот список! Помните, что Dynamo Primer — это ресурс с открытым с исходным кодом.
Коллекция archi-lab — это более 50 пользовательских пакетов, которые позволяют существенно расширить возможности взаимодействия Dynamo с Revit. Пакеты archi-lab включают в себя как узлы для выполнения базовых операций со списками, так и узлы визуальной среды расчетов для Revit с расширенными возможностями. Пакеты archi-lab доступны в Package Manager.
BimorphNodes — это универсальная коллекция мощных вспомогательных узлов. Среди них можно найти высокоэффективные узлы для выявления конфликтов и управления пересечениями геометрии, узлы преобразования кривых ImportInstance (САПР) и средства для сбора связанных элементов, решающие проблему ограничений в API Revit. Чтобы подробнее узнать о всех доступных узлах, ознакомьтесь с каталогом BimorphNodes. Коллекция BimorphNodes доступна в Package Manager.
Bumblebee — это подключаемый модуль для обеспечения взаимодействия между Excel и Dynamo, значительно расширяющий возможности Dynamo в плане чтения и записи файлов Excel.
Clockwork — это коллекция пользовательских узлов для среды визуального программирования Dynamo. В ней представлено множество узлов для работы с Revit и решения других задач, например управления списками, выполнения математических и строковых операций, преобразования единиц измерения, выполнения геометрических операций (преимущественно ограничивающие рамки, сетки, плоскости, точки, поверхности, UV и векторы) и разбивки на панели.
DataShapes — это пакет для расширения пользовательских функций в сценариях Dynamo. Основным назначением пакета является увеличение спектра функциональных возможностей проигрывателя Dynamo. Подробности см. на странице https://data-shapes.net/. Если вы ходите создавать мощные рабочие процессы для проигрывателя Dynamo, рекомендуем обратить внимание на этот пакет.
DynamoSAP — это параметрический интерфейс для SAP2000, встраиваемый в Dynamo. Этот проект позволяет инженерам осуществлять генеративное проектирование и анализ строительных систем в SAP, используя Dynamo для управления моделью SAP. Проект содержит несколько типовых рабочих процессов, описанных в прилагаемых файлах примеров, а также предоставляет возможности для автоматизации типовых задач в SAP.
Это библиотека, расширяющая функциональные возможности Dynamo/Revit, которая позволяет осуществлять развертывание геометрии обычных и сложных поверхностей. Библиотека позволяет пользователям сначала преобразовывать поверхности в плоскую мозаичную топологию, а затем выполнять их развертку с помощью инструментов Protogeometry в Dynamo. В этом пакете также содержится несколько экспериментальных узлов и стандартных файлов с примерами.
Импортируйте векторные изображения из Illustrator или интернета в формате SVG. Этот инструмент позволяет импортировать созданные вручную чертежи в модуль Dynamo для выполнения параметрических операций.
Energy Analysis for Dynamo позволяет выполнять параметрическое моделирование энергопотребления и создавать рабочие процессы для расчета энергопотребления всего здания в Dynamo 0.8. Пакет Energy Analysis for Dynamo позволяет настроить модель энергопотребления в Autodesk Revit, отправить ее в Green Building Studio для расчета энергопотребления DOE2 и изучить полученные результаты. Пакет разрабатывается компанией Thornton Tomasetti в рамках проекта CORE Studio.
Firefly — это коллекция узлов, позволяющих Dynamo обмениваться данными с устройствами ввода/вывода, такими как микроконтроллер Arduino. Поскольку поток данных передается в реальном времени, пользователи Firefly получают множество возможностей для интерактивного создания прототипов на стыке между цифровыми и физическими системами с помощью веб-камер, мобильных телефонов, игровых контроллеров, датчиков и т. д.
Genius Loci — это компиляция узлов для Dynamo. Она содержит узлы, полезные для пользователей Revit. Установите этот пакет для ознакомления с его функциями, в частности с удобными процессами взаимодействия со связанными файлами и документами Revit.
Mantis Shrimp — это проект по развитию совместимости, который позволяет легко импортировать геометрию Grasshopper и/или Rhino в Dynamo.
Пакет Dynamo Mesh Toolkit содержит множество полезных инструментов для работы с геометрией сети. В этом пакете имеются возможности для импорта сетей из внешних файлов в других форматах, формирования сетей из существующих геометрических объектов Dynamo и построения сетей вручную на основе данных о вершинах и соединениях. Кроме того, в пакет входят инструменты для изменения и восстановления геометрии сети.
🧐 MONOCLE
Monocle — это расширение вида для Dynamo 2.0.x. Monocle содержит набор полезных инструментов для идентификации пакетов, очистки графиков и многих других операций. Monocle позволяет добавлять функциональные возможности в пользовательский интерфейс Dynamo так, что у пользователей создается впечатление, будто эти функции встроены в программу. Расширение Monocle доступно в Package Manager.
Optimo предоставляет пользователям Dynamo возможности для оптимизации решения определенных ими проектных задач с помощью различных адаптируемых алгоритмов. Пользователи могут определять одну или несколько целей для поставленных задач, а также отдельные функции пригодности.
Библиотека узлов Rhynamo предоставляет пользователям возможность чтения и записи файлов Rhino 3DM из Dynamo. Rhynamo преобразует геометрию Rhino в пригодную к использованию геометрию Dynamo с помощью библиотеки OpenNURBS от компании McNeel, позволяя создавать новые рабочие процессы для беспрепятственного обмена геометрией и данными между Rhino и Revit. Этот пакет также содержит несколько экспериментальных узлов, которые обеспечивают прямой доступ к командной строке Rhino.
Rhythm — это набор полезных узлов, поддерживающих эффективное взаимодействие между проектом Revit и Dynamo, что может действительно помочь пользователям в работе. Rhythm — это приложение с открытым исходным кодом, созданное преимущественно на базе C#. С его помощью в Dynamo можно добавить узлы Revit, базовые узлы и расширение вида. Пакет Rhythm доступен в Package Manager.
Узлы в составе коллекции Spring Nodes в первую очередь предназначены для улучшения взаимодействия между Dynamo и Revit. Их более общая цель — изучение всех средств, которые помогают ускорить рабочие процессы, ориентированные на BIM. Во многих узлах используются средства IronPython или DesignScript, что может послужить хорошей отправной точкой для изучения синтаксиса и тонких моментов этих языков программирования. Коллекция Spring Nodes доступна в Package Manager.
ARCHI-LAB
BIMORPH NODES
BUMBLEBEE FOR DYNAMO
CLOCKWORK FOR DYNAMO
DATA|SHAPES
DYNAMO SAP
DYNAMO UNFOLD
DYNASTRATOR
ENERGY ANALYSIS FOR DYNAMO
FIREFLY FOR DYNAMO
GENIUS LOCI
MANTIS SHRIMP
MESH TOOLKIT
OPTIMO
RHYNAMO
RHYTHM
Spring Nodes