Как я могу получить XYZ Cordinates DXF, STL
Я хочу получить xyz точек 3D-объектов, написанных в.dxf, .stl, чтобы сделать программное обеспечение для моего 3d-принтера.
Я попробовал анализатор Python DXF, но он не мог получить XYZ-кординаты 3D-объектов.
Кто-нибудь умный, чтобы знать, как я могу это сделать?
1 ответ
3D-объекты кодируются с использованием двоичных данных в файле DXF (аналогично выводу, полученному при выборе 3D-объекта после оценки выражения AutoLISP (entget (car (entsel)))
в командной строке AutoCAD); поэтому вы не сможете получить требуемую информацию, прочитав файл DXF в виде простого текста.
Поскольку очень мало свойств трехмерных объектов доступны в API-интерфейсе LISP в AutoCAD, я бы посоветовал вам опросить свойства объекта с помощью.NET - в Интернете есть множество ресурсов, описывающих, как этого можно достичь.
Я бы использовал MeshLab, это приложение с открытым исходным кодом, которое может читать STL-файл и экспортировать текстовый файл XYZ Point Cloud с обычной информацией или без нее. Каждая вершина будет отображаться в виде трех значений с плавающей точкой, разделенных пробелом, EG (без обычных данных);
-90.936005 122.486008 4.072000
-95.642006 139.926010 4.072000
-96.862007 139.952011 4.072000
и с нормальными данными;
-90.936005 122.486008 4.072000 0.000000 0.000000 0.078929
-95.642006 139.926010 4.072000 0.000000 0.000000 0.099790
-96.862007 139.952011 4.072000 0.000000 0.000000 1.148707
Затем вы можете использовать стандартный ввод / вывод Python для доступа к данным в текстовом файле.
Хотя, если вы счастливы работать с фасетами, вам просто нужно получить доступ к ASCII-форме STL-файла, где текстовый файл содержит последовательность записей фасетов, таких как;
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -3.315800e+001 1.389420e+002 4.072000e+000
vertex -3.104200e+001 1.389120e+002 4.072000e+000
vertex -3.111600e+001 1.389960e+002 4.072000e+000
endloop
endfacet
...
endsolid vcg
Вы можете использовать MeshLab для преобразования двоичных файлов в ACSII STL.