Визуальное программирование
Dynamo – программа для визуального программирования встроенная в стандартный функционал Autodesk Revit. Упрощённо визуальное программирование можно представить на примере пиццы =)
Необходимость для Autodesk такого инструмента как Dynamo продиктована несколькими факторами:
- Разными региональными стандартами
- Разными подходами к процессам проектирования
- Отсутствием возможности у основной команды разработчиков Revit оперативно добавлять новые функции
- Стремлением создать мощный инструмент для работы с формообразующими на подобии Grasshopper
Для общего понимания работы программы стоит раскрыть несколько основных терминов:
Скрипт – набор нодов, выстроенных и соединённых в определённом порядке и соединённых между собой связями. Данный порядок выстраивает последовательность действий, выполняемых программой автоматически.
Нод – код, написанный на языке Iron Python и объединённый в визуальную оболочку с входными и выходными данными. Каждый «прямоугольник» на рабочем пространстве – это нод.
Пакет – библиотека пользовательских нодов не входящих в основной функционал и загружаемых отдельно.
17 минусов которые заставят Вас задуматься
Dynamo действительно позволяет автоматизировать процессы в Revit и его единственным плюсом является бесплатная доступность при уже приобретённой основной программе Revit. Однако, каждый пользователь встречается с целым рядом серьёзных проблем, не позволяющих использовать данный инструмент как основное средство оптимизации процессов проектирования в Revit.
Разберём каждую из проблем отдельно:
- Требуются специальные навыки по работе с программой.
Даже для того, чтобы запустить скрипт пользователю требуются специальные знания о том какие из кнопок за что отвечают. Редактирование и починка скрипта требуют многомесячного обучения специалиста. - Нестабильная работа ранее созданных скриптов.
Изменение от версии к версии Autodesk внутреннего алгоритма стандартных нодов ведёт к неисправности работы ранее созданных скриптов. Данный фактор не позволяет планировать временные затраты на ту или иную работу так как в любой момент скрипт может перестать работать.
За работоспособностью скриптов необходимо постоянно следить.
Пример: вы собрали и успешно протестировали скрипт. На момент создания всё работало исправно. Но, открыв данный скрипт через год, вы с огорчением обнаружите жёлтые восклицательные знаки. Скрипт не будет работать пока вы не исправите предупреждение или ошибку. - Dynamo не обновляется автоматически.
Ваш коллега создал скрипт в версии Dynamo 2.0.0, а у Вас на компьютере установлена версия Dynamo 1.0.0. Вы не сможете воспользоваться данным скриптом пока не обновите программу.
Скрипты, созданные в более поздних версиях Dynamo, не работают на ранних. - Для обновления Dynamo требуются права администратора.
В большинстве компаний для пользователей установлены ограничения на установку и обновление программ. Для обновления потребуется участие системного администратора, текущие задачи которого не всегда позволяют оперативно решить данную задачу. - Возможностей стандартных нодов не хватает для полноценной оптимизации сложных процессов проектирования в Revit.
Количество операций объединённых в ноды в несколько сотен раз меньше количества операций доступных в API Revit. Этот момент не позволяет создавать сложные процессы оптимизации, необходимые при реальном проектировании. - Для написания сложных команд от специалиста требуется знание языка программирования Iron Python.
Специфика проектировщиков не программирование. В программировании скорость и корректность работы программы на прямую зависит от уровня знания языка и принципов программирования. Созданной проектировщиком программа в несколько раз менее эффективная по сравнению с программой, созданной программистом. - Отсутствие полноценных форм для ввода данных пользователем.
«Проигрыватель Dynamo» только частично исправляет данный недостаток и не позволяет вывести всю информацию в форме интуитивно понятной пользователю. - Язык Python в несколько раз медленней C++ и C#, на которых написан исходный код Revit.
Выполнение сложных функций написанных на Python может работать в десятки раз дольше тех же функций написанных на C#. - Необходимость запускать дополнительную программу.
Dynamo запускается в отдельном окне. Загрузка программы требует времени и замедляет работу проектировщика. - Ожидание при открытии скрипта.
Большие скрипты могут открываться до минуты. Это отнимает время специалиста. - Трудно найти нужный скрипт.
Каждый раз при открытии Dynamo необходимо указывать расположения файла скрипта.
Пользователь может не знать путь к необходимому ему скрипту. - Нет единой вкладки с всеми доступными функциями.
Пользователи теряются в большой библиотеке скриптов и иногда могут не знать о существовании необходимой им функции. - Часто скрипты не протестированы и не универсальны.
При создании скрипта у пользователя нет времени и возможности протестировать алгоритм на множестве разных случаев. Это ведёт к тому, что скрипт, работающий на одном проекте, может не сработать на другом. - Интерфейс Dynamo от версии к версии серьёзно изменяется.
Без постоянной практики трудно быстро ориентироваться в новом интерфейсе. Это приводит к увеличению времени на создание и корректировку скриптов. - Скрипты с сторонними пакетами работают только у пользователей с установленными пакетами.
Часто при создании скриптов используются ноды, входящие в библиотеки сторонних разработчиков. У тех из пользователей, которых данные пакеты не установлены, скрипты работать не будут. В информации нода не указывается необходимый для загрузки пакет библиотек, что увеличивает время поиска необходимого пакета. - Iron Python отличается от Python.
Для Iron Python существенно меньше обучающей информации чем для Python, что ведёт к трудностям написания алгоритмов на данном языке. - Нет примеров и синтаксиса в стандартной базе данных Revit API Docs.
Все примеры и синтаксис даны только на языках C#, Visual Basic, Visual C++, что увеличивает сложности по написанию исходного кода функции.