1

STLファイルの読み取りがASCIIまたはバイナリ形式である場合、プログラムでどのように見つけることができますか? STL ファイルのロードに C# WPF と Helix Toolkit を使用しています。

4

1 に答える 1

1

(Ardahan が言ったように) ヘッダーの "堅実な" 単語が不十分であることがわかった場合、残念ながら残っている唯一の方法は一貫性チェックまたはパーサーです。いくつかの (どういうわけか「ばかげた」) オプションがあります。

  1. ASCII STL ファイルは、改行を除いてすべて人間が読める文字で構成されています。(AZ、az、0-9、.、-)。したがって、これら以外のものを見つけた場合、それは ASCII STL ではありません (逆の場合は十分ではありません。たとえば、適切な文字しか見つからない場合でも、それが有効な ASCII STL ファイルであるとは限りません。ポイント 3 を参照してください)。
  2. 三角形の数とファイルのサイズの整合性チェックを行うことができます (たとえば、ファイルバイナリであると予想され、整合性チェックが失敗した場合、それはそうでないか、少なくとも有効なものではありません)。整合性チェック: numOfTriangles * sizeof(STLTriangleStructure) + 84 == ファイル サイズ。これが 100% 防弾かどうかはわかりません。運が良ければ、オフセット 80 で ASCII STL に適切な 4 バイトがあるため、ファイル サイズに対応しますが、これはまれなケースだと思います。
  3. ASCII STL ファイルは、最初の行を除いて、定義済みの一連の単語 (ソリッド、ファセット、法線、ループなど) のみで構成されます。これらの単語は指定された順序である必要があります。パーサーを記述できます。パーサーが失敗した場合、有効な ASCII STL ファイルではありません。
于 2016-01-05T07:28:45.937 に答える