Получить координаты линий из Автокада через питон
уважаемые коллеги, пытаюсь заскриптовать перенос координат полилиний из Автокада через питон, чтобы сэкономить время и не переписывать координаты каждой точки в ручную:
Есть несколько профилей определенного слоя в автокаде, координаты которых нужно получить, см.рисунок ниже:
Для этого пишу такой код:
import ezdxf
dwg = ezdxf.readfile("filename")
for entity in dwg.entities:
if entity.dxftype() == 'POLYLINE':
first_vertex = entity.get_vertex_by_index(0)
last_vertex = entity.get_vertex_by_index(-1)
first_coord = (first_vertex.x, first_vertex.y, first_vertex.z)
last_coord = (last_vertex.x, last_vertex.y, last_vertex.z)
print(f'First coordinate of polyline {entity.dxftype()} is: {first_coord}')
print(f'Last coordinate of polyline {entity.dxftype()} is: {last_coord}')
Но получаю подобную ошибку :
Traceback (most recent call last):
File "D:\PythonProjects\Dwg linii razreza.py", line 11, in <module>
first_vertex = entity.get_vertex_by_index(0)
AttributeError: 'Polyline' object has no attribute 'get_vertex_by_index'
Не могли бы Вы подсказать или направить, в какую сторону двигаться для решения проблемы
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Как я написал в комментарии, используйте документированный метод points()
:
import ezdxf
dwg = ezdxf.readfile("polyline.dxf")
for entity in dwg.entities:
print(entity.dxftype())
if entity.dxftype() == 'POLYLINE':
print(list(entity.points()))
POLYLINE
[Vec3(4.0, 3.0, 2.0), Vec3(8.0, 5.0, 0.0), Vec3(2.0, 4.0, 9.0)]