我怎样才能得到dxf,stl的xyz坐标

时间:2018-03-13 16:09:26

标签: 3d autocad dxf 3d-printing

我想获得用.dxf,.stl编写的3d对象的xyz点来制作我的3d打印机软件。

我尝试了python dxf解析器,但它无法获得3d对象的xyz坐标。

任何聪明的人都知道我该怎么做?

2 个答案:

答案 0 :(得分:0)

使用DXF文件中的二进制数据对3D对象进行编码(类似于在AutoCAD命令行中评估AutoLISP表达式(entget (car (entsel)))后选择3D对象时获得的输出);因此,您将无法通过以纯文本形式阅读DXF文件来获取所需信息。

由于3D对象的很少属性暴露给AutoCAD中的LISP API,我建议您使用.NET查询对象的属性 - 在线有很多资源描述如何实现这一点。

答案 1 :(得分:0)

我将使用MeshLab,这是一个开源应用程序,可以读取STL文件并导出带有或不带有常规信息的XYZ点云文本文件。每个顶点将显示为三个浮点值,中间用空格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 I / O来访问文本文件中的数据。

但是,如果您乐于使用构面,则只需访问STL文件的ASCII形式,其中文本文件具有一系列构面记录,例如;

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文件之间进行转换。