Как стать автором
Обновить

Комментарии 26

Думаю в данный обзор стоит добавить ZenCad: https://github.com/mirmik/zencad. Кстати её автор есть на хабре и писал про нее статью: https://habr.com/ru/post/443140/. Для простых форм (корпуса для электроники состоящие из параллелепипедов и отверстий в них) подходит идеально, а вот сложные объекты с изгибами и прочими красивостями разрабатывать сложно из-за неожиданно вылазящих артефактов. Думаю попробовать описанный Вами SolidPython.

Для просмотра stl файлов разработано довольно много программ. Одна из них называется Blender,

Я еще не слышал, чтобы так блендер обзывали!

Самую главную библиотеку забыли - VTK. Можно делать все, вплоть до подготовки моделей виртуальной реальности. Многое из вышеназванного я пробовал, и только зря потратил время. Еще можно на питоне в Blender программировать, если нужны искусственные объекты, а не создание моделей реального мира из реальных данных. Кстати, с файлами VTK и стандартными форматами мешей можно и в Jupyter Notebooks работать с помощью PyVista, к примеру.

Я правильно понимаю, что имеется ввиду Visualization Toolkit (https://vtk.org)?

Да, правильно. Еще есть тоже опен сорс десктопное приложение ParaView как оболочка к этой библиотеке - может и с вычислительным кластером работать, и с растровыми и с векторными данными, там же встроенный питон для написания скриптов…

Рад слышать. Для библиотеки VTK много всего интересного есть, даже для Jupyter Notebooks целая плеяда врапперов, но как-то это все «широко известно в узких кругах». Из проприетарных аналогов разве что Voxler могу назвать… но он только под виндоус, качество отрисовки не сравнимо, и вообще не способен работать с большими данными (у меня в нем проблемы были даже на файлах размером десятки-сотни мегабайт, про гигабайты и десятки гигабайт и речь не идет, хотя для серий мультивременных геологических моделей это обычный размер).

Большое спасибо за очень познавательный анализ разных библиотек на конкретном примере.

Даже сам загорелся идеей реализации этого фрактала на Blender Python API для сравнения.

Как с помощью этих библиотек найти кратчайшее расстояние между двумя точками на поверхности.

Для решения Задачи о кратчайшем пути, существует несколько алгоритмов. Работают они обычно с графами. Потому, следует описание вершин и граней mesh, привести к описанию связей вершин графа.

Представление связей вершин куба в виде графа
Представление связей вершин куба в виде графа

Добавил в репозиторий небольшой пример, как это может выглядеть на искаженном кубе, с использованием библиотек numpy-stl и networkx. Важно помнить, что в перечисленных примерах, mesh состоит из треугольных граней. Это приводит к появлению одной линии между двумя противоположными углами квадратной грани куба.

Искажённый куб
Искажённый куб
Нет я имел ввиду расстояние по граням, а не по рёбрам. Представьте расстояние на квадратной сетке между двумя точками.

Добавьте множество новых вершин и рёбер. Они сформируют необходимую для поиска сеть. Например:

Возьмем две точки, каждая из которых расположена на своей грани
Возьмем две точки, каждая из которых расположена на своей грани
Проведем из вершин грани новое ребро в сторону центра. Соединим ребра в центре грани новой вершиной.
Проведем из вершин грани новое ребро в сторону центра. Соединим ребра в центре грани новой вершиной.
Посреди ребра установим вершину, соединим новым ребром с новой вершиной соседнего ребра.
Посреди ребра установим вершину, соединим новым ребром с новой вершиной соседнего ребра.
Соединим точки начала и конца пути со всеми вершинами грани в которой они оказались
Соединим точки начала и конца пути со всеми вершинами грани в которой они оказались

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

А готовых методов нет?

Более простых решений мне найти не удалось. Если такие есть, было бы интересно узнать!

в разделе "Подготовка среды" описаны команды, где их следует задавать, для какой операционной системы эти команды? У меня в Windows 10 при попытке выполнить первую команду "curl -fsSL https://get.docker.com -o get-docker.sh" в Git Bash выскакивает сообщение: "curl: (60) SSL certificate problem: self signed certificate in certificate chain More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above."

Что нужно сделать чтобы избавиться от этой ошибки?

где можно добавить игнорирование сертификатов? Это делается командой curl --insecure или надо где-то править конфигурационный файл?

Можно прямо в команде добавить ключ. А можно прописать в конфиге по умолчанию _curlrc

Почитал в интернете и установил Sudo for Windows и что то получилось, до следующей команды. Эти команды из раздела: "Подготовка среды", они для какой операционной системы предназначены? Они работают в Windows?

При выполнении: $ sudo sh get-docker.sh
Выдаётся следующее сообщение:
sh : Die Benennung "sh" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang. In Zeile:1 Zeichen:1

  • sh get-docker.sh

  • ~~

    • CategoryInfo : ObjectNotFound: (sh:String) [], CommandNotFoundE xception

    • FullyQualifiedErrorId : CommandNotFoundException

Так вы не пускайте из powershell да еще и на немецком. Скачайте линукс и в нём пускайте или WSL/WSL2

я запускал не из powershell а из git bash, это во-первых! А во-вторых чем немецкий хуже английского? А в-третьих я как раз и спрашивал для какой операционки вся это срань подходит! И как выяснил для любителей ковыряться на линукс.

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

Нашел еще одну интересную библиотеку PyVista

3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)

Которая помогла мне отрендерить карту глубины прочитав mesh из stl файла. Но и кроме этого имеет много интересных возможностей.

https://docs.pyvista.org

https://github.com/format37/python3d/blob/main/comments/stl-slicer-v3.ipynb

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории