我正在尝试将一些数据保存为 STL 文件,以便在 3D 打印机上使用。 STL 文件有两种形式:ASCII 和二进制。 ASCII 格式相对容易理解和创建,但大多数 3D 打印服务要求它采用二进制格式。
有关 STL 二进制的信息在维基百科页面上进行了解释:http://en.wikipedia.org/wiki/STL_(file_format)
我知道我需要将数据放在字节数组中,但我不知道如何解释维基百科中的信息并创建字节数组。这就是我想要的帮助。
到目前为止,我的代码只是保存一个空字节数组:
byte[] bytes = null;
FileOutputStream stream = new FileOutputStream("test.stl");
try {
stream.write(bytes);
} finally {
stream.close();
}
最佳答案
如果您在最新的 Java 版本上开始一个新项目,您不应该为 OutputStreams 烦恼。请改用 Channels 和 ByteBuffers。
try(FileChannel ch=new RandomAccessFile("test.stl", "rw").getChannel())
{
ByteBuffer bb=ByteBuffer.allocate(10000).order(ByteOrder.LITTLE_ENDIAN);
// ...
// e.g. store a vertex:
bb.putFloat(0.0f).putFloat(1.0f).putFloat(42);
bb.flip();
ch.write(bb);
bb.clear();
// ...
}
这是唯一为您提供所需的小端支持的 API。然后匹配数据类型: UINT8表示无符号字节, UINT32 表示无符号整数, REAL32 表示 float , UINT16 表示无符号短整型, REAL32[3] 表示三个 float (即一个数组)
只要不超过相应有符号 Java 类型的最大值,您就不必担心数据类型的无符号性质。
关于java - 在 Java 中保存二进制 STL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508649/