From 6c2aa50193f497a51fffc4086b4b1d9463334350 Mon Sep 17 00:00:00 2001 From: yw1573 Date: Tue, 28 Jul 2026 13:57:10 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README=E5=92=8C?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E8=87=B3v0.6.0=EF=BC=8C=E5=90=AB=E6=9C=80?= =?UTF-8?q?=E6=96=B0GUI=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 47 ++++++++++++++++++++++++------------- docs/how_it_works.md | 18 +++++++------- docs/swap_gcode_analysis.md | 2 +- 3 files changed, 42 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 22840f8..cd3f02d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # A1 Swap Mod Packer -当前版本:**v0.5.0** +当前版本:**v0.6.0** A1 Swap Mod Packer 是一个开源的 3MF 打包工具,专为 Bambu Lab A1 SwapMod 工作流设计。 @@ -35,7 +35,7 @@ A1 Swap Mod Packer 是一个开源的 3MF 打包工具,专为 Bambu Lab A1 Swa ## 源码安装 -推荐 Python 3.10 及以上。 +推荐 Python 3.13 及以上(Nuitka 4.x 对 3.14 仅实验性支持)。Python 3.10+ 亦可使用。 安装依赖: @@ -105,7 +105,8 @@ build/onefile/ a1packer-cli.exe gcode_patches.ini swap_gcode/ - settings.json 可选;GUI 保存设置后自动生成 + x.png 输出预览图示例 + settings.json 可选;GUI 保存设置后自动生成 ``` 外部资源刻意保留在可执行文件外部。不要将这些文件打包进 onefile 二进制: @@ -132,7 +133,7 @@ settings.json 在干净的虚拟环境中安装 Python 依赖: ```cmd -py -3.12 -m venv .venv +py -3.13 -m venv .venv .venv\Scripts\python.exe -m pip install --upgrade pip .venv\Scripts\python.exe -m pip install -r requirements.txt .venv\Scripts\python.exe -m pip install "Nuitka[onefile]" @@ -299,6 +300,8 @@ swap_gcode/ 这不会自动更改已有行。对已有行使用 **应用默认份数至选中行**。 +> 提示:所有数值输入框均为纯数字输入(QLineEdit),无上下箭头,可直接键入任意数值。 + ### 热床降温 控制是否在 SwapMod G-code 块之前插入热床等待温度。 @@ -313,12 +316,12 @@ M190 S45 ### 换盘后等待时间 -在 SwapMod G-code 块之后添加驻留时间。 +勾选框控制是否在换盘 G-code 块之后插入驻留时间。 -45 秒示例: +默认 30 秒,可通过纯数字输入框(QLineEdit)调整: ```gcode -G4 P45000 +G4 P30000 ``` ### 剩余时间板号 @@ -357,11 +360,11 @@ gcode_patches.ini 选项: -- **保留原始预测和重量** - 保持基础 3MF 中 `slice_info.config` 的预测和重量值不变。这与观察到的厂商打包器行为最一致。 +- **累加预测和耗材用量(默认)** + 使用所有重复面板的总和更新第一块面板的元数据。从统计角度看更合理,适合 SwapMod 场景。 -- **累加预测和耗材用量** - 使用所有重复面板的总和更新第一块面板的元数据。从统计角度看更合理,但可能与厂商软件的表现不同。 +- **保留原始预测和重量** + 保持基础 3MF 中 `slice_info.config` 的预测和重量值不变。 ### 预览图处理 @@ -429,12 +432,12 @@ GUI 并行构建这些独立输出,并发数受 CPU 核心数及安全上限 ### 输入处理 -选项: - - **添加输入时跳过重复文件路径** 防止意外多次添加同一路径。 -- **构建成功后清空输入列表** +### 构建成功后 + +- **清空输入列表** 构建成功后清空表格。在独立批处理模式下,仅当所有输出构建成功后才会清空。 ### 输出目录 @@ -500,6 +503,7 @@ settings.json - ZIP 压缩级别。 - 独立批处理模式。 - 输入处理选项。 +- 构建成功后清空输入列表。 - 输出目录。 - 输出文件名规则。 @@ -585,6 +589,16 @@ python -m a1_swap_mod_packer.cli build \ -o "5 Plates - A.3mf" ``` +禁用换盘后等待时间: + +```bash +python -m a1_swap_mod_packer.cli build \ + --item "A.3mf" 5 \ + --swap-gcode "a1_swap.gcode" \ + --no-eject-wait \ + -o "5 Plates - A.3mf" +``` + CLI 常用选项速查: | 选项 | 含义 | @@ -594,8 +608,9 @@ CLI 常用选项速查: | `--item PATH COPIES` | 添加一个带独立份数的输入;可多次使用 | | 位置参数 `inputs` + `--copies N` | 添加多个使用相同份数的输入 | | `--swap-gcode-dir DIR` | 使用自定义换盘 G-code 目录 | -| `--no-bed-cooldown` | 不在换料块前插入 `M190` | -| `--no-swap-after-final` | 最后一块盘后不执行换料块 | +| `--no-bed-cooldown` | 不在换盘块前插入 `M190` | +| `--no-swap-after-final` | 最后一块盘后不执行换盘块 | +| `--no-eject-wait` | 不插入换盘后等待时间(`G4 P...` 行) | | `--line-ending lf\|crlf` | 选择生成 G-code 的换行符;默认 `crlf` | | `--zip-level 1-9` | zlib-ng Deflate 压缩级别;默认 `7` | | `--no-preview-label` | 不重写预览图标签/合成图 | diff --git a/docs/how_it_works.md b/docs/how_it_works.md index 3e3f99d..14cf3c5 100644 --- a/docs/how_it_works.md +++ b/docs/how_it_works.md @@ -1,6 +1,6 @@ # A1 Swap Mod Packer 工作原理 -**版本**: v0.5.0 | **日期**: 2026-07-27 +**版本**: v0.6.0 | **日期**: 2026-07-27 ## 总览 @@ -11,7 +11,7 @@ flowchart LR A["源 3MF × N 份"] --> B["① 解压读取"] B --> C["② 按份数展开"] C --> D["③ 预处理
(换行/补丁/M73模板)"] - D --> E["④ 逐份加工
(M73偏移/插入换料块)"] + D --> E["④ 逐份加工
(M73偏移/插入换盘块)"] E --> F["⑤ 拼接总G-code"] F --> G["⑥ 写入新3MF
(删除旧gcode/更新元数据/合成预览/压缩)"] G --> H["输出 3MF"] @@ -96,9 +96,9 @@ max_count = 1 ← 最多替换 1 次 打印机显示剩余时间时,**百位数字正好是板号**。 -### 插入换料块 +### 插入换盘块 -在 `;=====printer finish sound=========` 这一行**之前**插入换料代码块: +在 `;=====printer finish sound=========` 这一行**之前**插入换盘代码块: ```gcode M190 S45 ; 等热床降温到 45°C(可选) @@ -107,7 +107,7 @@ G4 P45000 ; 等 45 秒(可选) ``` 最后一份: -- 如果关了"最后换盘" → 不插换料块 +- 如果关了"最后换盘" → 不插换盘块 - 如果关了"最后换盘"但前面都插了 → 最后一份正常结束 --- @@ -136,9 +136,9 @@ G4 P45000 ; 等 45 秒(可选) - 把拼接好的总 G-code 写到原来的 `plate_1.gcode` 成员名(或其 MD5 对应的成员) - 同时写入 `plate_1.gcode.md5`(总 G-code 的 MD5 哈希) -### 更新元数据(可选) +### 更新元数据(默认:累加模式) -如果选了"累加预测和耗材用量",修改 `Metadata/slice_info.config`: +默认累加所有重复份的预测和耗材用量,修改 `Metadata/slice_info.config`: | 字段 | 修改方式 | |------|----------| @@ -225,11 +225,13 @@ python -m a1_swap_mod_packer.cli build \ CLI 做了这些: -1. `argparse` 解析参数(文件、份数、换料模板、冷却温度、等待秒数...) +1. `argparse` 解析参数(文件、份数、换盘模板、冷却温度、等待秒数...) 2. 拼成 `PlateJob` 列表和 `BuildOptions` 3. 调一次 `build_packed_3mf()`(合并模式) 4. 把结果打印到 stdout +新增 `--no-eject-wait` 选项可禁用换盘后等待时间(`G4 P...` 行),与 GUI 中的勾选框对应。 + **所有输入合并成 1 个输出**。参数靠命令行传,没有交互、没有预览。 ### GUI diff --git a/docs/swap_gcode_analysis.md b/docs/swap_gcode_analysis.md index d53b972..828ff68 100644 --- a/docs/swap_gcode_analysis.md +++ b/docs/swap_gcode_analysis.md @@ -1,6 +1,6 @@ # A1 SwapMod 换板 G-code 分析 -**版本**: v0.5.0 | **日期**: 2026-07-27 +**版本**: v0.6.0 | **日期**: 2026-07-27 ## 文件清单