【3D 打印避坑实录】如何用 Blender 彻底修复空壳 STL

关键词 :3D 打印 / Cura / Blender / Shells / Infill / STL 修复
适用人群:3D 打印新手 & 被"怎么调填充都没用"折磨过的人


一、问题现象:不管怎么调 Infill,模型内部都是空的

很多人在 Cura 里会遇到这样的问题:

  • Infill 从 10% 调到 100%
  • 预览里模型依然是空的
  • 有的地方"看起来有填充",有的地方完全没有
  • 甚至同一个模型,切一刀有实有空

一开始很容易误以为是 Cura 的参数问题。

但事实是:

👉 这不是切片问题,而是模型本身的问题。


二、核心原因:Cura 不知道"哪里是内部"

Cura 的判断逻辑其实非常简单:

只有当 STL 是一个"单一、封闭的实体(Volume)",
它才知道哪里是 inside,才能生成 infill。

如果模型是下面这种情况之一:

  • 只是"一层皮"(Surface)
  • 有多个不相连的壳(Shells > 1)
  • 局部是实体,局部是空壳

那么在 Cura 看来:

"我看到的是几张表面,

但我不知道'里面'在哪里,

那我就没法填。"

这时候你怎么调 Infill 都没用。


三、关键指标:Shells = 1 才是分水岭

判断一个模型能不能正确填充,有且只有一个关键指标:

👉 Shells 是否等于 1

  • Shells > 1

    → 多个壳体 / 空壳 / 零散部件

    → Cura 无法统一判断内部

    → 填充异常或不出现

  • Shells = 1

    → 单一封闭实体

    → Cura 可以明确 inside / outside

    → Infill 正常生成


四、用 Blender 修复 STL:只做一件事就够了

结论先给出:是的,用 Blender 一个软件就完全够了。

不需要 Netfabb

不需要 Meshmixer

不需要在线修复工具

核心工具只有一个:Voxel Remesh


1️⃣ 导入 STL,准备工作

  • 打开 Blender

  • 导入 STL

  • 切到 物体模式(Object Mode)

  • 执行:

    复制代码
    Ctrl + A → 应用 → 缩放(Scale)

    确保 Scale = 1 / 1 / 1

⚠️ 这一步不是"改大小",

而是让 Blender 的几何尺寸变成"真实尺寸"。


2️⃣ 进入雕刻模式,进行 Voxel Remesh

  • 切换到 雕刻模式(Sculpt Mode)

  • 找到 Voxel Remesh

  • 关键参数(经验值):

    • Voxel Size:0.8 ~ 1.2 mm(模型约 10cm 时)
    • 勾选:Preserve Volume / Fix Poles

这一步的目的不是"变好看",

而是 强制把多个 Shell 融合成一个实体


3️⃣ 检查结果:Shells 是否等于 1

  • 回到 物体模式

  • 打开 3D Print Toolbox

  • 点击 Check All

  • 查看结果中的一行:

    Shells = 1

✅ 到这里,模型在"工程意义上"已经修复完成。


五、修复前后对比(图片示例)

图 1:修复前(Shells > 1,无法正确填充)


说明:模型存在多个 Shell,Cura 只能看到"皮",无法判断内部


图 2:修复后(Shells = 1,Infill 正常)


说明:模型成为单一封闭实体,Cura 正确生成内墙和填充


六、回到 Cura:为什么现在一切都正常了?

当你把修复后的 STL 导入 Cura:

  • 红色:外墙(Outer Wall)
  • 绿色:内墙(Inner Wall)
  • 橙色:填充(Infill)
  • 黄色:顶部 / 底部实心层

橙色填充连续、完整地出现在模型内部,这说明:

👉 Cura 终于"知道哪里是 inside 了"。

这不是 Cura 变聪明了,

而是 你把模型变成了 Cura 能理解的东西


七、关于 Infill 的正确认知(顺便避个坑)

很多人修好模型后,会直接把 Infill 拉到 90% / 100%。

但实际经验是:

  • 强度主要来自外壳(Wall)

  • Infill 超过 30% 后,强度提升非常有限

  • 90% 只会:

    • 更费料
    • 更慢
    • 更重

对摆件 / 装饰模型,20--30% 已经是最优解。


八、最终总结(一句话版本)

Cura 不填充,从来不是 Cura 的问题,
而是 STL 没有"内部"。

只要用 Blender 把 Shells 修到 = 1,
Cura 自然就知道怎么填了。

相关推荐
旖旎夜光10 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·11 小时前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁11 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven11 小时前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
程序猿编码11 小时前
告别改源码适配模型:纯 C++ 可配置 LLM 推理引擎,全格式全结构兼容
c++·大模型·llm·推理引擎
此生决int11 小时前
深入理解C++系列(20)——C++11(下)
开发语言·c++
郝学胜-神的一滴12 小时前
C++20模板元编程 07:吃透名称绑定与编译期递归核心原理
c++·程序人生·vs·模板元
S_WEAN12 小时前
【C++】STL - Vector类的模拟实现
c++
wuminyu13 小时前
HotSpot的轻量锁与膨胀后的ObjectMonitor状态重建原理
java·linux·c语言·jvm·c++
一只小透明啊啊啊啊13 小时前
Socket、AIDL、SOME/IP
c++·mcu