воскресенье, 27 декабря 2015 г.

Revit. Dynamo и Python. Экскурс в историю и кто есть кто.

            
            Ребятам которые пытаются овладеть Dynamo могу сказать смело что не все так радужно как рисуют. Если пытаться решать свои задачи в Dynamo то это будет сравнимо с тем что вам дали две биты и попросили поднять ими монету с пола , в теории это возможно но по факту геморрой нечеловеческий.
            Нужно все же действовать по классике жанра , первое это теория, а потом практика. Сначала изучить до дыр сам синтаксис языка, а далее решать конкретные задачи. А Dynamo учит натягивать лошадь на глобус. И вот когда вы научитесь кодить , вы посмотрите на эту программу с улыбкой.
           Больше года у меня была первая попытка влезть в Dynamo но безрезультатно, многие скрипты лично мне были не нужны, а новые писать и чтобы они работали я не мог так как отсутствовали хотя бы теоретические знания, если и писал то обновление Dynamo рушило все попытки.


           Что есть Dynamo для изучение Python ? ровным счетом ничего ! Я конечно могу в данный момент предположить что люди которые занимаются в этой программе в ярости от мною сказанного но у меня есть аргументы. Сама идея графического программирования тянет ноги уже очень давно . И первой программой кто это реализовал была Houdini:

                Это было создано изначально киношниками для киношников. Примером может служить атака тысяч орков Саурона когда несколько типов моделей кинематики размножены на тысячи экземпляров и далее рандомно присваивается функция поведения, которых несколько десятков, в итоге на картинке десятки тысяч вполне самостоятельных единиц моделей. Такого рода принцип графического программирования применим больше для огромного количества экземпляров одного класса при этом каждый экземпляр должен выполнять определенную заранее функцию. Примером может служить симуляция огня , дыма , воды, воздуха, частицы взрыва и тд, говоря языком программирования все то к чему можно назначить функцию. То есть когда вы пишите код и используете конкретные динамические библиотеки вы напрямую видите результат кодинга визуально. Далее наглядное видео как это происходит :


            Только прежде чем заимствовать идею нодов нужно было разобраться в нюансах, а нюанс один, в случае с Houdini это все одна платформа. В случае с Dynamo  это отдельная платформа, и инженерные задачи это не красивая картинка,это математика.
           Первая связка с Python была именно у Houdini в качестве моделирования объектов трехмерной графики. Лично я познакомился с Houdini+Python в далеком 2006 году но сопромат и термех поставили крест на этом увлечении :( ........ и как оказалось не зря.
           Далее еще был Fusion , хотя почему был, есть и в данный момент, эта программа больше для композинга видео ряда , работа с альфа/бета каналами и тд:

 Статьи по этому поводу можно найти на хабрахабре, например http://habrahabr.ru/sandbox/40014/ .

             Далее я не могу, не упомянуть про фантастическую программу для инженерного анализа любых задач   -  ANSYS:


               Эту тему разговора вообще нужно вынести за скобки обсуждения , я до этого немного изучал APDL, это чисто инженерный язык программирования или иными словами встроенный алгоритмический язык программирования ANSYS. Возможности связки Revit-Ansys-APDL-Python-Revit я возможно когда нибудь выражу словами но это очень сложная информация и возможно выразить мысли доступным способом не получится.
               Теперь о сложности графов , что бы решить более менее сложную задачу Dynamo не особо подойдет, если взяться за серьезную задачу то в принципе это будет сотни нодов с сотнями связей но решив задачу, программированию вы не научитесь.
              P.S. проконсультировавшись с профессиональными программистами все сказали что это хорошая идея использовать чужой код , но совсем плохая что бы научиться что либо писать самому.














5 комментариев:

  1. Сколько требуется времени, чтобы научить студента писать код? причем студента строительного факультета? (к программистам я с инженерными задачами лично ходил, они сказали, что эта песочница им не интересна).

    В Dynamo студенты после 2 лекций решают практические инженерные задачи, ускоряют работу в разы. К тому же мы с помощью Dynamo мы иногда понимаем, что один алгоритм эффективнее другого не через месяц-два (как в программировании), а через пол часа. Михаил, за 2 месяца, Вы на питоне решили 3 задачи (судя по блогу). Я на Dynamo за это же время 33.

    ОтветитьУдалить
    Ответы
    1. Этот комментарий был удален автором.

      Удалить
    2. Александр , вы меня извините замою прямоту ,но я инженер практик , у меня очень много работы каждый день , я работаю на сдельщине, мне некогда жевать сопли и наматывать их туда куда не надо , мне нужно просто решение , нажал кнопку --- получил нужный результат, я не хочу быть привязанным к коммерческому проекту Dynamo и Revit , мне не хочется вечно переписывать исходники при обновлении двух программ ,мне не хочется играть вечно в игру под названием BIM. Я создаю конкретное решение раз и навсегда . Мозг человека слишком тонкий инструмент что бы его мучить вечными и не нужными обновлениями и при этом высасывать деньги, при этом когда пользователи просят иного. В этой программе более 1000 строк только того что я показал + к этому еще намного больше того что осталось за кадром и это мои еще не оглашенные идеи, и некоторые из них отсутствуют во всех известных граф. платформах. А некоторые задумки Dynamo вообще не может решить , например автообновление модели, или может ?как раз для вас 34 задача :)
      P.S. Dynamo в будущем станет очередным платным коммерческим компилятором , точнее уже почти стал , осталось дождаться когда он будет компилировать динамические библиотеки. Тоесть помимо иглы Revit еще появится новая зависимость

      Удалить
    3. В Вашей программе используются методы revit'a, которые постоянно меняются от версии к версии, а некоторые и вовсе убираются. Иногда требуется из-за этого менять расчетные алгоритмы, что в Dynamo легче сделать.

      Насколько я понимаю, Autodesk встроит Dynamo в Revit по умолчанию, как сделал с React.

      >"А некоторые задумки Dynamo вообще не может решить , например автообновление модели" - не понял о каком обновлении модели, но сообщу, что обновляю информацию в модели автоматически с помощью журналов и стандартных средств Windows. Сценарии, как я недавно узнал от программистов, тоже реально реализовать в Python.

      Удалить
  2. Александр ничего не легче, в моем понимании про обновление Revit можно забыть, чтобы что то поменялось нужно переписывать исходники revit что походу не собираются делать вообще,смысл обновлений сводится к 0. Если и встроят ситуация немного поменяется. А если уж вы и правы по поводу Dynamo и его перспективности , подключите к Dynamo внешние библиотеки !? и запишите ролик как успех прошел, я вот с прямым программированием на Python это делаю без проблем.

    ОтветитьУдалить

Поиск по этому блогу