✒️ Хроники Георга
Open in Telegram
Блог о своих курсах, прикладном программировании, теме BIM/GIS. Обо мне: Гребенюк Егор; работаю в СПбПУ, ООО Цифровые технологии 1520 (РЖД), Нанософт-разработке и также сотрудничаю с Vysotskiy consulting и TBS-Software.
Show more355
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
С удивлением узнал, что в GitHub Wiki оказывается можно вставлять картинки через Ctrl+V с автозагрузкой на какой-то выделенный хостинг на учетке, и оформил там справку к пакету нодов для Renga. Оформлять на gitbook уже не рискую так как боюсь его потерять .... а вывести оттуда ничего нельзя без крупной $-подписки.
Надо отметить, что дополнение этого пакета вышло масштабным по сравнению с записанным контентом в курсе (казалось бы, неделя-полторы назад а многое поменялось 😭), отчего прихожу к мысли что курсы это адски затратное по времени занятие и в идеале весь контент постоянно обновлять, что не реально при их формате ...
P.S. Да и я слишком замахнулся на идеалистичный курс [выйдет в начале след. недели видимо или в конце этой] - видео, текст с картинками и схемами, wiki, конкретные приложения реализованные (оформленные в виде репозитория), шаблоны для разработки плагинов и доработанные иные плагинчики за время подготовки курса (хотя ладно, он всего один активно дорабатываемый renga_3d_export .. на с++ по экспорту геометрии в иные форматы) + выявленные штуки 3 бага в API 😆 в ходе его обкатывания.
P.P.S. Будет забавно-обидно если Renga скоро выпустит lua-редактор с большими функциональными возможностями и этим творением мало кто воспользуется ....
Почитать перед сном про пакет.
По истечению трех месяцев увлекательного изучения C++ наконец-то стало что-то получаться 😂, на картинке модель из Renga экспортированная в NWC-формат через много C++ функций 😂. В принципе раз материалы и геометрия передаются нормально можно сказать что и на fbx реализация почти готова (так как писался класс для получения информации об объектах в нейтральном виде), а там ждут своего часа skp, 3dm, 3ds, gltf ....
Вечерние попытки придумать что-то оригинальное -- показать красивое применение dynamo для Ренги -- например импорт OSM-ситуации в модель в координатах 😱, всё таки при должном смирении можно сказать что модели можно связывать с реальным миром, что радует. Тут используются 4 пакета нодов собственного сочинения - RengaDyn понятно для чего, osm2dyn для загрузки OSM-данных в среду dynamo, dyn_proj_library для пересчета координат 3 раз 😬 и ifc2dyn для экспорта результата в ifc для вставку в Ренгу в координатах! Меня приятно удивил факт что я верно понял структуру динамовского Solid и её передал в ifc.
P.S. Курс почти записан 😂😂
Написал небольшой плагин со справкой для системы Renga. Для удобства совместной работы и в целом для однопользовательского режима -- для предотвращения выборки заблокированных элементов в модели. Хоть функции блокировка в программе нет, зато есть возможность следить за выделением Пользователем объектов в модели, и если например их тип или свойство содержит недопустимый тег, то эти объекты будут сниматься с выборки ... может быть актуально для:
- групповой работы в модели нескольких людей (присвоение отдельным объектам фамилии Проектировщика/маркировки их "разделом проектирования" для смежников -- чтобы они не изменили случайно не свои объекты);
- блокировкой элементов уровня (при любом режиме работы)
- ... иные сценарии работы.
Плагин вроде бы отлажен, ошибок возникать не должно ... но надо тестировать
Плагин как часть курса по Renga API где осталось уже немного записать материала 😓, надеюсь на след. неделе опубликуем .....
Ознакомиться с плагином.
Статья №58.Dynamo и OpenStreetMapВместо введения: Давно не писал - заканчивал свою магистратуру в вузе, много делал курс по Renga API, копался с IFC и на 2 недели ездил в отпуск :( На волне пользовательского запроса по интеграции открытых данных OpenStreetMap с информационными моделями (да-да, я знаю про ранние проекты DynaMaps и Elk, но мне они показались какими-то мутными) написал на коленке за 1 вечер загрузчик xml-osm файла и "преобразователь" его в точечные/линейные/полигональные данные с семантикой не трогая правда пока блок "relations" - в виде dynamo-пакета
osm2dyn. Фоном чуть довел до ума ранний проект с библиотекой PROJ (небольшая оптимизация многократного вызова процедур) и оформил это в виде нового dynamo-пакета dyn_proj_library. Логика их совместного применения и описана в статье. Пакет по пересчету координат будет на замену функциям по пересчету координат из Автодесковской закрытой proj.db.
Перейти к статье.Статья №57. GDAL PROJ - готовим библиотеку к использованию в САПРах. Обновление базы определенийЧутка редактирую механику PInvoke для доступа к библиотеке, теперь считает корректно. Импортирую в proj.db библиотеку систем координат из Civil3D (отталкиваясь от wkt2 формулировок). Описываю в целом механику пакетного внесение новых определений, публикую стабильные версии библиотеки — в общем, готовлю расчетное ядро под реализацию плагинов для NanoCAD. Перейти к статье.
Статья №56. GDAL PROJ - готовим библиотеку к использованию в NanoCADПлавно переключаюсь на тему GIS-САПР, и начинаю осуществлять свою давнюю мечту - портировать на отечественный NanoCAD часть нужных функций по работе с ГИС-данными. Начал с одной из самых важных компонентов - базы систем координат и библиотеки по работе с ними, оттолкнувшись от известнейшей GDAL PROJ (используемой в QGIS и еще много где). В статье рассматриваю логику работы с API библиотеки (очень поверхностно), пишу небольшой .NET Wrapper над ней (в виде подключаемого класса к проекту), и пишу также тестовый плагин на NET под NanoCAD, реализующий функции пересчета координат. Застопорился как было ожидаемо на логике работы с интерфейсами этого Wrappera'а 🤪, часть данных пропускалась - буду копаться дальше. А пока приглашаю вкусить тонкостей логики встраивания библиотеки в систему пользователя.
Публикация №55. Renga API - Плагин для работы с поверхностями. Преобразование LandXML в IFCПо мотивам прошлогодней версии и "новых идей" сделал теперь эту реализацию внутри Renga с генерацией ifc-файлика библиотеками GeometryGym. Хотел конечно для расширения познаний
Дополнение к статье №54. Видеоролик "Renga API - приложение для формирования NWC файла из проекта Renga (загрузка, использования, ограничения)"Попробовал платформу ДзенВидео - закинул туда процесс скачивания и запуска приложения по формированию NWC файла из статьи выше. Перейти к видео.
Статья №54. Nwcreate-lib на примере работы с Renga APIСтатья посвящена двум вещам - порядку получения информации об объектах геометрии Renga и их цветам/материалам (при возможности) и работе с библиотекой nwcreate для формирования из этого (геометрии, свойств объектов Renga) NWC файла. В статье приведены примеры отдельных действий, фулл-код доступен в репозитории приложения на GitHub. Перейти к статье.
Статья №53. Renga API. Погружение в разработку. Часть 6 - Приложения на C++ и особенности отладкиВозрождаем серию посвященную Renga API - порядка недели убил на осознание "как оно там работает". Вопросов конечно появилось больше, но что-то начало двигаться ... подводим черту под порядком создания библиотеки на C++ и её отладке. Следующая часть будет посвящена выгрузке геометрии и свойств объектов в нейтральные (апеллирующие базовыми типами) структуры данных для последующего экспорта в другие 3D форматы (nwc первоочередное с занимательной библиотекой nwcreate 😬 тоже на C++). Перейти к статье.
Статья №52. GeometryGym - экспорт в IFC данных из Civil 3D. Часть 2 - Безнапорные сети, 3д-телаВторая часть процесса создания ifc-экспортера. Подход к объектам безнапорной сети оказался универсальным (тела, колодцы), я пошел по тому же пути, что и Civil3D - получая геометрию, и подставляя ее в элементы IfcBuildingElementProxy в категории IfcSystem (в структуре объекта "Трубопроводная сеть" в Civil3D). Вообще, и трубы и колодцы можно заносить в свои классы типа IfcPipeSegment но я застрял на вспомогательных сущностях и решил пока отложить этот вопрос на потом, после анализа моделей сетей, где реализована правильная классификация. В этой статье я ограничился только упомянутой безнапорной сетью и 3д-телами AutoCAD (с привязанными наборами характеристик, конечно). Пара моментов, требующих внимания: - не гарантируется точная передача сложной геометрии колодцев и труб (надо тестировать); - цвета объектов берутся по слою, а не из стиля (это не удобно вытаскивать универсально); - некоторые нулевые колодцы могут не иметь геометрии, поэтому вместо них подставляется элемент IfcPoint. Пока такие условности. Плагин доступен на страничке на GitHub (ссылка в конце страницы). Перейти к статье. P.S. Я искренне не понимаю что мешало Autodesk'у реализовать этот экспортер много лет назад, там простейшие классы и подходы ....
Статья №51. GeometryGym - экспорт в IFC данных из Civil 3D. Часть 1 - Общие понятия, передача поверхностей и наборов характеристикУстав ждать что работающий IFC-экспортер напишут когда-то к 2030 версии, решил попробовать начать писать свой - начало пока позитивное: логику зафиксировал, поверхности обработал, наборы характеристики (для любых типов объектов) учел, а также сделал учет внутренних свойств объектов. Дальше по курсу трубопроводные сети - если с трубами будет быстро, то с колодцами и арматурой чую будет мнооооого интересного 😂😂😂. P.S. буду рад тестированию на баги, писалось на коленке, может что-то могло пойти не так ... ссылка на плагин там в статье в форме отсылки на github. Перейти к статье.
После почти 2-месячного перерыва продолжаю. Прошедший период был связан с интенсивным болезненным погружением в C++ и свою основную работу работы.
Статья №50. NanoCAD и ODA. Инструменты разработки. Часть 1 - приложение, документ, слои.Да ... времена такие, что пришлось начать его осваивать. Начав погружаться, не могу сказать чего там больше - базовой платформы или OdaX + Teigha, но погружение обещает быть интересным. Вообще я хотел начать писать про NRX (c++ api), но в документации там огромная дыра на документации по нему — поэтому обратился пока к .NET - а его оставляю на потом ... как поддержка что-то напишет/подскажет по теме. В данной статье рассматриваем подключение через COM-api к чертежу, смотрим на доступные методы документа, слои, блоки. Делаю паузу на объектах геометрии — для создания объектов в пространстве чертежа. Перейти к статье.
Когда слишком увлекся культурными репортажами по своей Вогогде, накопившимися за 5 дней 😅🤣🤣🤣
Остальное (по теме сапр'ов) на подходе :)
Поехал на 2 недели в командировку в Вологду - веду "культурный репортаж" оттуда 😂; решил окончательно разделить профессиональное от личного (в плане статей). Кому интересно чисто про культуру и (или) природу - welcome to other channel.
Статья №49. Занимательное Dynamo. Работаем с поверхностями, телами и наборами характеристикРассматриваем последовательный процесс назначения поверхностям Civil3D наборов характеристик, выдавливанию солидов между ними и назначению солидам набора характеристик, используя их связь с родительскими поверхностями. Статья более всего ориентирована на геологические поверхности, где и их много, и тел много 💀. Перейти к статье.
Статья (заметка) №48. Передача поверхности LandXML в Renga через IFCСобственно говоря, основная статья/руководство посвящено не совсем этому, но среди описанного в нем (ссылки на Руководство также в статье приведены) также есть процесс передачи в Renga поверхности в координатах. Необходимость написания отдельной инструкции связана с полным отсутствием базовых инструментов моделирования рельефа в программе и требованием курса сажать здания по рельефу. Решение базируется на небольшом скрипте, запуск которого осуществляется через среду Dynamo. Я к слову в процессе написания отдельного руководство по работе с Dynamo в Renga ... надеюсь к понедельнику будет рабочая версия. Перейти к статье.
Статья №47. Renga API & Dynamo Core. Часть 5 - геометрия объектов, общие выводыПоследняя (во всяком случае на ближайшее время) статья по Renga API. Заканчиваем разборкой геометрии и получения Mesh'a в геометрию Dynamo. Упираемся в несколько системных ограничений и недостатка пакетов Dynamo по работе с mesh & material (надо писать дополнительно тоже). В целом, я итак логически подошел к завершению, остался конечно пласт тем неупомянутым - но и так, я считаю, очень большая работа была проделана. В идеале бы ещё написать с нуля справку к этому пакету 🙈, в текущем виде его тяжело использовать .. очень много нодов, хоть и структурированных. "Своя" логика программы требующая особого подхода (с учетом того что все методы построены на логике работы с COM-структурами).
Статья №46. Renga API & Dynamo Core. Часть 4 - объекты, уровни, стили отображения и COM-типизация данныхПродолжаем рассматривать интеграцию API Renga и Dynamo. В этой статье наконец-то ставим точку на прочих элементах (объектах, их отображению и уровнях), закладываем базу в виде класса для работы с простой геометрией - точки и векторы. И в следующей части приступим к геометрии уже вплотную. Перейти к статье.
