如何将Three.js转换为用于3D打印的.stl文件?

6
我找到了一个页面链接:将Three.js转换为.stl以进行3D打印?
var exporter = new THREE.STLExporter();
var str = exporter.parse(scene);
console.log(str);

但是当我使用它们时,不导出stl文件。

那我该怎么办呢?

1个回答

5
STLExporter.parse()函数将指定的对象导出为字符串。如果您希望将该字符串保存为文件,则需要执行一些额外的操作。一个简单的方法是使用FileSaver.js来保存字符串到文件中。

首先,您需要下载并将FileSaver.js包含在您的代码中。

下载链接:

使用STLExporter导出场景后,将结果字符串转换为Blob,然后使用FileSaver.js将Blob保存为文件。

var exporter = new THREE.STLExporter();
var str = exporter.parse( scene ); // Export the scene
var blob = new Blob( [str], { type : 'text/plain' } ); // Generate Blob from the string
saveAs( blob, 'file.stl' ); //Save the Blob to file.stl

如果您不熟悉FileSaver.js,可以尝试以下方法:
var exporter = new THREE.STLExporter();
var str = exporter.parse( scene ); // Export the scene
var blob = new Blob( [str], { type : 'text/plain' } ); // Generate Blob from the string
//saveAs( blob, 'file.stl' ); //Save the Blob to file.stl

//Following code will help you to save the file without FileSaver.js
var link = document.createElement('a');
link.style.display = 'none';
document.body.appendChild(link);
link.href = URL.createObjectURL(blob);
link.download = 'Scene.stl';
link.click();

我尝试了你的建议并成功了,非常感谢!现在,我有很多网格,我该如何合并它们并将其导出为STL文件呢?再次感谢! - panda
@panda,如果你导出场景,它将包括添加到场景中的所有网格。 - HariV
HariV,我知道原因了。所有网格的位置都是默认使用世界坐标系,无法保存它们的位置、平移等信息。该如何解决呢? - panda
我不明白你想说什么,但在我的情况下,在加载导出的场景后,我得到了所有网格放置在正确的位置。 - HariV
嗨,我正在使用threejs stlexporter创建stl文件,但是3D打印机无法生成该stl文件的打印版。请告诉我我错过了什么。 - Tarlok
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接