1

如果读取 STL 文件是 ASCII 或二进制格式,我如何以编程方式找到。我正在使用 C# WPF 和 Helix Toolkit 来加载 STL 文件。

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 文件可能仅包含预定义的单词集(solid、facet、normal、loop...),但第一行除外。这些单词必须按给定的顺序排列——您可以为它编写一个解析器,如果它失败了,那么它不是一个有效的 ASCII STL 文件。
于 2016-01-05T07:28:45.937 回答