其他
当需要从 3D 网格文件生成、干跑、执行并静态校验普通…
适用于把 .stl、.obj、未切片 .3mf、.ply、.glb、.gltf 按显式打印机 profile 切成 plain .gcode,并在交给打印机特定流程前做校验。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
当需要从 3D 网格文件生成、干跑、执行特定
解决思路
- 仅用于从网格文件生成普通 `.gcode`;保持与打印机无关,绝不上传、启动或打包打印任务。
- 确认输入是支持的网格格式:`.stl`、`.obj`、未切片的 `.3mf`、`.ply`、`.glb` 或 `.gltf`。
- 必须提供显式的打印机/配置 wrapper JSON;不要虚构真实打印机 profile。
- 后端未知时运行 `python scripts/gcode_tool.py discover` 发现本地切片器后端。
- 用 `python scripts/gcode_tool.py inspect --input path/to/model.stl --json` 检查输入。
- 执行前先干跑切片命令:`python scripts/gcode_tool.py slice --input path/to/model.stl --output /tmp/model.gcode --profile path/to/profile.json --backend auto --dry-run`。
- 仅在干跑命令和 profile 合适后执行:`python scripts/gcode_tool.py slice --input path/to/model.stl --output /tmp/model.gcode --profile path/to/profile.json --backend auto --execute`。
- 校验生成的 G-code:`python scripts/gcode_tool.py validate --gcode /tmp/model.gcode --profile path/to/profile.json --json`。
- 每次切片都要求 wrapper profile JSON,且包含 native slicer profile 的绝对路径。wrapper 字段包括 `backend`、`native_config`、`machine`(`name`、`bed_size_mm`、`z_height_mm`、可选 `motion_bounds_mm`)和 `filament`(`type`、`nozzle_temp_c`、`bed_temp_c`)。
- wrapper 提供校验边界和后端选择;`machine.motion_bounds_mm` 可选:省略时默认 `0..bed_size` 和 `0..z_height`;当 start/end G-code 有意在可打印区域外使用安全 wipe/purge 位置时,从原生打印机 profile 设置它。原生切片器 profile 仍是详细 process/printer/filament 行为的来源。
- 对 OrcaSlicer,当真实 profile 拆分为 machine、process、filament JSON 文件时,使用 `native_settings` 和 `native_filaments`;同时保留 `native_config` 为指向主原生 profile 的绝对路径以兼容。
- 后端优先顺序为 `orcaslicer`、`prusa-slicer`、`curaengine`。
- 没有首选后端时优先安装 OrcaSlicer;在 macOS 使用 `brew install --cask orcaslicer`,然后重新运行 `discover`。辅助脚本会检查 `PATH` 和常见 cask 位置 `/Applications/OrcaSlicer.app`。
- Bambu Studio 可能被 discovery 报告为可用,但不首选,因为它的 CLI 导出路径在 macOS 上表现出不稳定性。
- 将 `.stl`、`.obj` 和未切片的 `.3mf` 直接传给切片器。
- 在执行时用可选的 `trimesh` 将 `.ply`、`.glb`、`.gltf` 转换为临时 STL;如果 `trimesh` 不可用,要求用户安装它,或提供 `.stl`、`.obj` 或未切片的 `.3mf`。
- 在 v1 拒绝 `.step`、`.stp`、`.dxf`、`.svg`、`.urdf`、`.sdf`。`inspect` 和 `slice` 会失败并返回结构化 `remediation` 对象,指出可生成可切片网格的技能和命令;使用它,不要自行推断转换工作流。
- 对 `.step`/`.stp`:它们是边界表示 CAD,不是网格。用 `$cad` 导出 STL sidecar(`cadgen stl build <input.step> <output>.stl`;door 接收 STEP 文档;模型脚本会被拒绝,先运行 `python <model>.py`),然后在这里切片导出的 `.stl`。
- 对 `.dxf`/`.svg`:它们是 2D 图纸,本工具链没有 2D 到网格转换。在 `$cad` 中作为 `@step` 模型脚本建模 3D 实体并导出 STL sidecar,然后切片。如果零件是平面切割而不是打印,改用 `$sendcutsend` 而不是此技能。
- 对 `.urdf`/`.sdf`:它们是机器人描述,引用各 link 的网格文件。逐个切片被引用的 `.stl`/`.obj` 网格;先用 `$cad` 从所属 CAD 源重新生成过期或缺失的网格。机器人描述本身使用 `$urdf` 或 `$sdf`。
- 当后端行为、profile 期望或来源链接重要时,阅读 `references/slicer-backends.md`。
- 在将 G-code 交给打印机特定工作流前,始终校验生成的 G-code。校验器检查非空内容、温度命令、移动命令、挤出移动、XYZ 边界和未知命令警告。
- 当解释校验输出或决定某个警告是否可接受时,阅读 `references/gcode-validation.md`。
- 此技能只生成普通 `.gcode`,不创建 Bambu `.gcode.3mf` 归档,也不联系打印机。
- 对 Bambu 上传/启动工作流,将已校验的普通 `.gcode` 交给 `$bambu-labs`。让 `$bambu-labs` 选择打印机特定的 LAN 交接方式,例如 A1 Mini 模板项目或显式启用的 bambox 项目包。
适用边界 · 注意事项
- 不适用于 `.step`、`.stp`、`.dxf`、`.svg`、`.urdf`、`.sdf` 等 v1 拒绝的输入,除非先按 remediation 转成可切片网格;`.dxf`、`.svg` 平面切割用 `$sendcutsend`。
- 不适用于 Bambu 上传/启动、创建 `.gcode.3mf` 归档、联系打印机或任何打印机特定交接;这些交给 `$bambu-labs`。
- 在没有显式真实打印机/profile wrapper JSON,或没有可用本地切片器后端时不要切片;不要虚构真实打印机 profile。