refactor: 移除CLI模块,项目改为纯GUI桌面应用

This commit is contained in:
2026-07-28 14:56:49 +08:00
parent ca436b577b
commit 935665e7e8
7 changed files with 14 additions and 451 deletions
+8 -52
View File
@@ -151,7 +151,7 @@ G4 P45000 ; 等 45 秒(可选)
### 合成预览图(可选)
如果启用了预览CLI 中默认开启)
如果启用了预览:
1. 从最多 9 个**不同输入文件**中各取一张 `plate_N.png`(优先取活动面板的预览图)
2. 按网格拼接(1/2/4/6/9 宫格)
@@ -189,66 +189,36 @@ BuildResult(
---
## 两种使用方式
## 使用方式
核心构建函数只有一个:`build_packed_3mf(jobs, options)`CLI 和 GUI 在调用它之前做不同的准备工作。
核心构建函数只有一个:`build_packed_3mf(jobs, options)`,GUI 在调用它之前做不同的准备工作。
```mermaid
flowchart TB
subgraph CLI["CLI 入口: run_cli.py → cli.py"]
C1["argparse 解析参数"] --> C2["收集 --item / 位置参数"]
C2 --> C3["构造 BuildOptions"]
C3 --> BUILD["build_packed_3mf()"]
end
subgraph GUI["GUI 入口: run_gui.py → gui.py"]
G1["拖放/添加文件 → 表格"] --> G2["每行: 3MF路径 + 份数"]
G2 --> G3["控件值 → BuildOptions"]
G3 --> G4{"批处理模式?"}
G4 -- 合并 --> BUILD
G4 -- 合并 --> BUILD["build_packed_3mf()"]
G4 -- 独立 --> G5["逐行调 build_packed_3mf()<br/>ProcessPoolExecutor 并行"]
end
```
### CLI
一条命令搞定。指定输入文件、份数、输出路径和各项参数:
```bash
python -m a1_swap_mod_packer.cli build \
--item "A.3mf" 3 \
--swap-gcode "LX_1.02.26.gcode" \
--cool-bed 45 \
--wait 45 \
--show-plate-number \
-o "3 Plates - A.3mf"
```
CLI 做了这些:
1. `argparse` 解析参数(文件、份数、换盘模板、冷却温度、等待秒数...)
2. 拼成 `PlateJob` 列表和 `BuildOptions`
3. 调一次 `build_packed_3mf()`(合并模式)
4. 把结果打印到 stdout
新增 `--no-eject-wait` 选项可禁用换盘后等待时间(`G4 P...` 行),与 GUI 中的勾选框对应。
**所有输入合并成 1 个输出**。参数靠命令行传,没有交互、没有预览。
### GUI
窗口操作,参数靠控件选、文件靠拖放。最终也是调 `build_packed_3mf()`准备阶段和 CLI 不同
窗口操作,参数靠控件选、文件靠拖放。最终也是调 `build_packed_3mf()`,准备工作包括
#### GUI 独有的准备阶段
1. **文件管理** — 表格里每行一个源文件 + 份数,可拖放、排序、移除
2. **元数据预读** — 添加文件时就解析 `slice_info.config`,表格直接显示时间和耗材CLI 不显示这个,只在构建后输出)
2. **元数据预读** — 添加文件时就解析 `slice_info.config`,表格直接显示时间和耗材
3. **缩略图预览** — 选中行 3MF → 右侧显示 `plate_N.png` 缩略图
4. **输出路径自动算** — 默认留空,自动写到第一个输入文件旁边。文件名按规则 `{plates} Plates - {sources}.3mf` 生成CLI 必须手动用 `-o`
4. **输出路径自动算** — 默认留空,自动写到第一个输入文件旁边。文件名按规则 `{plates} Plates - {sources}.3mf` 生成
5. **设置持久化** — 控件值自动存 `settings.json`,重启恢复
#### 合并模式(默认)
和 CLI 一样,所有行合并调一次 `build_packed_3mf()`
所有行合并调一次 `build_packed_3mf()`
```
A.3mf 份数 3
@@ -269,17 +239,3 @@ C.3mf 份数 5 → build_packed_3mf([C]) → 5 Plates - C.3mf
- 每行自动算各自的输出路径(文件名规则 + 去重防覆盖)
- 弹出进度日志,记录每个文件的构建结果
- 有关闭全局预览标签的选项
#### GUI vs CLI 能力速查
| 能力 | CLI | GUI |
|------|:---:|:---:|
| 合并模式 | ✅ | ✅ |
| 独立批处理 | ❌ | ✅ |
| 拖放添加文件 | ❌ | ✅ |
| 表格编辑份数 | ❌ | ✅(每行 SpinBox |
| 元数据预显示 | ❌ | ✅(表格直接看时间/耗材) |
| 缩略图预览 | ❌ | ✅ |
| 输出路径自动生成 | ❌ | ✅(文件名规则) |
| 设置持久化 | ❌ | ✅(settings.json |
| 脚本/自动化友好 | ✅ | ❌ |