Skip to content

add wipe tower feature and fix wipe tower bug #446

Open
fire2wind wants to merge 32 commits into
mainfrom
wipe_tower_total
Open

add wipe tower feature and fix wipe tower bug #446
fire2wind wants to merge 32 commits into
mainfrom
wipe_tower_total

Conversation

@fire2wind
Copy link
Copy Markdown

No description provided.

fire2wind and others added 28 commits May 12, 2026 10:43
fix: Interference between the wiping tower brim path and the model br…
原因:纯 E 行(无 X/Y 变化)不应被丢弃,需要原样透传。
根因分析:加载旧版配置文件时,新增选项(如 filament_tower_ironing_area、wipe_tower_wall_gap)在配置中不存在。UI 渲染该选项时调用 config.opt_bool(key) → option(key) 返回 nullptr → 直接解引用 ->value(Config.hpp:2357)→ 访问地址 0x08 崩溃。
修复(2 处,均在 Preset.cpp)
补全 s_Preset_print_options 列表:加入 wipe_tower_wall_gap,使其成为受管理的打印选项

normalize() 扩展为三种配置:耗材配置逻辑不变,新增打印配置和打印机配置分支,遍历对应 options 列表,缺失的从 FullPrintConfig::defaults() clone 补入
根因分析:装填回抽(unretract)发生在 cleaning box 内部(fill_box 的 ru/lu 角落),而非实际画墙起点。导致装载耗材后,还要空驶一段距离(从 ru/lu 到 fill_box.ld)才能到达外墙起点开始挤出头。这段空驶带着已装载的耗材走 → 沿途漏料。
解决方案:画外墙时,设置初始位置为画墙的起点 start_pos = rotate(fill_box.ld)
分析:直接删掉else,X/Y轴是脏数据,没有经过坐标转换。
处理:只剥离重复的X/Y轴,保留 E/F 等一切其他参数。
Bug 1: Wipe path overlaps with previous filament after tool change

Root cause (two layers):

1. gap_y (ramming-wipe boundary Y) was computed only inside `if
   (m_use_gap_wall)`. When gap is off, Y stays at Unload end position
   (still in ramming zone). The previous filament's ramming uses wider
   line width, causing the narrower wipe path to fall within it.

2. Even with gap_y computed, `.append("G1 X...Y...")` does not update
   the writer's internal `m_current_pos`, but `travel(x, y)` does. With
   gap on, the subsequent `travel(box_edge_x, gap_y)` corrects it. With
   gap off, no such correction exists, so subsequent Load/Wipe read
   stale position and Y jumps back.

Fix: extract gap_y/gap_x/box_edge_x computation outside the if-block.
Gap on: unchanged (`.append()` + `travel()` gap entry). Gap off: use
`writer.travel()` instead of `.append()` so internal state is updated.

Bug 2: Ironing preamble still executes when wall gap is disabled

The full ironing sequence (extrude blob, retract, back travel, forward
travel, spiral_flat_ironing, unretract) was only partially guarded by
`m_use_gap_wall` — only `spiral_flat_ironing` was skipped. The extrude,
retract, and travel moves still ran as dead weight.

Fix: restructure i==0 block to `if (m_use_gap_wall) { full ironing }
else { direct extrude to edge }`. Remove stale `should_flat_ironging`.
spiral_flat_ironing() used a hardcoded global `flat_iron_area = 4.f`
instead of the per-filament config `m_filpar[m_current_tool].flat_iron_area`.
Deleted the global and replaced both call sites.
Cone wall did not call get_wall_skip_points() nor
contrust_gap_for_skip_points(), so toolchange gap travel
drove nozzle through solid wall.

Fix: pass skip_points to generate_support_cone_wall(),
replace manual extrusion with gap-aware generate_path().
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 5, 2026

Documentation validation failed

🔗 Link Validation Errors

📄 doc/developer-reference\Built-in-placeholders-variables.md:

  • Line 93: home#process-settings - Fragment does not exist
  • Line 93: home#material-settings - Fragment does not exist

📄 doc/developer-reference\How-to-wiki.md:

  • Line 44: home#material-settings - Fragment does not exist
  • Line 45: home#process-settings - Fragment does not exist
  • Line 46: home#prepare - Fragment does not exist
  • Line 47: home#calibrations - Fragment does not exist
  • Line 50: home#process-settings - Fragment does not exist
  • Line 50: home#support-settings - Fragment does not exist
  • Line 50: home#others-settings - Fragment does not exist

📄 doc/Home.md:

  • Line 14: Precise-wall.md - File does not exist
  • Line 17: extrusion-rate-smoothing.md - File does not exist
  • Line 33: adaptive-pressure-advance.md - File does not exist

📄 doc/Tab.cpp:

  • Line 2368: fill-patterns - File does not exist
  • Line 2371: fill-patterns - File does not exist
  • Line 2558: multimaterial_settings_prime_tower#brim-chamfer - Fragment does not exist
  • Line 2559: multimaterial_settings_prime_tower#brim-chamfer-max-width - Fragment does not exist
  • Line 2571: multimaterial_settings_prime_tower#wall-gap - Fragment does not exist
  • Line 2584: multimaterial_settings_ooze_prevention#delta-temperature - Fragment does not exist

🖼️ Image Validation Errors

📄 doc/developer-reference\How-to-create-profiles.md:

  • Line 142: [Markdown] Alt text "Help menu" ≠ filename "go-to-configuration-folder"
  • Line 144: [Markdown] Alt text "Delete system folder" ≠ filename "profile-delete-system-folder"

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 5, 2026

Documentation validation failed

🔗 Link Validation Errors

📄 doc/developer-reference\Built-in-placeholders-variables.md:

  • Line 93: home#process-settings - Fragment does not exist
  • Line 93: home#material-settings - Fragment does not exist

📄 doc/developer-reference\How-to-wiki.md:

  • Line 44: home#material-settings - Fragment does not exist
  • Line 45: home#process-settings - Fragment does not exist
  • Line 46: home#prepare - Fragment does not exist
  • Line 47: home#calibrations - Fragment does not exist
  • Line 50: home#process-settings - Fragment does not exist
  • Line 50: home#support-settings - Fragment does not exist
  • Line 50: home#others-settings - Fragment does not exist

📄 doc/Home.md:

  • Line 14: Precise-wall.md - File does not exist
  • Line 17: extrusion-rate-smoothing.md - File does not exist
  • Line 33: adaptive-pressure-advance.md - File does not exist

📄 doc/Tab.cpp:

  • Line 2368: fill-patterns - File does not exist
  • Line 2371: fill-patterns - File does not exist
  • Line 2558: multimaterial_settings_prime_tower#brim-chamfer - Fragment does not exist
  • Line 2559: multimaterial_settings_prime_tower#brim-chamfer-max-width - Fragment does not exist
  • Line 2571: multimaterial_settings_prime_tower#wall-gap - Fragment does not exist
  • Line 2583: multimaterial_settings_ooze_prevention#delta-temperature - Fragment does not exist

🖼️ Image Validation Errors

📄 doc/developer-reference\How-to-create-profiles.md:

  • Line 142: [Markdown] Alt text "Help menu" ≠ filename "go-to-configuration-folder"
  • Line 144: [Markdown] Alt text "Delete system folder" ≠ filename "profile-delete-system-folder"

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 5, 2026

Documentation validation failed

🔗 Link Validation Errors

📄 doc/developer-reference\Built-in-placeholders-variables.md:

  • Line 93: home#process-settings - Fragment does not exist
  • Line 93: home#material-settings - Fragment does not exist

📄 doc/developer-reference\How-to-wiki.md:

  • Line 44: home#material-settings - Fragment does not exist
  • Line 45: home#process-settings - Fragment does not exist
  • Line 46: home#prepare - Fragment does not exist
  • Line 47: home#calibrations - Fragment does not exist
  • Line 50: home#process-settings - Fragment does not exist
  • Line 50: home#support-settings - Fragment does not exist
  • Line 50: home#others-settings - Fragment does not exist

📄 doc/Home.md:

  • Line 14: Precise-wall.md - File does not exist
  • Line 17: extrusion-rate-smoothing.md - File does not exist
  • Line 33: adaptive-pressure-advance.md - File does not exist

📄 doc/Tab.cpp:

  • Line 2368: fill-patterns - File does not exist
  • Line 2371: fill-patterns - File does not exist
  • Line 2558: multimaterial_settings_prime_tower#brim-chamfer - Fragment does not exist
  • Line 2559: multimaterial_settings_prime_tower#brim-chamfer-max-width - Fragment does not exist
  • Line 2571: multimaterial_settings_prime_tower#wall-gap - Fragment does not exist
  • Line 2583: multimaterial_settings_ooze_prevention#delta-temperature - Fragment does not exist

🖼️ Image Validation Errors

📄 doc/developer-reference\How-to-create-profiles.md:

  • Line 142: [Markdown] Alt text "Help menu" ≠ filename "go-to-configuration-folder"
  • Line 144: [Markdown] Alt text "Delete system folder" ≠ filename "profile-delete-system-folder"

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 5, 2026

Documentation validation failed

🔗 Link Validation Errors

📄 doc/developer-reference\Built-in-placeholders-variables.md:

  • Line 93: home#process-settings - Fragment does not exist
  • Line 93: home#material-settings - Fragment does not exist

📄 doc/developer-reference\How-to-wiki.md:

  • Line 44: home#material-settings - Fragment does not exist
  • Line 45: home#process-settings - Fragment does not exist
  • Line 46: home#prepare - Fragment does not exist
  • Line 47: home#calibrations - Fragment does not exist
  • Line 50: home#process-settings - Fragment does not exist
  • Line 50: home#support-settings - Fragment does not exist
  • Line 50: home#others-settings - Fragment does not exist

📄 doc/Home.md:

  • Line 14: Precise-wall.md - File does not exist
  • Line 17: extrusion-rate-smoothing.md - File does not exist
  • Line 33: adaptive-pressure-advance.md - File does not exist

📄 doc/Tab.cpp:

  • Line 2368: fill-patterns - File does not exist
  • Line 2371: fill-patterns - File does not exist
  • Line 2558: multimaterial_settings_prime_tower#brim-chamfer - Fragment does not exist
  • Line 2559: multimaterial_settings_prime_tower#brim-chamfer-max-width - Fragment does not exist
  • Line 2571: multimaterial_settings_prime_tower#wall-gap - Fragment does not exist
  • Line 2583: multimaterial_settings_ooze_prevention#delta-temperature - Fragment does not exist

🖼️ Image Validation Errors

📄 doc/developer-reference\How-to-create-profiles.md:

  • Line 142: [Markdown] Alt text "Help menu" ≠ filename "go-to-configuration-folder"
  • Line 144: [Markdown] Alt text "Delete system folder" ≠ filename "profile-delete-system-folder"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant