Как следствие статьи начну дальнейшее расследование и пояснение о всех преимуществах Python исключительно для инженерных изысканий в Revit.
Про маленький экскурс в историю Python и графического программирования я уже давал не так давно. Но итог не такой уж и радостный , большая часть людей кто хочет что то делать вообще не поняла о чем речь и задает одни и те же вопросы и на форумах и мне лично.
Перспективность Python в том что он напрямую поддерживает сотни различных библиотек , например NumPy - библиотека математических классов для сложных инженерных расчетов на уровне производительности C++(хотя вру, на некоторых задачах разница в 70 раз и не в пользу Python), а Dynamo увы нам ничего не дает в замен. Только встроенную в ядро питона "math" - Mathematical functions.Вопросы производительности в Python решаются автоматически.
Python как и любой язык может использовать уже разработанные библиотеки, через функцию:
from math import *
тут мы просто импортируем библиотеку переменных математических функций. И таких библиотек мы может создавать как сами сотни миллионов ....миллиардов , так можем уже использовать готовые "велосипеды".
Для написания скриптов Python идеален , он само совершенство , но в Dynamo мы видим его базовый обрезок. Нам многое не дают сделать. Инженерные задачи требуют не просто неких базовых возможностей, а всего того что есть во всех языках. И что же нам не хватает для счастливой работы ? это компиляция исходного кода ! если мы пишем код на Python нам необходимо его завести на машине пользователя. И для этого нам его нужно скомпилировать в набор единиц и нулей (двоичный или восьмеричный код), например:
01010101010111010101
И что нам делать когда у нас есть огромная задача которая использует один и тот же блок кода ? начну раскрывать маленькие секреты , вот тут Python ровном счетом ничего нам не даст, так как изначально Python скриптовый динамический язык из разряда open source то мы никогда не дождемся компилятора. Когда у нас некая функция прошла коллектор через фильтр нам проще эту функцию объявить новым классом объектов и сделать библиотеку. А если не дождемся то нам либо внедрять интерпретатор (Python) в саму программу Revit , например RevitPythonShell либо использовать обрубок Dynamo который в свою очередь так же интерпретирует базовые возможности языка.
Есть конечно же решение компиляции Python в .exe:
Но это уже нечто иное , это решение задачи по использованию информации внутри модели Revit и использованию ее для сторонней программы на базе Python. И это совершенно не то что нам нужно , это намного более глубокая тема нежели решение инженерных задач в revit. Эта задача по разработке своей платформы с тесной связкой с revit, и как итог своя платформа . Но вопрос в шифровании если это не будет открытый продукт.......
Итак если у нас задача в открытии приложения любым пользователем то увы Python нам ничего не ответит и не даст никакого решения, мы не можем из Python получить dynamic link library (dll).Но увы я немного лукавлю, конечно все возможно , например тут один из методов :
Я им не пользуюсь , хотя уже только каких опытов не ставит с компиляцией.
А в основном использую такой :
Разница небольшая . Оба варианта это костыли.....хотя второй это темный лес , это использование API Python для включения блоков кода Python в С/С++ , на первый взгляд все плачевно , но это только на первый , дальше все пойдет как по маслу :). Для этого скачиваем сам Python c www.python.org и идем по пути C:\Users\BIMkiller\AppData\Local\Programs\Python\Python35-32\Doc\python351.chm и смотрим саму документацию как это все осуществляется. На русском языке я много искал информации по бросил какие либо попытки.
Но зачем нам весь этот геморрой ? не проще ли вообще отказаться от Python и искать решение на компилирующих языках , таких как С/C++ ? я лично пока не знаю ответа , лично меня пока что подкупает простота самого языка , ведь в этом и была его изначальная задумка , упростить алгоритм написания скриптов для того или иного программного обеспечения.
Некий ответ на вопрос выше дает так называемый Cython , это интеграция Python в C язык. Там тоже есть подводные камни , но лично мне он не подходит так как этот способ так же не дает возможности компиляции своей библиотеки объектов , а только готовое приложение но я не альтруист :
Но в общих чертах стоит ознакомится с этим кодом. Он изначально подкупал тех программистов которых хотели переманить из C++ в Python но без лишней крови.
Ну вот мы в принципе кое как решили вопрос с динамическими библиотеками в динамическом языке Python и его будущего!!!
Но что дальше ? может плюнуть на все это ? и просто отвернутся от Python и уж тем более от Dynamo ? я скажу не стоит , Dynamo сам по себе не плох , но его функционал и предназначение не решают моих вопросов и уж никак не повышают производительность труда инженера , за чей труд в силу сложившихся исторических факторов платят все меньше и меньше ...... Каким путем идти вам ,я не могу сказать , я всего лишь указал некие пути развития , которые могут указать решение некоторых проблем раз и навсегда . На мой взгляд аббревиатура BIM уже очень сильно подпортила крови не только мне но и очень многим инженерам. Все больше и больше я слышу нареканий от рабочих инженеров. Сама отрасль в данный момент переживает глубокий кризис , сам autodesk уже запутался чего же он хочет, от обновления к обновлению каких либо заметных результатов не происходит. Огромное количество пожеланий пользователей за бортом прогресса. Под эгидой BIM все больше и больше проектов из разряда абстракций , один и тот же исходный код в разных обертках , простое зарабатывание денег на воздухе. Хотя мне хочется напомнить что BIM это информационная модель здания, а не проекта , отсюда следует что инженер должен создавать информацию для конечного звена - службы эксплуатации, не говоря о всех промежуточных звеньях. Если говорить экономическим языком , стоимость проекта - 600р/м2 (и то хорошо если так ) , себестоимость м2 здания 31000 монолит , 15000 мет. каркасник(не путать с коммерческой ценой) А уж тех надзору глубоко по барабану проблемы BIM в том виде в котором его рисуют не только autodesk но и учебные центры. Сам по себе тот же BIM менеджер человек который запутывает других из за того что все на костылях, в итоге хромают все. Инженерные дисциплины и задачи из разряда точных наук, везде должно быть явное решение, не явность рождает несколько решений одно из которых ложное, так не должно быть..........Но скоро все изменится с Revit ........или без его :)
P.S. Используя парадигмы The Zen of Python можно сказать следующее "сложное лучше чем запутанное, явное лучше чем неявное".
Про маленький экскурс в историю Python и графического программирования я уже давал не так давно. Но итог не такой уж и радостный , большая часть людей кто хочет что то делать вообще не поняла о чем речь и задает одни и те же вопросы и на форумах и мне лично.
Перспективность Python в том что он напрямую поддерживает сотни различных библиотек , например NumPy - библиотека математических классов для сложных инженерных расчетов на уровне производительности C++(хотя вру, на некоторых задачах разница в 70 раз и не в пользу Python), а Dynamo увы нам ничего не дает в замен. Только встроенную в ядро питона "math" - Mathematical functions.Вопросы производительности в Python решаются автоматически.
Python как и любой язык может использовать уже разработанные библиотеки, через функцию:
from math import *
тут мы просто импортируем библиотеку переменных математических функций. И таких библиотек мы может создавать как сами сотни миллионов ....миллиардов , так можем уже использовать готовые "велосипеды".
Для написания скриптов Python идеален , он само совершенство , но в Dynamo мы видим его базовый обрезок. Нам многое не дают сделать. Инженерные задачи требуют не просто неких базовых возможностей, а всего того что есть во всех языках. И что же нам не хватает для счастливой работы ? это компиляция исходного кода ! если мы пишем код на Python нам необходимо его завести на машине пользователя. И для этого нам его нужно скомпилировать в набор единиц и нулей (двоичный или восьмеричный код), например:
01010101010111010101
И что нам делать когда у нас есть огромная задача которая использует один и тот же блок кода ? начну раскрывать маленькие секреты , вот тут Python ровном счетом ничего нам не даст, так как изначально Python скриптовый динамический язык из разряда open source то мы никогда не дождемся компилятора. Когда у нас некая функция прошла коллектор через фильтр нам проще эту функцию объявить новым классом объектов и сделать библиотеку. А если не дождемся то нам либо внедрять интерпретатор (Python) в саму программу Revit , например RevitPythonShell либо использовать обрубок Dynamo который в свою очередь так же интерпретирует базовые возможности языка.
Есть конечно же решение компиляции Python в .exe:
Но это уже нечто иное , это решение задачи по использованию информации внутри модели Revit и использованию ее для сторонней программы на базе Python. И это совершенно не то что нам нужно , это намного более глубокая тема нежели решение инженерных задач в revit. Эта задача по разработке своей платформы с тесной связкой с revit, и как итог своя платформа . Но вопрос в шифровании если это не будет открытый продукт.......
Итак если у нас задача в открытии приложения любым пользователем то увы Python нам ничего не ответит и не даст никакого решения, мы не можем из Python получить dynamic link library (dll).Но увы я немного лукавлю, конечно все возможно , например тут один из методов :
Я им не пользуюсь , хотя уже только каких опытов не ставит с компиляцией.
А в основном использую такой :
Разница небольшая . Оба варианта это костыли.....хотя второй это темный лес , это использование API Python для включения блоков кода Python в С/С++ , на первый взгляд все плачевно , но это только на первый , дальше все пойдет как по маслу :). Для этого скачиваем сам Python c www.python.org и идем по пути C:\Users\BIMkiller\AppData\Local\Programs\Python\Python35-32\Doc\python351.chm и смотрим саму документацию как это все осуществляется. На русском языке я много искал информации по бросил какие либо попытки.
Но зачем нам весь этот геморрой ? не проще ли вообще отказаться от Python и искать решение на компилирующих языках , таких как С/C++ ? я лично пока не знаю ответа , лично меня пока что подкупает простота самого языка , ведь в этом и была его изначальная задумка , упростить алгоритм написания скриптов для того или иного программного обеспечения.
Некий ответ на вопрос выше дает так называемый Cython , это интеграция Python в C язык. Там тоже есть подводные камни , но лично мне он не подходит так как этот способ так же не дает возможности компиляции своей библиотеки объектов , а только готовое приложение но я не альтруист :
Но в общих чертах стоит ознакомится с этим кодом. Он изначально подкупал тех программистов которых хотели переманить из C++ в Python но без лишней крови.
Ну вот мы в принципе кое как решили вопрос с динамическими библиотеками в динамическом языке Python и его будущего!!!
Но что дальше ? может плюнуть на все это ? и просто отвернутся от Python и уж тем более от Dynamo ? я скажу не стоит , Dynamo сам по себе не плох , но его функционал и предназначение не решают моих вопросов и уж никак не повышают производительность труда инженера , за чей труд в силу сложившихся исторических факторов платят все меньше и меньше ...... Каким путем идти вам ,я не могу сказать , я всего лишь указал некие пути развития , которые могут указать решение некоторых проблем раз и навсегда . На мой взгляд аббревиатура BIM уже очень сильно подпортила крови не только мне но и очень многим инженерам. Все больше и больше я слышу нареканий от рабочих инженеров. Сама отрасль в данный момент переживает глубокий кризис , сам autodesk уже запутался чего же он хочет, от обновления к обновлению каких либо заметных результатов не происходит. Огромное количество пожеланий пользователей за бортом прогресса. Под эгидой BIM все больше и больше проектов из разряда абстракций , один и тот же исходный код в разных обертках , простое зарабатывание денег на воздухе. Хотя мне хочется напомнить что BIM это информационная модель здания, а не проекта , отсюда следует что инженер должен создавать информацию для конечного звена - службы эксплуатации, не говоря о всех промежуточных звеньях. Если говорить экономическим языком , стоимость проекта - 600р/м2 (и то хорошо если так ) , себестоимость м2 здания 31000 монолит , 15000 мет. каркасник(не путать с коммерческой ценой) А уж тех надзору глубоко по барабану проблемы BIM в том виде в котором его рисуют не только autodesk но и учебные центры. Сам по себе тот же BIM менеджер человек который запутывает других из за того что все на костылях, в итоге хромают все. Инженерные дисциплины и задачи из разряда точных наук, везде должно быть явное решение, не явность рождает несколько решений одно из которых ложное, так не должно быть..........Но скоро все изменится с Revit ........или без его :)
P.S. Используя парадигмы The Zen of Python можно сказать следующее "сложное лучше чем запутанное, явное лучше чем неявное".
Рискну написать кучу критики, ибо с моей точки зрения статья крайне некомпетентная, и автор несколько запутался в суждениях, хотя и постоянно говорит, что никто его не понимает.
ОтветитьУдалить"Но итог не такой уж и радостный , большая часть людей кто хочет что то делать вообще не поняла о чем речь"
Может и не поняла аудитория, потому что автор сам не понимает что пишет. Подробнее расписываю ниже.
1. "Перспективность Python в том что он напрямую поддерживает сотни различных библиотек , например NumPy"
Python может и поддерживает, но с Revit мы используем диалект IronPython, а не классический мультиплатформенный Python. Впрочем, упомянутая библиотека NumPy есть и под него (соответственно переделанная под .NET).
Просто API (программные интерфейсы), которые почему-то автор постоянно называет исходниками Ревита, построены на обертках .NET и соответственно их можно использовать с помощью любого языка для этой платформы, что и делают создатели плагинов (на любом .NET языке), создатели скриптов (C#, VB.NET), сам автор, используя RevitPythonShell, реализующий этот самый IronPython и, конечно, те,к то работает с Dynamo (ноды используют c#, а специальный нод Python, как не трудно догадаться - тот же самый IronPython)
2. "но в Dynamo мы видим его базовый обрезок. Нам многое не дают сделать"
Чушь. См. пункт 1. Все там дают сделать,а по другому и быть не может. В Dynamo такой-же диалект IronPython, как и в Python Shell (который является по сути оберткой над библиотеками .NET) и имеет все те-же возможности. Можно юзать любые .NET сборки, как системные, так и сторонние, что с успехом и делают.
3. "И что же нам не хватает для счастливой работы ? это компиляция исходного кода !...И что нам делать когда у нас есть огромная задача которая использует один и тот же блок кода ? начну раскрывать маленькие секреты , вот тут Python ровном счетом ничего нам не даст"
Раскрою секрет автору и всем остальным. Берем любую среду для работы с .NET и на любом языке (хоть Python, хоть c#) делаем dll сборку и используем её хоть в PythonShell, хоть в Dynamo, хоть в AddIn для Ревита.
4. "Итак если у нас задача в открытии приложения любым пользователем то увы Python нам ничего не ответит и не даст никакого решения, мы не можем из Python получить dynamic link library (dll)"
без комментариев. см. пункт 3.
5. "Некий ответ на вопрос выше дает так называемый Cython , это интеграция Python в C язык."
Непонятно, зачем автор полез в расширения классического Питона для c++ и в диалект Питона для Win32 систем - Cython, это вообще из другой оперы. И из скриптов на них он никак не сможет взаимодействовать с Revit ни внутри ни снаружи. К чему эта инфа?
6. "Но что дальше ? может плюнуть на все это ? и просто отвернутся от Python и уж тем более от Dynamo ? я скажу не стоит , Dynamo сам по себе не плох , но его функционал и предназначение не решают моих вопросов и уж никак не повышают производительность труда инженера"
Ноу комментс, выше итак все расписано уже.
7. "На мой взгляд аббревиатура BIM уже очень сильно подпортила крови не только мне но и очень многим инженерам."
Думаю, для многих, так и осталось загадкой, каким образом. Учитывая то, что автор также по полной использует BIM (информацию и работу с ней из высокоуровневых объектов базы данных Revit), хотя и открещивается от него. Видимо это такое проявление нигилизма.
8. "инженер должен создавать информацию для конечного звена - службы эксплуатации, не говоря о всех промежуточных звеньях......А уж тех надзору глубоко по барабану проблемы BIM в том виде в котором его рисуют не только autodesk но и учебные центры."
Autodek и все интеграторы уж года три, как не говорят о том, что BIM для проектировщиков. BIM идет от инвесторов, заказчиков через все стадии жизненного цикла объекта и всех участников. Реальных примеров у нас в стране единицы пока, но мы на 20 лет отстаем от других стран в этом деле.
Думаю, надо мне тоже по этому комментарию написать пост у себя, чтоб люди понимали, что есть что и не дезинформировались.
Поддерживаю комментарий по всем пунктам.
УдалитьCython не нужен инженерам. IronPython не поддерживает многие библиотеки настоящего CPython, страдает от невыразительности .NET и вообще, по моему мнению, его ждет судьба VBA. На днях, кстати, сам Microsoft выпустил Pyjion -- новый JIT для "настоящего" Питона. Проблема выбора языка сейчас вообще тривиальна, с популяризацией всевозможных инструментов FFI/RPC, протоколов обмена сообщениями, распределенных приложений и так далее. Скорость работы Питона не должна вас волновать.
M в BIM -- это менеджмент, забудьте про модель. В BIM делают ГИС-подобную базу данных для управления строительством, а не модель.
1. "Просто API (программные интерфейсы), которые почему-то автор постоянно называет исходниками Ревита"
ОтветитьУдалитьAPI дает доступ к объектам исходного кода в режиме read only или write, если я назвал когда либо API - исходным кодом то ошибся.
2."построены на обертках .NET и соответственно их можно использовать с помощью любого языка для этой платформы, что и делают создатели плагинов (на любом .NET языке), создатели скриптов (C#, VB.NET), сам автор, используя RevitPythonShell, реализующий этот самый IronPython и, конечно, те,к то работает с Dynamo (ноды используют c#, а специальный нод Python, как не трудно догадаться - тот же самый IronPython)"
И ? я разве сказал что RevitPythonShell эта панацея ? у меня уже и Dynamo и RevitPythonShell на одной ступеньке давно и в дальнейшей работе я уже не использую ни того ни другого по причинам описанных выше.
3." Раскрою секрет автору и всем остальным. Берем любую среду для работы с .NET и на любом языке (хоть Python, хоть c#) делаем dll сборку и используем её хоть в PythonShell, хоть в Dynamo, хоть в AddIn для Ревита."
Ну это же ложь ! скиньте хоть одну ссылку на компилятор того же 3.5, я описал способы получения dll используя Python. Это скриптовый язык и он на прямую не компилируется. Можно создать свою библиотеку на компилируемом языке и импортировать ее в Python на при помощи Python этого не сделать без API языка на базе того же Visual Studio.
4. "без комментариев. см. пункт 3."
аналогично
5. "Непонятно, зачем автор полез в расширения классического Питона для c++ и в диалект Питона для Win32 систем - Cython, это вообще из другой оперы. И из скриптов на них он никак не сможет взаимодействовать с Revit ни внутри ни снаружи. К чему эта инфа?"
Но вот видите вы не поняли , а пишите не разобравшись полную ахинею, я даже ни слова не сказал про использование его в скриптах , внимательно перечитайте и желательно посмотрите презентацию возможностей.
6. А я еще раз повторю , Dynamo не более чем игрушка
7. Впервые слышу что API или GUI это BIM, это чья то больная фантазия, не моя точно, я 6 лет ждал когда же BIM повернется лицом к рабочим инженерам , а он все больше другим местом поворачивается . Мне дизайнерские вещи не нужны , в том числе и рабочим архитекторам, мне лично надоело слушать и у себя на работе и на форумах вечные упреки в сторону Revit, тут явно пора начинать наводить порядок в этом бардаке. Философия и ваша и BIM уж очень далеко уходит от реальности.
8. Вам виднее , я всего лишь "винтик" и скромный инженер в этой машине. Я просто презираю когда людей вводят в заблуждение и говорят как все чудесно, и если вам что то не хватает и вам лень изучать программирование изучите Dynamo, но немного изучив его начинает возникать понимание что это не есть явное решение. В сложных задачах нету простого решения.
P.S. стоит взглянуть на верх страницы и приходит понимание что не все так радужно в Revit и с Dynamo
1. "И ? я разве сказал что RevitPythonShell эта панацея ? у меня уже и Dynamo и RevitPythonShell на одной ступеньке давно и в дальнейшей работе я уже не использую ни того ни другого по причинам описанных выше."
ОтветитьУдалитьВы сказали, что Питон может использовать дополнительные библиотеки, а Dynamo этого делать не умеет, а я же сказал что умеет и там такой-же IronPython как и в PythonShell. Комментарий именно об этом. Причины, по которым вы, как говорите, не используйте больше питон (не компилируется, я правильно понял?), надуманны, если только у вас нет задачи писать исключительно мультиплатформенный автономный инженерный софт.
2. "Ну это же ложь ! скиньте хоть одну ссылку на компилятор того же 3.5, я описал способы получения dll используя Python. Это скриптовый язык и он на прямую не компилируется. Можно создать свою библиотеку на компилируемом языке и импортировать ее в Python на при помощи Python этого не сделать без API языка на базе того же Visual Studio."
Причем тут 3.5? Это какой-то фетиш, работая в Windows c Revit (или чем угодно), использовать классический Python и расстраиваться, что из него сложно сделать dll? Вы понимаете разницу между IronPython (с работой в котором у вас связаны предыдущие статьи) и Python (про который вы пишете в этой)?
И, да - IronPython Отлично компилирует код в .NET сборки (dll И exe), как и любой другой .NET подобный язык. https://pypi.python.org/pypi/ironpycompiler/0.9.0
продолжение....
ОтветитьУдалить3."Но вот видите вы не поняли , а пишите не разобравшись полную ахинею, я даже ни слова не сказал про использование его в скриптах , внимательно перечитайте и желательно посмотрите презентацию возможностей."
Ну как не сказали, очень даже сказали. У вас даже статья так и называется "Revit и Python в перспективе" и Питон вы поминаете в контексте использования PythonShell, а все ваши дальнейшие выкладки относятся к классическому питону, который тут вообще не причем. В чем я написал ахинею? можно подробно? Все что я написал, соответствует действительности. Если вы не планируйте, использовать Python для связи с Revit - это ничего не меняет. Хотите писать на питоне автономные приложения, так как нравится простота языка, и при этом создавать dll и использовать чужие dll - это возможно в Windows и достаточно легко и PythonShell и Dynamo сами этим механизмом пользуются. И для этого не нужен стандартный Python - он действительно не предназначен для этого (опять-же повторюсь, что если это фетиш какой-то, то да, конечно тут сказать нечего).
4."Впервые слышу что API или GUI это BIM"
От кого? Я такого не говорил, перечитайте.
5."BIM повернется лицом к рабочим инженерам , а он все больше другим местом поворачивается"
Можно поподробнее, каких изменений вы именно ожидали?
6."Мне дизайнерские вещи не нужны , в том числе и рабочим архитекторам, мне лично надоело слушать и у себя на работе и на форумах вечные упреки в сторону Revit"
Да, костылей много, но при чем тут BIM? Это он виноват? Какое отношение он имеет к недоработкам ревита?
7."тут явно пора начинать наводить порядок в этом бардаке"
Писать собственные решения, или что? Собственные решения это хорошо, кто-же спорит.
8."Философия и ваша и BIM уж очень далеко уходит от реальности"
можно подробнее, в чем моя философия и в чем философия BIM?
9."Я просто презираю когда людей вводят в заблуждение и говорят как все чудесно, и если вам что то не хватает и вам лень изучать программирование изучите Dynamo, но немного изучив его начинает возникать понимание что это не есть явное решение. В сложных задачах нету простого решения."
Это либо только вы так сами поняли либо еще что-то. Судя по вашим статьям, можно тоже подумать, что в самостоятельном программировании все чудесно, но это не так, да еще и вводите в заблуждение других людей, говоря совсем уж ошибочные вещи.
Никто не говорит, что в Динамо можно все делать без программирования. Для формообразования там неплохая геометрическая библиотека и можно обойтись без фрагментов на Python, а для автоматизации в Ревите, конечно нужно вставлять эти самые фрагменты кода. Но создать инструмент даже с включениями Питона в Динамо и работать с ним в любом случае 10 раз быстрее и удобнее по целому ряду причин, а возможности как минимум одинаковые, а как максимум у динамо они больше (опять-же из-за хорошей геометрической библиотеки хотя-бы, которую можно использовать в том-же питоне и которая без Динамо не доступна в PythonShell)
Михаил, почему инженеры (в большинстве) так активно используют эксель и маткад? Почему они свои задачи сразу в программах не реализуют? Потому что им нужны решения, а не красивые обёртки(за редким исключением).
ОтветитьУдалитьDynamo - это эксель для BIM, это решение большинства задач. Кто-то возможно и от экселя ждал, что тот сразу по умолчанию будет решать все их задачи.
У нас Динамо очень хорошо ускоряет процесс проектирования, на c# я бы раз в 10 меньше за это время сделал.
По цифрам в стоимости зданий не согласен. Не знаю, хотите ли это обсуждать: бетон 26 металл 30 в жилье.
1. нет , не совсем автономный и "без посредников" ,но без интерпретатора языка приложения.А мультиплатформенность слишком громко наверное......
ОтветитьУдалитьrevitpythonshell я только один раз упомянул в тексте и если приглядеться и не придумывать выводы о чем я говорил то видно что все ссылки на работу Python на базе Visual Studio в связке с компиляторами. И я хочу использовать Python в дальнейшем только действительно там где он нужен, и изначально был создан для этого.
2. :) , давайте проще все сделаем , скомпилируйте по ссылке :
print("Hello World")
а не :
print "Hello World"
ну а если еще глубже капнуть он не совсем компилирует все что хочешь, поэтому создайте dll используя синтаксис Python при это в коде ссылайтесь на объекты revit API.
Вы этого не сможете никак кроме описанного в статье метода. А вы мне говорите про то что можно создать на .NET языке библиотеку и запихнуть ее в код Python , ради бога , я отличного от этого ничего не сказал. Только что бы опять вам сделать dll вам придется запаять ваш скрипт в компилируемый язык и тут Python не помощник ! теперь понятно ? причем в самом Python скрипте вам придется ссылаться только на NET, за его приделы не получится.
Есть еще несколько источников подобного рода компиляторов , все они не компилируют то что нам нужно при работе с Revit и с серьезными задачами.
3. см. п. 2. Один раз упомянул не значит что про это все время говорю, все ссылки вроде как не про эту оболочку ...
4. и 8. Прочитал , вы пишите :
по полной использует BIM (информацию и работу с ней из высокоуровневых объектов базы данных Revit)
а мы имеем доступ только через UI или API, получается для вас это BIM !? По мне у Autodesk нету вообще никакого BIM, есть некая зачаточная связь разных разделов. И вот тут весь BIM и рассеивается. Связь только на уровне геометрических примитивов Revit. Нету связи самой информации между выполнением различных задач.От задачи к задаче мы копируем одно и то же по несколько раз,создаем базу данных ради другой базы данных, ну это же мазохизм !!! Вместо того что бы наращивать функционал по взаимосвязи MEP, конструкторов ,архитекторов....улучшать взаимосвязи классов в рамках одного раздела что мы видим ? появился Autodesk 360, Vault, Naviswork, Plant Design, Building Design,Advance cocrete, BIM 360, Infraworks 360, Advance steel и много чего еще, можно просто обезуметь сколько проектов выкуплено и зарыто в землю, а в это время армирование из Robot не попадает в Revit , то что составляет 40% трудоемкости любой стройки и любого проекта полностью ручной труд до сих пор, про какой BIM можно говорить ? и эта задача только одна из списка который висит в начале блога , и таких вещей сотни и они за много лет не решаются никак вообще. Поэтому в моем понимании BIM и эта же аббревиатура в рамках политики autodesk, и вашей философии, явно не совпадают.
P.S. и кроме как фетишем тут задачи не решаются
5. Читайте список в начале блога ,чего ждут люди , и это далеко не предел, там нету инженерных систем и там тоже еще тот темный лес.
6. я уже высказался по поводу BIM, мне хочется что бы BIM и revit были на одной стороне баррикад, а пока они оба шагают в разных направлениях.
7. Я только вижу беспорядок , я небольшой человек что бы решать такие вопросы, я их решил для себя по своему.
Этот комментарий был удален автором.
УдалитьЕсли под связью информации между разделами подразумевается трансляция одними элементами параметров других, то такая связь есть, например между помещениями и пространствами с именами и номерами. Есть и другие примеры.
УдалитьПро продукты или я мысли не понял или мимо. Адвансы как и робот будут закопаны. Будет доработан ревит и реакт. Софистик интересные приложения демонстрирует под ревит для армирования.
1."revitpythonshell я только один раз упомянул в тексте и если приглядеться и не придумывать выводы о чем я говорил то видно что все ссылки на работу Python на базе Visual Studio в связке с компиляторами."
УдалитьЭто видно мне и другим, кто разбирается, а всем остальным нет. В предыдущих статьях вы работали с IronPython а в этой переключились на классический и никак явно этот переход не обозначили, и любой нормальный человек будет думать, что речь об одном и том-же, чем будет введен в заблуждение.
2."давайте проще все сделаем , скомпилируйте по ссылке print("Hello World") а не print "Hello World" "
Что вы хотели этим сказать? Я вообще не понял, к чему это было, но ради развлечения вот вам и со скобками и без:
http://joxi.ru/ZrJNWpu1bW4lrj
3."если еще глубже капнуть он не совсем компилирует все что хочешь, поэтому создайте dll используя синтаксис Python при это в коде ссылайтесь на объекты revit API. Вы этого не сможете никак кроме описанного в статье метода."
Вы просто, видимо не разбираетесь в этом вопросе, хотя почему-то спорите о том, чего не знаете, а это между тем все основы. Да, я могу создать код в синтаксисе питона и собрать в dll и использовать в ней обращения к Revit API и загрузить эту Dll в виде плагина к Revit или как собственный набор нодов для Dynamo и пользоваться ей. И это будет такой-же способ, которым я создал екзешник с hello word.
4."Только что бы опять вам сделать dll вам придется запаять ваш скрипт в компилируемый язык и тут Python не помощник ! теперь понятно ?"
Мне-то как раз все понятно)) а вот вам не понятно совсем то, о чем я говорю и то, что классический Питон тут вообще не причем.
5."в самом Python скрипте вам придется ссылаться только на NET, за его приделы не получится."
В классическом Python вам придется ссылаться только на объекты самого питона и его пакетов + через них на функции Win32 и все это богатство таскать с собой везде включая сам интерпретатор. В IronPython я могу ссылаться на объекты питона, его системных библиотек, библиотек.NET + через них на функции Win32. А больше ничего и не надо. Это наоборот - выход за пределы классического питона, расширение границ.
6."получается для вас это BIM"
Для меня BIM - это возможность работать с высокоуровневыми объектами, как конструктивными так и нет, которые имеют какую-то информацию, которую можно брать, анализировать и передавать другим объектам и которая на них может влиять. Все остальное - вторично. Если у программы нету штатных средств для того, что мне нужно - это плохо, но если она оперирует строительными объектами с информацией, то я могу ее вытянуть и использовать или передать в другую программу с помощью API. В автокаде я так сделать не смогу хоть с API хоть без, просто потому-что там нету нужной информации в базе, а есть только палочки.
7."Вместо того что бы наращивать функционал по взаимосвязи MEP, конструкторов ,архитекторов....улучшать взаимосвязи классов в рамках одного раздела что мы видим ?"
Проблема отставания функционала и его качества характерна для всех САПР и BIM продуктов всех производителей. Я для любой программы смогу найти десятки косяков и недоделок. Идеальная среда для проектирования - это детская утопия по многим причинам. Но программы BIM объектной организацией хотя-бы позволяют достаточно легко расширить себя и написать инструменты для решения нужных задач.
8."в это время армирование из Robot не попадает в Revit"
УдалитьДа, плохо но вы можете написать свой инструмент переноса достаточно легко именно потому-что программы используют BIM подход. и задача из глобальной схлопывается в узкую задачу по переносу и синхронизации конкретной определенной информации из одних объектов в другие.
9."Читайте список в начале блога ,чего ждут люди"
То, что ждут люди в начале блога и то, что вы называете BIM в вашем понимании - называется "Желание получить в программе все, что хочется из коробки и чтоб все работало как надо". Желание очень хорошее и правильное,хотя и несколько утопичное, но самое главное, что к идеологии BIM оно никакого отношения не имеет вообще. Такой список можно составить для абсолютно любой программы в абсолютно любой сфере.
1. По моему это вы пытаетесь запутать следы
Удалить2. мы говорили про dll а не приложение .exe. То что вы показали я уже осветил в статье. И для этого нам не нужно проходить по ссылке которую вы указали. Python уже давно разработал PythonTools для Visual Studio как для Python 2.7 так и 3.5.
3. Ну да , я может чего то не знаю , возможно , только вот вы пишите вообще не по теме, точнее не по теме а все уводите в нужную сторону. Начнем сначала:
дайте ссылку где вы используя синтаксис Python и напрямую компилируете DLL в двоичный или восьмеричный код (машинный). И не нужно мне рассказывать то на что я уже давал ссылку :
https://www.youtube.com/watch?v=IRE67QFYu4s
неужели неясна разница ?
4. Я лишь дал пояснения как выйти из положения когда нужно Python скрипт превратить в нечто большее. Прямого компилятора синтаксиса Python не существует ! если есть ссылку , то что вы дали это не то, можете еще скинуть py2exe и это тоже не то.В любой документации есть различные способы получения библиотеки. Я указал несколько способов через костыли. А ответ на ваше МОГУ , я тоже МОГУ.
И как сказал один из знакомых программистов:
"Когда пишешь блоки кода на Python и вставляешь их в компилируемый С то с течением времени начинаешь просто писать на С"
5. Ну тогда это отдельная тема для разговора
6. Просто с таким успехом и Autocad это BIM, мне тут показали возможности арчика , ревит уже отстал от конкурентов....
7.8.9. Ваши коллеги из Autodesk как то приходили в нашу организацию и рассказывали 60 (на тот момент было меньше) проектировщикам что такое BIM, так вот основная связь в самом BIM это Revit -Robot позиционировалась как двухсторонняя и это был основной критерий , это не "тонкое" место , я работаю в одной из немногих компаний полного цикла (покупка земли-производство ЖБИ, мелкоштучных элементов , растворные заводы , МКЗ и тд-строительство - -продажа площадей - эксплуатация ). У нас в организации основная задача во время эскизного проектирования ложится на человека который просчитывает варианты объемно планировочных решений. Это экономические показатели себестоимости не только материалов но и трудоемкости стройки. А о чем можно говорить когда этой двухсторонней связи нету ? Менеджеры Autodesk просто замалчивают этот вопрос, показывают стандартную картинку на которой стоят две стрелочки и снизу надпись BIM. Мне уже очередной смешно слушать это. Никто не понимает вопросы , а если вопрос в лоб, то ответ "это будет в следующей версии".Мне это надоело. И это только ОДИН ключевой момент. И вы на его лично ответить тоже не сможете , вы архитектор ,который ни в зуб ногой о чем я говорю, это должны решать Autodesk на уровне исходного кода обоих программ, и что я вижу ? Robot закрывают и совершают ребрендинг вместо реальных задач...
P.S. На уровне объектов API у нас есть все что бы решать эти вопросы но это должны делать сами Autodesk. Я не хочу(никто не хочет) платить 7600 евро за кнопку фрагментации 3д вида в 2016 версии. Поэтому я за решения которые вообще не привязаны к Revit , но могут легко использовать , перерабатывать и возвращать информацию в любой софт. Будь то Tekla, Revit, Allplan и тд. Dynamo вешает зависимость и уничтожает какое либо зерно понимания сути вещей в программировании. Закроется проект Dynamo или Revit, мы получим стадо слепых кроликов.
1. Никоим образом)) Читателям, особенно, кто, как вы говорите, не понимают о чем вы пишете, в моих комментариях как раз все будет понятно)))
Удалить2. между dll и exe нет никакой разницы кроме расширения и наличия точки входа. И генерируются они одинаково.
3. Ок, значит дело действительно только в спортивном интересе получить скомпилированный код из классического Питона. Ну раз очень хочется, то конечно удачи вам)) Я просто все пытался выяснить у вас зачем такой тупиковый и не подходящий для решения практических задач путь, когда есть нормальные пути, максимально близкие к тому, что вы описываете, но дело личное, конечно.
4. AutoCAD это не бим, а вот AutoCAd Architecture - да, BIM. То есть дело не в платформе, а в конечной реализации.
6,7,8,9. Ну я не могу отвечать за автодеск и за то, что говорят их специалисты, тем более, что я не сотрудник автодеска. Но мы же не в детском саду..есть своя голова на плечах. Тупо верить всему что говорит маркетинг. Я изучаю продукты когда хочу их использовать или наладить совместную работу с другими специалистами. Выясняю что хорошо, что плоха, какие инструменты пригодны а какие нет и работаю с тем что есть, дорабатывая то, что можно и создавая свои инструменты под себя. А что еще делать? Только писать свой BIM софт или свой узкий инженерный софт(которого итак в изобилии у газовиков, нефтянки итд)
Ныть то каждый может. Понятно, что никому не нравится корявый софт.
"Вы архитектор ,который ни в зуб ногой о чем я говорю"
Мне вот, например тоже не нравится когда люди с пеной у рта думают, что они телепаты и сразу дистанционно оценивают, что человек понимает, а что нет.
10. "Закроется проект Dynamo"
Ну это врятли, учитывая что он с открытым исходным кодом и лежит на гитхабе. Касательно потенциального закрытия любых программ и зависимостей от них - это уже схоластика.
Вот Вы Михаил странный человек, с одной стороны пишите, что автодеску надо переписывать код программы ревит, что мол без этого невозможно работать, но в то же время ругаетесь на них за то, что они переписывают полностью (более негибкий и косячный) робот. Вы говорите, что в ревите нужны готовые решения из коробки и ругаетесь, что адвансы купили и закапывают (Вам ведь известно, что решения из них перекладываются в ревит?), говорите что Вам нужно все решения по армированию, сразу, серьезные, не какие-то костыли и без косяков и говорите, что они что-то должны каждый год выдавать, говорите, что в программе все должно быть из коробки и если чего-то и нет, то нужна возможность это все дописать, но в то же время восторгаетесь программами Текла и Архикад, которые на много, на ОЧЕНЬ МНОГО менее гибкие чем ревит (посмотреть только на структуру файлов и библиотек), говорите, что мол автодеску каждый год говорите что исправить нужно, а самому автодеску пожелания не пишете (или пишете?) http://forums.autodesk.com/t5/revit-pozhelaniya-russkiy/idb-p/2054/tab/most-kudoed
УдалитьНасколько я понимаю политика автодеска следующая: "реализация региональных расчетов и оформления не в приоритете, а в приоритете: дать возможность пользователям донастроить продукт под свои региональные нормы и обеспечить производительность продукта". Насколько я понимаю ревит сейчас уперся в перепутье между высокоуровностью связей и зависимостей между элементами и производительностью. Удобно конечно говорить о программировании, базах данных и приводить в пример одну крайность, а с другой стороны говорить про деревянные архикад и теклу, которые без динамики, связей и сложной геометрии обеспечивают бОльшую производительность. Т.е. Вы хаете ревит и приводите в пример лучшие стороны других программ, которые в комплексе в подметки ему не годятся, аналогично и с Dynamo, для которого Вы придумали какие-то сложные задачи, которые не можете решить и на этом примере заявляете, что чистое программирование лучше такого подхода, но в комплексе в 95% случаев динамо обеспечит нам бОльшую эффективность.
Александр покажите для вдохновения какие это задачи !
ОтветитьУдалитьНа dynamobim.ru выкладываю некоторые. В теме нединамические виды и спецификации выложил очень полезный скрипт. Считаем ведомость отделки помещений, заполняем параметры оборудования, расставляет оборудование, подготавливаем модель для автоматической проверки и расчетов. Буду на работе что-нибудь покажу.
УдалитьИ прямая ссылка на видео: http://www.youtube.com/watch?v=cMQ8zwmosNU
УдалитьКак Вы понимаете, сделать из этого любую форму и внести любую информацию из ревита не составляет проблем и изменение шаблона занимает несколько минут. С помощью дино выношу эти таблицы в кнопку на ленте и обновляю перед выгрузкой/печатью.
Кстати и экспорт в ексель настроил через кнопку, чтобы не держать спецификации в требуемом для выгрузки в ексель виде (для расчетов требуется другой вид нежели на листах). Да и избегаю этих вечных проблем с точками/запятыми т.к. все в текстовом формате выгружается.
Михаил, здравствуйте. Подскажите, пожалуйста, с чего лучше начать изучение Python (книги, сайты, примеры использования). Спасибо.
ОтветитьУдалитьВ одной из тем Михаил писал "https://www.youtube.com/channel/UC9rWgAzfjfK-iq-cOp4ZGGw
Удалитьвот для начала :) тут очень все подробно , я с этого начинал"
dynamobim.ru
Удалитьhttps://automatetheboringstuff.com/
УдалитьЗдравствуйте коллеги. Интересная тема. Я около года активно использую Динамо практически во всех сферах своей проектной деятельности(по некоторым процессам автоматизация с помощью Динамо дает многократный выигрыш во времени), к слову, я даже перестал пользоваться калькулятором, у меня всегда открыто Динамо в автономном режиме. Даю уроки Динамо на ютюб, уже 16 уроков и более четверти тысячи подписчиков, третья часть которых иностранцы, невзирая на русский язык. И сегодня ровно пять месяцев нашему сайту dynamobim.ru, который посещают люди со всего земного шара, вот карта посетителей http://prntscr.com/9mekh1 Михаил, спасибо Вам большое, за то что открыли всем нам глаза, теперь мы будем знать, что Динамо - ЗЛО.
ОтветитьУдалитьМне так понравились комментарии, спасибо! И хорошее настроение не покинет больше нас :)
ОтветитьУдалитьАлександр, вот Вы пишите, что "Dynamo - это Эксель для BIM". Простите, но в Вас говорит детская увлеченность. Если бы это было так, то все бы перешли на эту технологию. Но масса профессиональных проектировщиков далека от программирования. Кроме того, Эксель есть у каждого на компьютере, а Dynamo нет. Мы решили ту же ведомость отделки помещений через Ревит и Эксель. Экономия времени колоссальная. А главное, что любой проектировщик может этим воспользоваться. 5000 помещений Не стоит размещать и обрабатывать в Листах Ревит. Абсурд. Надо просто хорошо знать базовые возможности ПО. Dynamo хорош только совместно с Python, а это уже уровень программирования раз. И два, что будет дальше с изменением версионности и т. Д. И т. П.? Вот вопросы, которые надо держать в голове всем увлечённым людям. Полной автоматизации проектирования не требуется. Требуется автоматизация Рутинных операций, повторяющихся огромное количество раз.
ОтветитьУдалитьЭтот комментарий был удален автором.
Удалить"Добра желатель", а шо так? Почему полной автоматизации проектирования не требуется? Боитесь конкуренции со стороны компьютеров? Вспомнился анекдот брежневских времен: Коммунизм. Стоит огромная очередь за мясом. Пару часов мясо давали и перестали. Толпа негодует. Выходит главный мясник и изрекает: "Больше сегодня потребности в мясе не будет". Так и тут, некий "Добра желатель"(неизвестно кому) изрёк, что полной автоматизации проектирования не требуется. Простите, но я с Вами не согласен.
УдалитьА ты прикинь, как бы ты сэкономил, пользуясь скриптом динамо) тоже вроде ничего не надо "размещать в листах ревит" (кстати не понял, что это вообще значит:) )
Удалитьк тому же, dynamo весит от силы 100мб, скачать в нынешний век и установить сможет любой проектировщик, а скрипт для расчета отделки в открытом доступе
УдалитьА 25000 помещений, а 150 000 помещений, тоже ексель?
ОтветитьУдалитьЕксель - прошлый век. Отказываться от передового софта - означает нечаянно оказаться за бортом передового проектирования.