diff --git a/README.md b/README.md index 3bcb671..6b2a322 100644 --- a/README.md +++ b/README.md @@ -174,11 +174,11 @@ build/onefile/swap_gcode/ 同时启动一次 `build/onefile/a1packer.exe`,确认: -- 换料 G-code 下拉框列出已复制的模板。 +- 换盘 G-code 下拉框列出已复制的模板。 - 修改 GUI 选项会创建或更新 `build/onefile/settings.json`。 - 首次启动前 `settings.json` 不存在时程序仍能正常运行。 -## 换料 G-code 模板 +## 换盘 G-code 模板 GUI 会自动扫描以下固定目录: @@ -200,7 +200,7 @@ swap_gcode/ GUI 中使用方法: 1. 将模板文件放入 `swap_gcode/`。 -2. 点击 **换料 G-code** 旁的 **刷新**。 +2. 点击 **换盘 G-code** 旁的 **刷新**。 3. 从下拉框中选择模板。 ## 可编辑 G-code 补丁 @@ -278,7 +278,7 @@ Metadata/slice_info.config 独立批处理模式下,一次点击为每行输入各生成一个输出 3MF。 -### 换料 G-code +### 换盘 G-code 选择插入到每个重复面板中的弹射/换板 G-code 块。 @@ -311,7 +311,7 @@ M190 S45 禁用后,打包器不添加 `M190` 行。 -### 弹射后等待时间 +### 换盘后等待时间 在 SwapMod G-code 块之后添加驻留时间。 @@ -341,7 +341,7 @@ G4 P45000 启用后,换板/弹射块也会插入到最后一个重复面板之后。 -禁用后,最后一个重复面板正常结束,不执行换料 G-code 块。 +禁用后,最后一个重复面板正常结束,不执行换盘 G-code 块。 ### G-code 补丁 @@ -489,10 +489,10 @@ settings.json 保存的选项包括: -- 当前选中的换料 G-code 文件。 +- 当前选中的换盘 G-code 文件。 - 默认份数。 - 热床降温设置。 -- 弹射后等待时间。 +- 换盘后等待时间。 - 剩余时间板号开关。 - 最后换料开关。 - G-code 补丁开关。 @@ -505,7 +505,7 @@ settings.json ## CLI 使用示例 -列出可用的换料 G-code 文件: +列出可用的换盘 G-code 文件: ```bash python -m a1_swap_mod_packer.cli list-swap-gcode @@ -563,7 +563,7 @@ python -m a1_swap_mod_packer.cli build \ -o "4 Plates - A_and_B.3mf" ``` -指定换料 G-code 目录和 ZIP 压缩级别: +指定换盘 G-code 目录和 ZIP 压缩级别: ```bash python -m a1_swap_mod_packer.cli build \ @@ -590,10 +590,10 @@ CLI 常用选项速查: | 选项 | 含义 | |---|---| | `--version` | 打印当前版本 | -| `list-swap-gcode` | 列出换料 G-code 目录中的文件 | +| `list-swap-gcode` | 列出换盘 G-code 目录中的文件 | | `--item PATH COPIES` | 添加一个带独立份数的输入;可多次使用 | | 位置参数 `inputs` + `--copies N` | 添加多个使用相同份数的输入 | -| `--swap-gcode-dir DIR` | 使用自定义换料 G-code 目录 | +| `--swap-gcode-dir DIR` | 使用自定义换盘 G-code 目录 | | `--no-bed-cooldown` | 不在换料块前插入 `M190` | | `--no-swap-after-final` | 最后一块板后不执行换料块 | | `--line-ending lf\|crlf` | 选择生成 G-code 的换行符;默认 `crlf` | diff --git a/a1_swap_mod_packer/cli.py b/a1_swap_mod_packer/cli.py index c11a3d3..e52b5a8 100644 --- a/a1_swap_mod_packer/cli.py +++ b/a1_swap_mod_packer/cli.py @@ -1,6 +1,6 @@ """命令行接口模块:定义参数解析器和命令处理函数。 -提供 `build`(构建打包 3MF)和 `list-swap-gcode`(列出换料 G-code 文件) +提供 `build`(构建打包 3MF)和 `list-swap-gcode`(列出换盘 G-code 文件) 两个子命令,以及 `main` 入口函数。 """ @@ -94,7 +94,7 @@ def build_command(args: argparse.Namespace) -> int: def list_swap_gcode_command(args: argparse.Namespace) -> int: - """执行 'list-swap-gcode' 子命令:列出可用的换料 G-code 文件。 + """执行 'list-swap-gcode' 子命令:列出可用的换盘 G-code 文件。 Args: args: 解析后的命令行命名空间 @@ -107,7 +107,7 @@ def list_swap_gcode_command(args: argparse.Namespace) -> int: files = list_swap_gcode_files(directory) # 目录为空时给出提示 if not files: - print(f"在 {directory} 中未找到换料 G-code 文件") + print(f"在 {directory} 中未找到换盘 G-code 文件") return 0 for path in files: print(path.name) @@ -119,7 +119,7 @@ def create_parser() -> argparse.ArgumentParser: 包含两个子命令: - build: 构建打包的 3MF 文件 - - list-swap-gcode: 列出换料 G-code 文件 + - list-swap-gcode: 列出换盘 G-code 文件 Returns: argparse.ArgumentParser: 配置完成的参数解析器 @@ -138,19 +138,19 @@ def create_parser() -> argparse.ArgumentParser: # --item 参数:每个文件可独立指定份数 build.add_argument("--item", nargs=2, action="append", metavar=("PATH", "COPIES"), help="添加一个带有独立份数的输入 3MF 文件。可重复使用。") build.add_argument("-o", "--output", required=True, help="输出 3MF 路径。") - # 换料 G-code 相关 - build.add_argument("--swap-gcode", required=True, help="换料 G-code 文件名,位于 swap_gcode 中,或显式文件路径。") + # 换盘 G-code 相关 + build.add_argument("--swap-gcode", required=True, help="换盘 G-code 文件名,位于 swap_gcode 中,或显式文件路径。") build.add_argument("--swap-gcode-dir", default=None, help=f"模板目录。默认值:{default_swap_gcode_dir()}") # 份数与温度 build.add_argument("--copies", type=int, default=1, help="位置参数输入文件的复制份数。") - build.add_argument("--cool-bed", type=int, default=45, help="执行换料 G-code 前等待的床温。") + build.add_argument("--cool-bed", type=int, default=45, help="执行换盘 G-code 前等待的床温。") build.add_argument("--no-bed-cooldown", action="store_true", help="不在换料代码前插入 M190。") # 时间与编号 - build.add_argument("--wait", type=int, default=45, help="板弹射后等待的秒数。") - build.add_argument("--no-eject-wait", action="store_true", help="不插入弹射后等待指令 G4。") + build.add_argument("--wait", type=int, default=45, help="板换盘后等待的秒数。") + build.add_argument("--no-eject-wait", action="store_true", help="不插入换盘后等待指令 G4。") build.add_argument("--show-plate-number", action="store_true", help="每板号向 M73 R 值增加 100 小时。") # 行为开关 - build.add_argument("--no-swap-after-final", action="store_true", help="最后一块板后不执行换料 G-code。") + build.add_argument("--no-swap-after-final", action="store_true", help="最后一块板后不执行换盘 G-code。") build.add_argument("--metadata-mode", choices=("source", "sum"), default="sum", help="如何写入 slice_info 的 prediction 和 weight。") build.add_argument("--line-ending", choices=("lf", "crlf"), default="crlf", help="生成 G-code 的换行符。") build.add_argument("--zip-level", type=int, choices=range(1, 10), default=DEFAULT_ZIP_COMPRESS_LEVEL, metavar="1-9", help="输出 3MF 的 zlib-ng Deflate 压缩级别。默认值:7。") diff --git a/a1_swap_mod_packer/gui.py b/a1_swap_mod_packer/gui.py index 67cfdde..a28fc3e 100644 --- a/a1_swap_mod_packer/gui.py +++ b/a1_swap_mod_packer/gui.py @@ -3,7 +3,7 @@ A1 SwapMod Packer 的 PySide6 图形用户界面模块。 提供完整的桌面 GUI,用于: - 拖放/添加多个 .3mf 输入文件 -- 配置换料 G-code、打包选项、输出规则 +- 配置换盘 G-code、打包选项、输出规则 - 单个或批量构建打包的 3MF 文件 - 显示板缩略图预览、合计统计和构建日志 @@ -490,7 +490,7 @@ class MainWindow(QMainWindow): grid.setVerticalSpacing(6) # ---- 控件创建 ---- - # 换料 G-code 选择 + # 换盘 G-code 选择 self.swap_gcode_combo = QComboBox() self.swap_gcode_combo.setMinimumWidth(260) self.swap_gcode_combo.setMaximumWidth(440) @@ -523,8 +523,8 @@ class MainWindow(QMainWindow): bed_row.addWidget(QLabel("°C")) bed_row.addStretch(1) - # 弹射后等待时间(勾选后启用,不勾选则不插入等待指令) - self.eject_wait_check = QCheckBox("弹射后等待") + # 换盘后等待时间(勾选后启用,不勾选则不插入等待指令) + self.eject_wait_check = QCheckBox("换盘后等待") self.eject_wait_check.setChecked(True) self.wait_spin = QSpinBox() self.wait_spin.setRange(0, 3600) @@ -541,7 +541,7 @@ class MainWindow(QMainWindow): self.show_plate_number_check.setChecked(True) # 最后换料 - self.swap_final_check = QCheckBox("最后一块板后也执行换料 G-code") + self.swap_final_check = QCheckBox("最后一块板后也执行换盘 G-code") self.swap_final_check.setChecked(True) # G-code 补丁 @@ -586,8 +586,8 @@ class MainWindow(QMainWindow): input_handling_row.addStretch(1) # ---- 网格布局:4 列网格,每行两个选项组 ---- - # 第 0 行:[换料 G-code | 跨全行] - grid.addWidget(QLabel("换料 G-code"), 0, 0) + # 第 0 行:[换盘 G-code | 跨全行] + grid.addWidget(QLabel("换盘 G-code"), 0, 0) grid.addLayout(swap_gcode_row, 0, 1, 1, 3) # 第 1 行:默认份数 | 热床降温 @@ -596,8 +596,8 @@ class MainWindow(QMainWindow): grid.addWidget(QLabel("热床降温"), 1, 2) grid.addLayout(bed_row, 1, 3) - # 第 2 行:弹射后等待 | 剩余时间板号 - grid.addWidget(QLabel("弹射后等待时间"), 2, 0) + # 第 2 行:换盘后等待 | 剩余时间板号 + grid.addWidget(QLabel("换盘后等待时间"), 2, 0) grid.addLayout(eject_wait_row, 2, 1) grid.addWidget(QLabel("剩余时间板号"), 2, 2) grid.addWidget(self.show_plate_number_check, 2, 3) @@ -822,16 +822,16 @@ class MainWindow(QMainWindow): "{date} — 当前日期,格式 YYYYMMDD\n" "{time} — 当前时间,格式 HHMMSS\n\n" "默认规则:\n" - "{plates} Plates - {sources}.3mf\n\n" + "{plates}-Plates-{sources}.3mf\n\n" "在独立批处理模式下,这些标记会针对每行输入单独计算。", ) # ========================================================================= - # 换料 G-code 管理 + # 换盘 G-code 管理 # ========================================================================= def load_swap_gcode_to_combo(self) -> None: - """扫描换料 G-code 目录,填充下拉列表,恢复上次选择。""" + """扫描换盘 G-code 目录,填充下拉列表,恢复上次选择。""" current = self.swap_gcode_combo.currentData() or self._settings.get("last_swap_gcode") options = self._settings.get("packing_options", {}) if isinstance(options, dict): @@ -847,7 +847,7 @@ class MainWindow(QMainWindow): if index >= 0: self.swap_gcode_combo.setCurrentIndex(index) if not files: - self.log.append(f"在 {default_swap_gcode_dir()} 中未找到换料 G-code 文件") + self.log.append(f"在 {default_swap_gcode_dir()} 中未找到换盘 G-code 文件") def open_path(self, path: Path) -> None: """跨平台打开文件或文件夹(Windows/Mac/Linux)。""" @@ -861,7 +861,7 @@ class MainWindow(QMainWindow): subprocess.run(["xdg-open", str(target)], check=False) def open_swap_gcode_folder(self) -> None: - """在系统文件管理器中打开换料 G-code 目录。""" + """在系统文件管理器中打开换盘 G-code 目录。""" folder = default_swap_gcode_dir() folder.mkdir(parents=True, exist_ok=True) self.open_path(folder) @@ -1311,7 +1311,7 @@ class MainWindow(QMainWindow): """根据当前 UI 选项构建 BuildOptions 对象。""" swap_gcode_path = self.swap_gcode_combo.currentData() if not swap_gcode_path: - raise ValueError("请在 swap_gcode 文件夹中放入至少一个换料 G-code 文件并选择它。") + raise ValueError("请在 swap_gcode 文件夹中放入至少一个换盘 G-code 文件并选择它。") cool_bed_temp = self.cool_bed_spin.value() if self.bed_cooldown_check.isChecked() else None eject_wait_seconds = self.wait_spin.value() if self.eject_wait_check.isChecked() else 0 return BuildOptions( diff --git a/docs/how_it_works.md b/docs/how_it_works.md index b3195cb..fb0834d 100644 --- a/docs/how_it_works.md +++ b/docs/how_it_works.md @@ -4,7 +4,7 @@ ## 总览 -给一个源 `.3mf` 文件,设好份数和换料 G-code,输出一个打包好的新 `.3mf`。 +给一个源 `.3mf` 文件,设好份数和换盘 G-code,输出一个打包好的新 `.3mf`。 ```mermaid flowchart LR @@ -102,7 +102,7 @@ max_count = 1 ← 最多替换 1 次 ```gcode M190 S45 ; 等热床降温到 45°C(可选) -[你选的换料G-code] ; 弹射/换板动作 +[你选的换盘G-code] ; 弹射/换板动作 G4 P45000 ; 等 45 秒(可选) ```