docs: 更新README和文档至v0.6.0,含最新GUI变更
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# A1 Swap Mod Packer
|
# A1 Swap Mod Packer
|
||||||
|
|
||||||
当前版本:**v0.5.0**
|
当前版本:**v0.6.0**
|
||||||
|
|
||||||
A1 Swap Mod Packer 是一个开源的 3MF 打包工具,专为 Bambu Lab A1 SwapMod 工作流设计。
|
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
|
a1packer-cli.exe
|
||||||
gcode_patches.ini
|
gcode_patches.ini
|
||||||
swap_gcode/
|
swap_gcode/
|
||||||
settings.json 可选;GUI 保存设置后自动生成
|
x.png 输出预览图示例
|
||||||
|
settings.json 可选;GUI 保存设置后自动生成
|
||||||
```
|
```
|
||||||
|
|
||||||
外部资源刻意保留在可执行文件外部。不要将这些文件打包进 onefile 二进制:
|
外部资源刻意保留在可执行文件外部。不要将这些文件打包进 onefile 二进制:
|
||||||
@@ -132,7 +133,7 @@ settings.json
|
|||||||
在干净的虚拟环境中安装 Python 依赖:
|
在干净的虚拟环境中安装 Python 依赖:
|
||||||
|
|
||||||
```cmd
|
```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 --upgrade pip
|
||||||
.venv\Scripts\python.exe -m pip install -r requirements.txt
|
.venv\Scripts\python.exe -m pip install -r requirements.txt
|
||||||
.venv\Scripts\python.exe -m pip install "Nuitka[onefile]"
|
.venv\Scripts\python.exe -m pip install "Nuitka[onefile]"
|
||||||
@@ -299,6 +300,8 @@ swap_gcode/
|
|||||||
|
|
||||||
这不会自动更改已有行。对已有行使用 **应用默认份数至选中行**。
|
这不会自动更改已有行。对已有行使用 **应用默认份数至选中行**。
|
||||||
|
|
||||||
|
> 提示:所有数值输入框均为纯数字输入(QLineEdit),无上下箭头,可直接键入任意数值。
|
||||||
|
|
||||||
### 热床降温
|
### 热床降温
|
||||||
|
|
||||||
控制是否在 SwapMod G-code 块之前插入热床等待温度。
|
控制是否在 SwapMod G-code 块之前插入热床等待温度。
|
||||||
@@ -313,12 +316,12 @@ M190 S45
|
|||||||
|
|
||||||
### 换盘后等待时间
|
### 换盘后等待时间
|
||||||
|
|
||||||
在 SwapMod G-code 块之后添加驻留时间。
|
勾选框控制是否在换盘 G-code 块之后插入驻留时间。
|
||||||
|
|
||||||
45 秒示例:
|
默认 30 秒,可通过纯数字输入框(QLineEdit)调整:
|
||||||
|
|
||||||
```gcode
|
```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 压缩级别。
|
- ZIP 压缩级别。
|
||||||
- 独立批处理模式。
|
- 独立批处理模式。
|
||||||
- 输入处理选项。
|
- 输入处理选项。
|
||||||
|
- 构建成功后清空输入列表。
|
||||||
- 输出目录。
|
- 输出目录。
|
||||||
- 输出文件名规则。
|
- 输出文件名规则。
|
||||||
|
|
||||||
@@ -585,6 +589,16 @@ python -m a1_swap_mod_packer.cli build \
|
|||||||
-o "5 Plates - A.3mf"
|
-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 常用选项速查:
|
CLI 常用选项速查:
|
||||||
|
|
||||||
| 选项 | 含义 |
|
| 选项 | 含义 |
|
||||||
@@ -594,8 +608,9 @@ CLI 常用选项速查:
|
|||||||
| `--item PATH COPIES` | 添加一个带独立份数的输入;可多次使用 |
|
| `--item PATH COPIES` | 添加一个带独立份数的输入;可多次使用 |
|
||||||
| 位置参数 `inputs` + `--copies N` | 添加多个使用相同份数的输入 |
|
| 位置参数 `inputs` + `--copies N` | 添加多个使用相同份数的输入 |
|
||||||
| `--swap-gcode-dir DIR` | 使用自定义换盘 G-code 目录 |
|
| `--swap-gcode-dir DIR` | 使用自定义换盘 G-code 目录 |
|
||||||
| `--no-bed-cooldown` | 不在换料块前插入 `M190` |
|
| `--no-bed-cooldown` | 不在换盘块前插入 `M190` |
|
||||||
| `--no-swap-after-final` | 最后一块盘后不执行换料块 |
|
| `--no-swap-after-final` | 最后一块盘后不执行换盘块 |
|
||||||
|
| `--no-eject-wait` | 不插入换盘后等待时间(`G4 P...` 行) |
|
||||||
| `--line-ending lf\|crlf` | 选择生成 G-code 的换行符;默认 `crlf` |
|
| `--line-ending lf\|crlf` | 选择生成 G-code 的换行符;默认 `crlf` |
|
||||||
| `--zip-level 1-9` | zlib-ng Deflate 压缩级别;默认 `7` |
|
| `--zip-level 1-9` | zlib-ng Deflate 压缩级别;默认 `7` |
|
||||||
| `--no-preview-label` | 不重写预览图标签/合成图 |
|
| `--no-preview-label` | 不重写预览图标签/合成图 |
|
||||||
|
|||||||
+10
-8
@@ -1,6 +1,6 @@
|
|||||||
# A1 Swap Mod Packer 工作原理
|
# 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["① 解压读取"]
|
A["源 3MF × N 份"] --> B["① 解压读取"]
|
||||||
B --> C["② 按份数展开"]
|
B --> C["② 按份数展开"]
|
||||||
C --> D["③ 预处理<br/>(换行/补丁/M73模板)"]
|
C --> D["③ 预处理<br/>(换行/补丁/M73模板)"]
|
||||||
D --> E["④ 逐份加工<br/>(M73偏移/插入换料块)"]
|
D --> E["④ 逐份加工<br/>(M73偏移/插入换盘块)"]
|
||||||
E --> F["⑤ 拼接总G-code"]
|
E --> F["⑤ 拼接总G-code"]
|
||||||
F --> G["⑥ 写入新3MF<br/>(删除旧gcode/更新元数据/合成预览/压缩)"]
|
F --> G["⑥ 写入新3MF<br/>(删除旧gcode/更新元数据/合成预览/压缩)"]
|
||||||
G --> H["输出 3MF"]
|
G --> H["输出 3MF"]
|
||||||
@@ -96,9 +96,9 @@ max_count = 1 ← 最多替换 1 次
|
|||||||
|
|
||||||
打印机显示剩余时间时,**百位数字正好是板号**。
|
打印机显示剩余时间时,**百位数字正好是板号**。
|
||||||
|
|
||||||
### 插入换料块
|
### 插入换盘块
|
||||||
|
|
||||||
在 `;=====printer finish sound=========` 这一行**之前**插入换料代码块:
|
在 `;=====printer finish sound=========` 这一行**之前**插入换盘代码块:
|
||||||
|
|
||||||
```gcode
|
```gcode
|
||||||
M190 S45 ; 等热床降温到 45°C(可选)
|
M190 S45 ; 等热床降温到 45°C(可选)
|
||||||
@@ -107,7 +107,7 @@ G4 P45000 ; 等 45 秒(可选)
|
|||||||
```
|
```
|
||||||
|
|
||||||
最后一份:
|
最后一份:
|
||||||
- 如果关了"最后换盘" → 不插换料块
|
- 如果关了"最后换盘" → 不插换盘块
|
||||||
- 如果关了"最后换盘"但前面都插了 → 最后一份正常结束
|
- 如果关了"最后换盘"但前面都插了 → 最后一份正常结束
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -136,9 +136,9 @@ G4 P45000 ; 等 45 秒(可选)
|
|||||||
- 把拼接好的总 G-code 写到原来的 `plate_1.gcode` 成员名(或其 MD5 对应的成员)
|
- 把拼接好的总 G-code 写到原来的 `plate_1.gcode` 成员名(或其 MD5 对应的成员)
|
||||||
- 同时写入 `plate_1.gcode.md5`(总 G-code 的 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 做了这些:
|
CLI 做了这些:
|
||||||
|
|
||||||
1. `argparse` 解析参数(文件、份数、换料模板、冷却温度、等待秒数...)
|
1. `argparse` 解析参数(文件、份数、换盘模板、冷却温度、等待秒数...)
|
||||||
2. 拼成 `PlateJob` 列表和 `BuildOptions`
|
2. 拼成 `PlateJob` 列表和 `BuildOptions`
|
||||||
3. 调一次 `build_packed_3mf()`(合并模式)
|
3. 调一次 `build_packed_3mf()`(合并模式)
|
||||||
4. 把结果打印到 stdout
|
4. 把结果打印到 stdout
|
||||||
|
|
||||||
|
新增 `--no-eject-wait` 选项可禁用换盘后等待时间(`G4 P...` 行),与 GUI 中的勾选框对应。
|
||||||
|
|
||||||
**所有输入合并成 1 个输出**。参数靠命令行传,没有交互、没有预览。
|
**所有输入合并成 1 个输出**。参数靠命令行传,没有交互、没有预览。
|
||||||
|
|
||||||
### GUI
|
### GUI
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# A1 SwapMod 换板 G-code 分析
|
# A1 SwapMod 换板 G-code 分析
|
||||||
|
|
||||||
**版本**: v0.5.0 | **日期**: 2026-07-27
|
**版本**: v0.6.0 | **日期**: 2026-07-27
|
||||||
|
|
||||||
## 文件清单
|
## 文件清单
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user