gpt4 book ai didi

java - 在 Java 中保存二进制 STL 文件

转载 作者:行者123 更新时间:2023-12-01 14:11:19 27 4
gpt4 key购买 nike

我正在尝试将一些数据保存为 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com