Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9749

C#でSTLのバイナリを読み込む

$
0
0

某言語のライブラリじゃないやつ。

ソースコード

staticVector3f[][]LoadStlFile(Streamstream){byte[]buff=newbyte[84];stream.Read(buff,0,84);stringanyText=Encoding.ASCII.GetString(buff,0,80);intnumOfPolygon=BitConverter.ToInt32(buff,80);Vector3f[][]polygons=newVector3f[numOfPolygon][];for(inti=0;i<numOfPolygon;i++){stream.Read(buff,0,50);polygons[i]=newVector3f[3]{newVector3f(BitConverter.ToSingle(buff,4*3),BitConverter.ToSingle(buff,4*4),BitConverter.ToSingle(buff,4*5)),newVector3f(BitConverter.ToSingle(buff,4*6),BitConverter.ToSingle(buff,4*7),BitConverter.ToSingle(buff,4*8)),newVector3f(BitConverter.ToSingle(buff,4*9),BitConverter.ToSingle(buff,4*10),BitConverter.ToSingle(buff,4*11)),};}return(polygons);}staticVector3f[][]LoadStlFile(stringpath){using(FileStreamfs=newFileStream(path,FileMode.Open,FileAccess.Read)){return(LoadStlFile(fs));}}

任意の文字列法線ベクトルは読み捨ててます。
戻り値は頂点のジャグ配列ですが、環境に合わせて煮るなり焼くなり好きにしろ。
エラーチェックとか一切やってないので気をつけてね。

参考

STLファイルフォーマット

感想

なにゆえ1ポリ50バイト? 48ポリのほうがスッキリする気がする。


Viewing all articles
Browse latest Browse all 9749

Trending Articles