style: 换料G-code改为换盘G-code,弹射后等待改为换盘后等待
This commit is contained in:
@@ -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` |
|
||||
|
||||
+10
-10
@@ -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。")
|
||||
|
||||
+15
-15
@@ -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(
|
||||
|
||||
@@ -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 秒(可选)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user