第13章:3D打印要求
3D打印技术将数字模型转化为物理实体,但这一过程对mesh模型有着严格的几何和拓扑要求。本章将系统介绍3D打印的mesh准备流程,包括模型验证、结构优化和打印参数设置。我们将从可打印性的基本约束出发,深入探讨支撑生成、切片算法等核心技术,并介绍拓扑优化等前沿方法。通过本章学习,读者将掌握将任意3D模型转化为可靠打印件的完整技术栈。
13.1 水密性检查与修复
水密性(watertight)是3D打印的首要要求,指mesh必须是封闭的二维流形,没有孔洞、裂缝或自相交。非水密模型会导致切片失败或打印错误。
13.1.1 流形性检测
流形mesh满足以下条件:
- 每条边最多被两个三角形共享
- 每个顶点的邻域拓扑等价于圆盘或半圆盘
- 没有孤立的顶点或边
非流形缺陷类型:
1. T-junction(T型连接)
*-----*-----*
| | |
| * | <- 顶点接触边但不是端点
| / | \ |
*-----*-----*
2. 非流形边(>2个面共享)
*
/|\
/ | \
/ | \
*---*---* <- 中间边被3个面共享
\ | /
\ | /
\|/
*
3. 非流形顶点(蝴蝶结构)
*-----*
/ \ / \
/ \ / \
* * * <- 中心顶点的邻域非连通
\ / \ /
\ / \ /
*-----*
欧拉-庞加莱公式验证: 对于封闭的可定向流形: $$V - E + F = 2(1-g)$$ 其中$V$是顶点数,$E$是边数,$F$是面数,$g$是亏格(孔洞数)。对于简单封闭物体,$g=0$,因此$V - E + F = 2$。
13.1.2 孔洞检测与填充
孔洞边界检测算法:
- 找出所有只被一个三角形使用的边(边界边)
- 将边界边连接成环
- 每个环对应一个孔洞
最小面积填充(Minimum Area Triangulation): 对于凸孔洞,使用动态规划求解最优三角化: $$A[i,j] = \min_{i<k<j} \{A[i,k] + A[k,j] + Area(v_i, v_k, v_j)\}$$ 推进波前法(Advancing Front):
算法步骤:
1. 初始化:将孔洞边界作为活动波前
2. 迭代:
- 选择波前上夹角最小的顶点对
- 创建新三角形
- 更新波前
3. 终止:波前收缩为单点或单边
13.1.3 自相交检测与处理
自相交会导致内外表面歧义,必须在打印前解决。
空间划分加速: 使用BVH(Bounding Volume Hierarchy)或八叉树加速相交测试:
三角形相交测试(Möller-Trumbore算法):
给定三角形T1(v0,v1,v2)和T2(u0,u1,u2)
1. 计算T1平面方程:n·x + d = 0
2. 计算T2顶点到平面的符号距离
3. 如果同号,则不相交
4. 否则计算交线
5. 检查交线与两三角形的相交情况
自相交修复策略:
- 局部重网格化:在相交区域细分并重新连接
- 布尔运算:将模型与自身求并集
- 体素化重建:转换为体素表示后重新提取表面
13.1.4 法线一致性
确保所有三角形法线指向外部:
法线传播算法:
1. 选择种子面,确定其正确朝向
2. BFS遍历相邻面:
for each 邻接面f_j of f_i:
if (n_i · n_j < 0):
翻转f_j的顶点顺序
3. 处理多连通分量
13.2 壁厚分析与空心化
壁厚是影响打印强度和材料成本的关键参数。过薄会导致结构脆弱,过厚则浪费材料和时间。
13.2.1 最小壁厚计算
中轴变换(Medial Axis Transform): 中轴是物体内部到边界等距点的集合,可用于精确计算局部厚度。
外表面
________________
| |
| ·---·---· | <- 中轴
| / | \ |
| · | · | <- 厚度 = 2×(中轴到表面距离)
|________________|
内表面
射线法厚度估计:
对每个表面点p:
1. 沿内法线方向-n发射射线
2. 找到第一个相交点q
3. 局部厚度 = ||p-q||
4. 如果厚度 < 阈值,标记为薄壁区域
13.2.2 空心化算法
空心化可显著减少材料用量和打印时间:
偏移曲面法(Offset Surface): 生成内表面$S_{inner} = S_{outer} - t \cdot \vec{n}$,其中$t$是壁厚。
注意处理自相交:
原始表面 简单偏移 修正后
___ ___ ___ ___ ___ ___
| \__/ | | |\\__//| | | \__/ |
| | | | \/ | | | | | |
|__________| |_|______|_| |__|____|__|
自相交区域 合并处理
体素化空心化:
- 将模型体素化
- 腐蚀操作去除内部体素
- 保留指定厚度的外壳
- 重新提取表面mesh
13.2.3 内部支撑结构
对于大型空心模型,需要内部支撑防止变形:
晶格填充(Lattice Infill):
常见晶格类型:
1. 立方晶格 2. 八面体晶格 3. Gyroid最小曲面
*---*---* * * * ∿∿∿∿∿∿
| | | / \ / \ / \ ∿∿∿∿∿∿
*---*---* *---*---*---* ∿∿∿∿∿∿
| | | \ / \ / \ / ∿∿∿∿∿∿
*---*---* * * * ∿∿∿∿∿∿
Gyroid函数:$\sin(x)\cos(y) + \sin(y)\cos(z) + \sin(z)\cos(x) = 0$
13.2.4 排水孔设计
空心模型需要排水孔排出未固化材料:
排水孔位置优化:
1. 计算模型的稳定放置姿态
2. 在底部选择不影响外观的位置
3. 孔径计算:d = max(2mm, 0.1×模型最小尺寸)
4. 验证排水路径连通性
13.3 支撑结构自动生成
支撑是打印悬垂结构的必要条件,良好的支撑设计能确保打印成功并易于移除。
13.3.1 悬垂分析
临界角检测:
θ_critical = 45° (FDM) 或 30° (SLA)
对每个三角形:
θ = arccos(|n_z|) // n_z是法线z分量
if θ > θ_critical:
标记为需要支撑
悬垂区域聚类:
模型截面 悬垂检测 支撑点生成
_________ _________ _________
/ \ /######### \ /#o#o#o## \
| | => | | => | o |
| ___ | | ### | | #o# |
\__/ \__/ \__/###\__/ \__/|o|\__/
需支撑区域 支撑柱位置
13.3.2 树状支撑生成
树状支撑相比传统支撑节省材料且易于移除:
生长算法:
1. 识别所有需支撑的点集P
2. 初始化:每个点创建向下的枝干
3. 迭代合并:
while 存在可合并的枝干:
选择距离最近的枝干对(b1, b2)
if 合并角度 < 阈值:
在合适高度创建分叉点
合并为新枝干
4. 延伸主干到打印平台
分叉角度优化: 最优分叉角满足最小材料原则(Steiner树问题): $$\theta_{optimal} = 120° \text{ (三分叉)}$$
13.3.3 支撑密度与模式
自适应密度: 根据局部载荷调整支撑密度:
载荷估计:
F(x,y) = ∫∫_R ρ·g·h(x',y') K(x-x', y-y') dx'dy'
其中:
- ρ是材料密度
- h是高度函数
- K是影响核函数
支撑模式:
1. 网格模式 2. 线性模式 3. 同心圆模式
####____#### |||||||||||| ___---___
####____#### |||||||||||| __--___--__
####____#### |||||||||||| _--_____--_
####____#### |||||||||||| -----------
13.3.4 可拆卸接口设计
接触面积优化:
- 点接触:易拆除但稳定性差
- 线接触:平衡稳定性和可拆性
- 面接触:稳定但难拆除
锯齿接口:
模型表面
_/\_/\_/\_
支撑顶端
锯齿参数:
- 齿高: 0.2-0.3mm
- 齿距: 0.8-1.0mm
13.4 切片算法与G-code生成
切片是将3D模型转换为2D层的过程,G-code则是控制打印机运动的指令序列。高质量的切片算法直接影响打印精度和效率。
13.4.1 基础切片算法
平面-三角形相交: 对于z=h的切片平面,与三角形(v₀,v₁,v₂)的交线计算:
三角形与平面相交的三种情况:
1. 穿过两条边 2. 穿过一顶点一边 3. 平行于一边
v₂ v₂ v₂----v₁
/ \ / \ | |
===p₁==p₂=== ===*====p=== ===|====|===
/ \ / \ | |
v₀------v₁ v₀------v₁ v₀----z=h
扫描线算法:
对每个高度h:
1. 找出所有与z=h相交的三角形
2. 计算交线段集合L
3. 连接线段形成轮廓:
while L非空:
选择一条线段s
轮廓C = [s]
while 未闭合:
找到共享端点的下一线段
添加到轮廓C
4. 识别外轮廓和内轮廓(孔洞)
13.4.2 自适应层高
根据局部曲率动态调整层高,平衡质量与速度:
曲率驱动的层高: $$h(z) = h_{min} + (h_{max} - h_{min}) \cdot \exp(-k \cdot |\kappa(z)|)$$ 其中$\kappa(z)$是z高度处的最大曲率。
陡峭区域(细层) 平缓区域(粗层) 自适应结果
_____ _____ _____
|||||| | | ||||||
|||||| | | ||||||
|||||| | | |||||
|||||| | | ||||
|||||| |_____| |||
|||||| ||
|||||| |_____|
13.4.3 路径规划
填充模式生成:
- 直线填充(Rectilinear):
轮廓内部填充算法:
1. 生成平行线族:y = y₀ + i·spacing
2. 计算每条线与轮廓的交点
3. 配对交点生成填充线段
4. 每层旋转角度避免弱点累积
第n层(0°) 第n+1层(90°)
═══════ ║ ║ ║ ║
═══════ ║ ║ ║ ║
═══════ ║ ║ ║ ║
- 蜂窝填充(Honeycomb):
六边形tessellation:
__ __ __
/ \__/ \__/ \
\__/ \__/ \__/
/ \__/ \__/ \
\__/ \__/ \__/
- 螺旋填充(Spiral): 从外向内连续螺旋,减少抬笔次数。
路径优化: 最短路径问题(类TSP):
贪心算法:
1. 从当前位置开始
2. 选择最近的未访问线段
3. 移动到该线段的近端
4. 打印线段
5. 重复直到所有线段打印完成
13.4.4 G-code生成
基础G-code指令:
; 初始化
G28 ; 归零
G92 E0 ; 重置挤出器
M104 S200 ; 设置喷头温度
M140 S60 ; 设置热床温度
; 移动和挤出
G0 F9000 X100 Y100 ; 快速移动
G1 F1200 X110 Y100 E0.5 ; 挤出移动
G1 Z0.3 ; Z轴移动
; 回抽与填充
G1 E-1 F2400 ; 回抽1mm
G0 X120 Y120 ; 移动
G1 E1 F2400 ; 填充1mm
挤出量计算: $$E = \frac{L \cdot W \cdot H}{\pi \cdot (d/2)^2}$$ 其中:
- L: 线段长度
- W: 线宽
- H: 层高
- d: 丝材直径
速度规划:
加速度限制下的速度曲线:
___________
/ \
/ \
/ \
加速 匀速 减速
梯形速度规划:
v(t) = min(v_max, a·t, a·(t_total-t))
13.4.5 特殊结构处理
桥接(Bridging):
悬空桥接优化:
支撑柱 桥接段 支撑柱
║ ========= ║
║ ║
参数调整:
- 降低速度: 50-70%
- 增加冷却: 100%
- 减少流量: 90-95%
缝合点优化: 每层的起始/结束点位置优化,隐藏在角落或内部:
缝合点选择算法:
1. 计算轮廓的凹角点
2. 如果无凹角,选择最锐角
3. 对齐相邻层的缝合点
4. 避免在可见面上
13.5 多材料打印的网格准备
多材料打印可实现复杂的机械和美学特性,但需要特殊的模型准备。
13.5.1 材料区域分割
基于属性的分割:
输入:单一mesh + 材料属性函数
输出:多个不重叠的子mesh
分割方法:
1. 体素化分割
2. 基于顶点着色
3. 隐式函数分割
界面网格生成:
材料A 界面层 材料B
######## ≈≈≈≈≈≈≈≈ ********
######## ≈≈≈≈≈≈≈≈ ********
######## ≈≈≈≈≈≈≈≈ ********
界面厚度 = 2-3层高
13.5.2 材料转换策略
渐变过渡:
混合比例函数:
r(x) = 0.5 * (1 + tanh(k*(x-x₀)/w))
其中:
- x₀: 转换中心
- w: 过渡宽度
- k: 陡度参数
离散层转换:
层级材料分配:
Layer 1-10: Material A (100%)
Layer 11-12: A(75%) + B(25%)
Layer 13-14: A(50%) + B(50%)
Layer 15-16: A(25%) + B(75%)
Layer 17+: Material B (100%)
13.5.3 多喷头路径协调
防碰撞规划:
喷头1轨迹: ----→----→
喷头2轨迹: ←----←----
时间分片调度:
t₀-t₁: 喷头1打印区域A
t₁-t₂: 喷头2打印区域B(A远离)
t₂-t₃: 同时打印(保持安全距离)
颜色混合: CMYK到喷头映射:
# 5喷头系统(CMYK+W)
def color_to_extrusion(rgb):
cmyk = rgb_to_cmyk(rgb)
white = min(cmyk)
return {
'C': cmyk[0] - white,
'M': cmyk[1] - white,
'Y': cmyk[2] - white,
'K': cmyk[3],
'W': white
}
13.5.4 支撑材料优化
可溶性支撑:
- PVA(水溶)配合PLA
- HIPS(柠檬烯溶)配合ABS
- 界面层使用主材料确保附着
断离式支撑:
主材料
══════════
∙∙∙∙∙∙∙∙∙∙ ← 界面层(低密度)
▓▓▓▓▓▓▓▓▓▓ ← 支撑材料
13.6 高级话题
13.6.1 拓扑优化
SIMP方法(Solid Isotropic Material with Penalization): $$\min_{\rho} \: c^T u$$ $$\text{s.t.} \: K(\rho)u = f$$ $$\quad\quad V(\rho) \leq V_{max}$$ $$\quad\quad 0 < \rho_{min} \leq \rho \leq 1$$ 其中$\rho$是密度场,$K$是刚度矩阵。
水平集方法:
初始设计 优化迭代 最终结果
████████ ███ ███ ██ ██
████████ → ██ ██ → █ ██ █
████████ ███ ███ ██ ██
保留高应力区域,去除低应力区域
13.6.2 晶格结构设计
三周期最小曲面(TPMS):
-
Schwarz P曲面: $$\cos(x) + \cos(y) + \cos(z) = 0$$
-
Gyroid曲面: $$\sin(x)\cos(y) + \sin(y)\cos(z) + \sin(z)\cos(x) = 0$$
-
Diamond曲面: $$\sin(x)\sin(y)\sin(z) + \sin(x)\cos(y)\cos(z) + \cos(x)\sin(y)\cos(z) + \cos(x)\cos(y)\sin(z) = 0$$ 梯度晶格:
密度场驱动的晶格:
def lattice_thickness(x, y, z):
stress = compute_stress(x, y, z)
return t_min + (t_max - t_min) * (stress/max_stress)**p
13.6.3 4D打印
时间响应材料的几何编程:
双层结构设计:
打印状态: 激活后:
═══════ ╭─────╮
═══════ → │ │
═══════ ╰─────╯
上层:收缩材料
下层:稳定材料
应变分布优化: 目标形状反向设计初始打印图案: $$\varepsilon_{print} = J^{-1} \cdot \varepsilon_{target}$$
13.6.4 仿生结构
骨小梁结构:
Voronoi骨架生成:
1. 根据应力场放置种子点
2. 生成3D Voronoi图
3. 提取边缘作为骨架
4. 变径管道建模
分形支撑:
L-system树状生成:
Axiom: F
Rules: F → F[+F][-F]F
Angle: 30°
迭代深度控制分支复杂度
本章小结
本章系统介绍了3D打印对mesh模型的特殊要求和处理技术。关键要点包括:
几何约束:
- 水密性是打印的基本要求,需要封闭的二维流形
- 欧拉公式$V - E + F = 2(1-g)$用于验证拓扑完整性
- 最小壁厚通常为喷嘴直径的2-3倍
核心算法:
- 切片算法将3D转换为2D层序列
- 支撑生成需考虑临界角(FDM: 45°, SLA: 30°)
- 路径规划影响打印时间和质量
优化技术:
- 空心化减少材料用量:$V_{hollow} = V_{outer} - V_{inner}$
- 自适应层高:$h(z) = h_{min} + (h_{max} - h_{min}) \cdot \exp(-k|\kappa(z)|)$
- 拓扑优化实现最优材料分布
高级应用:
- TPMS晶格提供优异的强度重量比
- 多材料打印需要界面层过渡
- 4D打印通过材料编程实现形状变化
掌握这些技术是实现高质量3D打印的关键,需要综合考虑几何、材料和工艺约束。
练习题
基础题
练习13.1:水密性检查 给定一个包含1000个三角形的mesh,其中V=502,E=1500,F=1000。判断该mesh是否可能是水密的?如果不是,最可能的问题是什么?
答案
根据欧拉公式$V - E + F = 2$(对于封闭mesh): 502 - 1500 + 1000 = 2 ✓
数值满足欧拉公式,但还需检查:
- 每条边是否恰好被2个三角形共享
- 是否存在非流形顶点
- 法线方向是否一致
最可能的问题是存在边界边或非流形结构。
练习13.2:壁厚计算 一个空心球体外径10mm,要求最小壁厚1.2mm。如果采用0.4mm喷嘴,应该设置多少层壁?内径应该是多少?
答案
喷嘴直径:0.4mm 最小壁厚:1.2mm 所需层数:1.2 / 0.4 = 3层
外半径:5mm 内半径:5 - 1.2 = 3.8mm 内径:7.6mm
建议设置3-4层壁以确保强度。
练习13.3:支撑角度 使用FDM打印,临界角为45°。一个三角形的法线向量为n=(0.6, 0, -0.8),该面是否需要支撑?
答案
悬垂角计算: $\theta = \arccos(|n_z|) = \arccos(0.8) = 36.87°$
因为36.87° < 45°,所以不需要支撑。
注:法线向下(n_z < 0)表示底面朝下。
挑战题
练习13.4:切片优化 设计一个算法,对于给定的CAD模型,自动确定最优的打印方向以最小化支撑材料。考虑哪些因素?
提示与答案
优化目标函数: $$\min_{\theta, \phi} \: w_1 \cdot A_{support} + w_2 \cdot H + w_3 \cdot A_{contact}$$ 考虑因素:
- 支撑面积$A_{support}$:需支撑的表面积
- 打印高度$H$:影响打印时间
- 接触面积$A_{contact}$:影响表面质量
- 特征保护:避免支撑在关键表面
算法:
- 采样多个方向(如正二十面体顶点)
- 对每个方向计算目标函数
- 使用梯度下降细化最优方向
- 验证稳定性和可打印性
练习13.5:晶格设计 给定一个40×40×40mm的立方体,设计一个Gyroid晶格填充,使得体积分数为30%,估算所需的壁厚。
提示与答案
Gyroid方程:$\sin(x)\cos(y) + \sin(y)\cos(z) + \sin(z)\cos(x) = t$
对于30%体积分数:
- 单元尺寸:选择5mm(8×8×8个单元)
- 等值面参数:$t \approx 0.5$对应约30%体积
- 壁厚估算:$t_{wall} \approx 0.3 \times L_{unit} / \pi \approx 0.48mm$
验证:
- 确保壁厚 > 最小可打印厚度(通常0.4mm)
- 考虑连通性和机械强度
练习13.6:多材料界面 设计一个算法,在硬材料A和软材料B之间生成渐变过渡区,过渡宽度为5mm,共10层(每层0.5mm)。
提示与答案
材料混合函数:
def material_ratio(z, z_interface, width=5.0):
if z < z_interface - width/2:
return (1.0, 0.0) # 100% A
elif z > z_interface + width/2:
return (0.0, 1.0) # 100% B
else:
t = (z - (z_interface - width/2)) / width
# 使用S曲线平滑过渡
s = 3*t**2 - 2*t**3
return (1-s, s)
# 10层的混合比例
for i in range(10):
z = i * 0.5
ratio_A, ratio_B = material_ratio(z, 2.5, 5.0)
层分配:
- Layer 0-1: 100% A
- Layer 2-3: 75% A, 25% B
- Layer 4-5: 50% A, 50% B
- Layer 6-7: 25% A, 75% B
- Layer 8-9: 100% B
练习13.7:拓扑优化 对于一个悬臂梁(100×20×20mm),固定端在左,右端承受向下10N的力。使用SIMP方法,描述优化迭代的主要步骤。
提示与答案
SIMP优化流程:
-
初始化: - 均匀密度分布$\rho = 0.5$ - 目标体积:30%原始体积
-
有限元分析: - 划分网格(如100×20×20体素) - 计算刚度矩阵:$K = \sum \rho_e^p K_e$ - 求解位移:$Ku = f$
-
灵敏度分析: $$\frac{\partial c}{\partial \rho_e} = -p\rho_e^{p-1}u_e^T K_e u_e$$
-
优化更新(OC方法): $$\rho_e^{new} = \max(0, \rho_e - m) \text{ if } B_e\rho_e \leq \max(0, \rho_e - m)$$
-
收敛判断: $$|\rho^{new} - \rho^{old}| < \epsilon$$
预期结果:形成类似桁架的结构,材料集中在高应力路径。
练习13.8:G-code生成 为一个20×20mm的正方形生成螺旋填充的G-code片段。层高0.2mm,线宽0.4mm,填充密度20%。
提示与答案
螺旋填充G-code示例:
; 正方形螺旋填充
G92 E0 ; 重置挤出器
G1 F1500 ; 设置进给速度
; 外轮廓
G1 X0 Y0 Z0.2
G1 X20 Y0 E0.53 ; 挤出量 = 20*0.4*0.2/(π*0.875²)
G1 X20 Y20 E1.06
G1 X0 Y20 E1.59
G1 X0 Y0.4 E2.11 ; 偏移0.4mm
; 螺旋填充(20%密度,间距2mm)
G1 X0.4 Y0.4
G1 X19.6 Y0.4 E2.62
G1 X19.6 Y2.4 E2.67
G1 X2.4 Y2.4 E3.13
G1 X2.4 Y4.4 E3.18
; ... 继续螺旋
; 计算总填充长度
; 面积 = 400mm²
; 20%填充 = 80mm²
; 线长 = 80/0.4 = 200mm
常见陷阱与错误
几何错误
-
反向法线:导致切片器误判内外 - 解决:统一法线方向,确保指向外部
-
微小孔洞:肉眼难见但影响水密性 - 解决:使用自动检测工具,设置合理容差
-
重叠面:相同位置的重复三角形 - 解决:去重算法,合并容差内的顶点
打印失败原因
-
首层附着:第一层是成功的关键 - 调平打印床 - 适当的首层高度(通常150%标准层高) - 合适的床温和材料
-
支撑脱落:支撑中途断裂 - 增加支撑密度 - 改善支撑接触面 - 降低打印速度
-
翘曲变形:大平面易翘边 - 添加防翘边(Brim) - 控制环境温度 - 优化冷却策略
优化误区
-
过度空心化:壁太薄导致强度不足 - 保持最小3层壁厚 - 关键受力部位局部加强
-
忽视各向异性:FDM打印的层间结合弱 - 考虑载荷方向 - 调整打印方向或加强层间结合
-
过度依赖支撑:支撑过多影响表面质量 - 优化模型设计减少悬垂 - 分件打印后组装
最佳实践检查清单
模型准备阶段
- [ ] 检查模型水密性(无孔洞、裂缝)
- [ ] 验证法线方向一致性
- [ ] 确认壁厚满足最小要求(>3层厚度)
- [ ] 修复所有非流形结构
- [ ] 检查模型尺寸是否在打印范围内
- [ ] 优化打印方向以减少支撑
切片设置
- [ ] 选择合适的层高(0.1-0.3mm)
- [ ] 设置正确的喷嘴温度和床温
- [ ] 配置合理的打印速度(首层减速50%)
- [ ] 选择适当的填充密度(15-30%常规,50%+高强度)
- [ ] 启用回抽防止拉丝
- [ ] 设置合适的支撑参数
材料相关
- [ ] 确认材料干燥(特别是尼龙、PVA)
- [ ] 校准挤出倍率(E-steps)
- [ ] 测试温度塔确定最佳温度
- [ ] 考虑材料收缩率(ABS约0.8%)
- [ ] 多材料打印时检查兼容性
后处理规划
- [ ] 设计易拆除的支撑接口
- [ ] 预留打磨、涂装的余量
- [ ] 考虑组装公差(0.1-0.2mm)
- [ ] 标记关键尺寸用于质检
- [ ] 准备必要的后处理工具
质量控制
- [ ] 首件打印前进行预览检查
- [ ] 监控首层打印质量
- [ ] 定期检查喷嘴堵塞
- [ ] 记录成功的打印参数
- [ ] 建立材料-参数数据库