6

我现在正在研究 3d 模型(stl 文件等)以及它是如何从头开始制作的。我需要使用什么软件来查看 stl 文件中的内容,如下所示:

solid dart
    facet normal 0.00000E+000 0.00000E+000 -1.00000E+000
        outer loop
            vertex 3.10000E+001 4.15500E+001 1.00000E+000
            vertex 3.10000E+001 1.00000E+001 1.00000E+000
            vertex 1.00000E+000 2.50000E-001 1.00000E+000
        endloop
    endfacet
endsolid dart

我一直在寻找这类软件,但到目前为止,没有运气。

4

4 回答 4

3

STL 文件有 ASCII 格式和二进制格式。大多数 STL 文件都是二进制格式,不能以文本形式打开。要更改格式,可以使用 CAD 程序(更改“另存为”中的选项)。

在ASCII格式中,表示如下:

solid dart
    facet normal 0.00000E+000 0.00000E+000 -1.00000E+000
        outer loop
            vertex 3.10000E+001 4.15500E+001 1.00000E+000
            vertex 3.10000E+001 1.00000E+001 1.00000E+000
            vertex 1.00000E+000 2.50000E-001 1.00000E+000
        endloop
    endfacet
endsolid dart

因此,只有 ASCII 格式允许手动检查顶点坐标。

于 2019-04-30T11:59:35.527 回答
3

MeshLab ( http://www.meshlab.net ) 是一个广泛使用的 3D 模型开源查看器,可以很好地处理所有 STL 变体(以及许多其他 3D 文件)。适用于 mac/win/linux

还有一个在线版本可以在您的浏览器中运行 http://www.meshlabjs.net

于 2018-12-04T21:18:01.523 回答
0

我在 python3 上编写的简单代码参考:https ://www.fabbers.com/tech/STL_Format#Sct_binary

import struct
    def ffb(x): 
        return str(round(struct.unpack('f',x)[0],6))
    f=open('3dtest.stl','rb')
    print(f.read(84))
    temp=''
    for j in range(4):
        temp='facet normal: '
        for i in range(3):
            temp=temp+ffb(f.read(4))+' '
        print (temp)
    
        for n in range(3):
            temp='vertex: ' 
            for i in range(3): 
                temp=temp+ffb(f.read(4))+' ' 
            print (temp) 
        attr=f.read(2)
        print('###################################')
       
    f.close()
    temp=temp[:-1]
    print(temp)

结果:

b'MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH\n\x0c\x00\x00\x00'
facet normal: 0.0 1.0 0.0 
vertex: 12.671906 11.296659 0.0 
vertex: -11.984282 11.296659 0.0 
vertex: -11.984282 11.296659 10.0 
###################################
facet normal: 0.0 1.0 -0.0 
vertex: 12.671906 11.296659 0.0 
vertex: -11.984282 11.296659 10.0 
vertex: 12.671906 11.296659 10.0 
###################################
facet normal: 1.0 0.0 0.0 
vertex: 12.671906 -10.8055 0.0 
vertex: 12.671906 11.296659 0.0 
vertex: 12.671906 11.296659 10.0 
###################################
facet normal: 1.0 0.0 0.0 
vertex: 12.671906 -10.8055 0.0 
vertex: 12.671906 11.296659 10.0 
vertex: 12.671906 -10.8055 10.0 
###################################

通过 numpy-stl 将相同的二进制 STL 转换为文本:

solid MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH-MESH
facet normal 0,000000 246,561890 0,000000
  outer loop3
    vertex 12,671906 11,296659 0,000000
    vertex -11,984282 11,296659 0,000000
    vertex -11,984282 11,296659 10,000000
  endloop
endfacet
facet normal 0,000000 246,561890 -0,000000
  outer loop
    vertex 12,671906 11,296659 0,000000
    vertex -11,984282 11,296659 10,000000
    vertex 12,671906 11,296659 10,000000
  endloop
endfacet
facet normal 221,021591 0,000000 0,000000
  outer loop
    vertex 12,671906 -10,805500 0,000000
    vertex 12,671906 11,296659 0,000000
    vertex 12,671906 11,296659 10,000000
  endloop
endfacet
facet normal 221,021591 0,000000 0,000000
  outer loop
    vertex 12,671906 -10,805500 0,000000
    vertex 12,671906 11,296659 10,000000
    vertex 12,671906 -10,805500 10,000000
  endloop
endfacet

numpy-stl 代码:

from stl import mesh 
your_mesh = mesh.Mesh.from_file('3dtest.stl')
your_mesh.save('3dascii.stl',mod=stl.Mode.ASCII)  

我建议您通过任何语言或渲染器将 3d 绘图放在循环中。将错误转发到 >/dev/null 并编辑文件以查看实时发生的情况。我认为这将是最好的研究。当然,在另一个窗口上检查各种几何形状的示例输出 stls 时。

于 2022-03-01T11:41:23.993 回答
0

您可以使用我制作的开源 STL-Viewer 软件。它支持二进制和 ASCII 格式的 STL 文件。这是链接:https ://github.com/batu92k/STL-Viewer

于 2020-03-07T16:52:30.260 回答