输出包含多个对象的 STL 文件以导入 Blender

3D打印 stl 文件格式 搅拌机
2021-05-01 15:03:30

我想打印一个看起来像一块平板的物体,上面有一组火柴盒状的肿块。

我编写了一个输出 STL 文件的脚本。为了保持脚本简单,它创建了一个包含非流形边的对象。准确地说,棋盘和盒子是一个模型,但每个模型都有由 2 个三角形组成的 6 个面。每个火柴盒的底面都位于较大平板的顶部。

如果我理解正确的话,考虑到火柴盒的位置,棋盘的顶面应该被分成许多更小的三角形,但是手动编码(尽管这对读者来说可能是一个有趣的练习)不会是一个好好利用时间。编写好的代码已经内置到像 Blender 这样的 FOSS 应用程序中。

但是,Blender 无法合并或融合属于同一对象的形状。我目前的理解是,我需要:

  1. 为 Blender 提供多个对象
  2. 选择所有对象
  3. 使用 Ctrl-J 合并它们
  4. 以 STL 格式导出世界

这是一种有效的方法吗?

如果是这样,我的关键问题是:如何格式化 STL 文件,以便 Blender 能够识别出它包含多个单独的对象?

(我发现对包含多个对象的 STL 文件的引用,但在我检查过的任何 STL 文件中我都没有看到任何告诉我:这里是一个对象的结尾和另一个对象的开头。)

或者我应该笨拙地导出两个 STL 文件——一个用于电路板,一个用于所有火柴盒——然后将它们都导入 Blender?


注意:我知道有像Netfabb这样的免费服务可以为我纠正我的简单文件,但如果可能的话,我不希望将它包含在我的工作流程中。

3个回答

Blender 导入所有 STL 文件,就好像它们是单个对象一样。如果要分离的对象中有多个网格,可以按Tab键进入编辑模式,选中需要分离的部分,然后按P,按选择分离。

如果您想将这些部分打印为一个零件,您必须去除任何内部面。最简单的方法是选择一个对象,然后在联合模式下使用布尔修饰符。一旦你选择了你想要融合的对象并就位,应用修改器,这应该会给你一个没有内部面的对象。

我认为有一种更简单的方法可以做到这一点 -如果您不致力于使用 Blender,而且听起来好像您不是。

看看http://www.openscad.org/(它应该在 Blender 可以运行的任何地方运行)。用 OpenSCAD 的描述语言编写代码来生成您想要的形状(在这种情况下它将是长方体的联合)非常容易,然后您可以使用 OpenSCAD 本身将其渲染到 STL。(甚至可以从命令行自动执行此操作。)

让我们看看它...

它是这样的:一个封闭的盒子,没有内表面的突起。像这种拼凑起来的东西。

带伪框的框

让我们只是为了好玩将它导出为 .stl。是的,单个 .stl 文件。现在在 MeshMixer 中打开它:

同型号的MeshMixer视图

看起来还不错,对吧?但是一个红色的盒子?那是什么意思?再看看搅拌机模型:哦对了,那些表面上的法线是向后的!W F在搅拌机中翻转法线,重新导出 .stl,重新加载到 MeshMixer!

翻转顶部“立方体”中的法线后

现在我们在说话!让我们看看我们如何能够解决这一问题......Edit > Make SolidSolid Accuracy既高Solid AccuracyMesh Density在合理的尖角结果...党!一个坚固的身体,都整齐地闭合。

固化后 现在,测试:导出 ( ctrl+E) 并导入到搅拌机中。

在搅拌机中固化

然而,我们遇到了一个问题:这个原本有 11 个面和 16 个顶点的东西变成了将近 120 万个顶点和 240 万个面。这当然可以浓缩一些,但我们刚刚实现了对象的可打印合并。

角几何体的新网格