Найдите свойства полигонов из Path2D, полученные из функции.to_planar() модуля Trimesh в Python

С помощью модуля Trimesh в Python я могу получить двухмерные сечения из файла STL с помощью кода, показанного ниже.

mesh = trimesh.load_mesh('MyFile.stl')
slicex = mesh.section(plane_origin=mesh.centroid, plane_normal=[0,30,0])
slice_2D, to_3D = slice.to_planar()

С помощью 2D-пути (Slice_2D), полученного из приведенного выше кода, я могу получить многоугольники в нем в виде массива NumPy и выполнить итерацию по нему с помощью кода ниже:

for polygon in slice_2D.polygons_closed:
    trimesh.path.polygons.plot_polygon(polygon, show=True)

Приведенный выше код ПОКАЗЫВАЕТ многоугольники на консоли. Однако я хотел бы знать, есть ли способ получить свойства многоугольника, например: количество ребер в многоугольнике; периметр и площадь многоугольника; Тип многоугольника (треугольник, квадрат, прямоугольник, параллелограмм, круг и т. д.).

Любая помощь в этом отношении будет высоко оценена!


person AdCal    schedule 18.06.2020    source источник


Ответы (1)


Свойство polygons_closed возвращает массив правильных многоугольников. Итак, чтобы получить т.е. площадь, используйте:

for polygon in slice_2D.polygons_closed:
    trimesh.path.polygons.plot_polygon(polygon, show=True)
    print(polygon.area)
person Holger Weiss    schedule 24.06.2020
comment
Уважаемый Хольгер, спасибо за ответ. Это действительно помогло. Есть ли способ подсчитать количество ребер или вершин многоугольника? Я также хочу узнать приблизительный тип многоугольника (круг, треугольник, квадрат и т. Д.). Если нет прямого пути, я подумал о косвенном, то есть сохранить полигон (показанный в консоли) как .PNG или :JPEG, а затем использовать модуль cv2 для определения количества ребер. Не могли бы вы также объяснить, как я могу сохранить полигон, отображаемый в консоли, как картинку без каких-либо границ (осей)? Спасибо. - person AdCal; 28.06.2020
comment
То, что вы получаете в 'polygon', является экземпляром класса 'polygon' из пакета 'shapely'. Рекомендую посмотреть в отладчике. Он очень мощный и будет иметь всю необходимую информацию, такую ​​как список вершин и моментов инерции. - person Holger Weiss; 29.06.2020