簡體   English   中英

STL 文件到可讀文本文件

[英]STL file to a readable text file

我現在正在研究 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

我一直在尋找這些類型的軟件,但到目前為止,沒有運氣。

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 格式允許手動檢查頂點坐標。

MeshLab ( http://www.meshlab.net ) 是一種廣泛使用的 3D 模型開源查看器,可以很好地處理所有 STL 變體(以及許多其他 3D 文件)。 適用於 mac/win/linux

還有一個在線版本可以在您的瀏覽器中運行http://www.meshlabjs.net

numpy-stl 做你想做的事:

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

但是,如果您希望它通過二進制轉換來完成,我在 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 
###################################

相同的二進制 STL 通過 numpy-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 並編輯文件以查看實時發生的情況。 我認為那將是最好的研究。 當然,在 window 上檢查各種幾何形狀的樣本 output stls 時。

您可以使用我制作的開源 STL-Viewer 軟件。 它支持二進制和 ASCII 格式的 STL 文件。 這是鏈接: https : //github.com/batu92k/STL-Viewer

下載MeshLab ,導入您的 stl 文件,當您取消選中二進制編碼時將其導出為 stl 文件

或者

下載FreeCAD ,導入 stl 文件,將其導出為 ast 文件

使用文本編輯器打開導出的文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM