几何、切片与发布检查
几何证据
- 对应用修改器和完整世界变换后的实际导出网格检查毫米单位、包围盒、三角面索引、退化面、边界边、非流形边、法线一致性和正体积。闭合并不排除自交。
- 每个独立打印实体应有合理连通性;一体打印允许多个分色实体,通过接触面连接。不要要求所有分色部件合成一个网格,也不要把仅点/线接触视为可靠连接。
- 在打印坐标中分析向下表面、悬空孤岛、下层承托、薄壁和尖端。射线采样可用面中心、边缘和内部网格;记录采样密度、容差、方向及例外。只查顶点不足以发现面内空洞,采样通过不等于严格几何证明。
- 对平面盖板可用二维轮廓包含/差集面积检查宿主覆盖,或将板向宿主移动一段后做体积相交检查;注意尺度与数值容差。不要照搬历史脚本的固定射线距离或面积阈值。
- 分别检查打印平台接触面与展示站立接触面。站立检查报告真实接触区域、重心投影和边缘余量;若接触面分离,用接触点支撑多边形分析静态稳定,并说明实心近似的局限。
3MF 工程
- ZIP 完整性通过后,解析关系、模型资源、部件引用、材质/耗材与 build 项。Bambu 工程可能将网格放在
3D/Objects/*.model,不能只读取主模型文件。 - 资源 ID 可能只在各自模型文档内唯一,按文件路径和 ID 联合解析。计算尺寸与位置时应用完整组件/build 变换;不能仅提取平移量。
- 标准 3MF 变换与厂商元数据矩阵可能格式不同,按各自约定读取。确认打印姿态、部件相对位置、整体落床与打印盘范围;包括擦料塔及机器排除区域。
- 检查耗材编号、显示颜色与挤出机映射,区分零基索引和一基编号。继承已验证工程设置时只修改明确属于耗材的字段,不按“数组长度为 2”批量扩展所有数组。冲刷矩阵、温度、材料和擦料塔设置须匹配当前材料与颜色数。
- 能在目标切片器作为项目打开才是工程可用性的关键证据;显示材质、STL 或 ZIP 无损均不能单独证明这一点。
切片与 G-code
在版本目录运行切片器,避免其 result.json 等默认输出污染根目录。记录切片器版本、输入文件校验值、打印机、喷嘴、材料、首层与后续层高、壁数、填充和支撑设置。先确认当前 CLI 用法,不盲跑历史命令。
核查退出码、结果报告、警告内容、自动修复或删面、支撑、越界、总层数、耗材和用时。意外修复/删面需回查几何,不能以“能切片”自动接受;警告须处理或明确解释后再判断是否适合发布。目标为无支撑时确认实际未生成支撑路径。
按部件和颜色核验实际挤出所在高度/层号、连续层数、相邻色带边界、薄眼条/孔槽/小徽记是否保留。切片预览至少看首层、色带开始/结束、尖端与可疑悬垂层。
工具切换解析应匹配当前切片器方言:区分启动工具选择、真正的颜色切换、重复选择、结束代码和特殊工具命令,不可统计所有 T 行。若解析挤出路径,还要跟踪工具状态、绝对/相对坐标与挤出模式、回抽和挤出坐标重置;正向移动不一定代表有效挤出。
层号报告同时注明索引约定与实际 Z。例如零基索引 100 对应一基第 101 层;明确报告前色末层与后色首层,避免把边界索引当作用户可见层号。
断言预期色带边界和工具序列,不只断言“换色不超过 N 次”。缺失某种颜色也会减少换色次数。若最终工程内嵌 G-code,而报告来自外部 G-code,校验二者一致或明确对应同一切片运行,避免验证旧文件。
发布与追溯
最终报告记录来源文件及 SHA-256、尺寸、部件数、各颜色高度/层范围、工具顺序、实际换色次数、支撑、切片版本/配置、警告、预计时间与用料(说明是否含冲刷/擦料塔)、几何检查结果和未验证事项。
按当前项目约定交付,不预设目录数量、品牌文件名或文档名称:
- 先完成目标工艺所需的模型和切片检查,保留可追溯的源文件与验证记录。
- 若项目有固定发布副本,先将最终文件复制到与目标同一文件系统的临时位置,验证可读性与 SHA-256 一致,再原子替换目标并重新核对。验证失败时保留旧发布版。
- 若没有固定发布机制,直接交付版本清晰的已验证文件,不额外建立发布系统。
- 同步更新项目已有的版本说明或交付清单,记录来源、配置和验证范围。不要未经判断清理任务前遗留文件。
- 没有目标设备或切片器时可交付几何模型与建议参数,但明确标记设备级验证尚未完成,不能作为已验证打印工程发布。
单色模型不需要换色报告,拆件装配需附部件清单、方向和配合说明。仅编写设计方法或修改技能时,不修改具体模型的发布文件。
参考工具链(一套已跑通的组合)
以下来自 Blender 5.x + Bambu Studio 02.08 + A1 mini 的实际迭代,换工具时只借鉴思路,不照抄参数。
- 建模:
blender --background --factory-startup --python create_xxx.py。脚本开头集中定义尺寸、层高、色带 Z 与倒角参数;每个颜色一个对象,导出前应用全部修改器和变换。 - 打包:再用一个 Blender 脚本把分色对象写成同一装配对象的 3MF(每个部件带耗材编号),打印姿态直接落在工程里。
- 切片:
BambuStudio --slice 0 --export-3mf Xxx_Bambu.3mf --outputdir "$(pwd)" --debug 3 Xxx.3mf > slice.log 2>&1。脚本先cd到版本目录——CLI 会把result.json写到当前工作目录;产物是内嵌plate_1.gcode的已切片工程,最终交付它而不是切片前的 3MF。 - 验证:一个
verify_and_publish.py串起全部断言:ZIP 可读 → 从3D/Objects/*.model取网格、从Metadata/model_settings.config取部件矩阵与耗材 → 每块色板厚度与层数 → 解析 G-code 的; CHANGE_LAYER断言总层数和换刀恰好发生在预期层(跳过第一个CHANGE_LAYER之前起始序列里的T0)→result.json的返回码、警告、支撑 → 复制发布并比对 SHA-256。 - 版本目录:每次迭代一个新目录(如
xxx_v5_thick_band/),脚本、源文件、日志、预览、验证 JSON 都放里面,另写一份「设计与打印说明.md」记录改了什么、为什么、层序与复现命令。
踩过的坑:
- 同一形象把眼条做成倾斜立体件时切出 65 次换色;改成两块连续平板(近黑打底 4 层 + 亮色盖顶 4 层)后降到 2 次。
- 圆角半径逼近最短边一半时倒角弧互相吃掉,留下硬折角;取值前先算每个局部短边。
- 为了「藏起来」缩小承托件(如鼻梁)会让上层件(喙)背面外圈悬空;承托轮廓须与上层底面一致或更大。
- 针尖状的喙、耳尖打印效果差:保留 60–80% 轮廓作为顶面的圆台比收成一个点可靠。