From cfa54c55058cd9ed2bd76de7a1158b06bf3501a9 Mon Sep 17 00:00:00 2001 From: "xun.zhang" Date: Mon, 24 Mar 2025 11:19:47 +0800 Subject: [PATCH] ENH: update flush table 1. For cases where light color switch to dark color, multiply the value with 1.3 jira : NONE Signed-off-by: xun.zhang Change-Id: I6b5b2f8e9578d031bbf830ecf18f0069865af2e6 --- resources/flush/flush_data_dual_highflow.txt | 13 ++++++++++++- resources/flush/flush_data_dual_standard.txt | 16 +++++++++++++++- src/libslic3r/FlushVolCalc.cpp | 8 ++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/resources/flush/flush_data_dual_highflow.txt b/resources/flush/flush_data_dual_highflow.txt index f65f62f52..c5355216c 100644 --- a/resources/flush/flush_data_dual_highflow.txt +++ b/resources/flush/flush_data_dual_highflow.txt @@ -25,6 +25,7 @@ src dst flush #545454 #0A2989 120 #545454 #FF6A13 360 #545454 #0086D6 300 +#545454 #F7E6DE 780 #545454 #00AE42 330 #8E9089 #000000 210 #8E9089 #FFFFFF 450 @@ -32,6 +33,7 @@ src dst flush #8E9089 #F4EE2A 360 #8E9089 #0A2989 210 #8E9089 #FF6A13 300 +#8E9089 #F7E6DE 450 #8E9089 #00AE42 210 #C12E1F #000000 120 #C12E1F #FFFFFF 720 @@ -48,6 +50,7 @@ src dst flush #F4EE2A #0A2989 330 #F4EE2A #FF6A13 150 #F4EE2A #0086D6 420 +#F4EE2A #F7E6DE 870 #0A2989 #000000 90 #0A2989 #FFFFFF 630 #0A2989 #545454 150 @@ -56,6 +59,7 @@ src dst flush #0A2989 #F4EE2A 510 #0A2989 #FF6A13 480 #0A2989 #0086D6 300 +#0A2989 #F7E6DE 630 #0A2989 #00AE42 660 #FF6A13 #000000 90 #FF6A13 #FFFFFF 570 @@ -75,9 +79,16 @@ src dst flush #0086D6 #FF6A13 330 #0086D6 #F7E6DE 450 #0086D6 #00AE42 180 +#F7E6DE #000000 90 +#F7E6DE #545454 120 +#F7E6DE #F4EE2A 120 +#F7E6DE #0A2989 150 +#F7E6DE #FF6A13 120 +#F7E6DE #00AE42 120 #00AE42 #000000 90 #00AE42 #FFFFFF 630 #00AE42 #545454 210 #00AE42 #F4EE2A 360 #00AE42 #0A2989 210 -#00AE42 #0086D6 360 \ No newline at end of file +#00AE42 #0086D6 360 +#00AE42 #F7E6DE 630 \ No newline at end of file diff --git a/resources/flush/flush_data_dual_standard.txt b/resources/flush/flush_data_dual_standard.txt index 6218da966..f773934b7 100644 --- a/resources/flush/flush_data_dual_standard.txt +++ b/resources/flush/flush_data_dual_standard.txt @@ -9,6 +9,7 @@ src dst flush #000000 #0A2989 360 #000000 #FF6A13 900 #000000 #0086D6 630 +#000000 #F7E6DE 900 #000000 #00AE42 780 #FFFFFF #000000 90 #FFFFFF #545454 90 @@ -31,6 +32,7 @@ src dst flush #8E9089 #545454 150 #8E9089 #F4EE2A 330 #8E9089 #0A2989 330 +#8E9089 #F7E6DE 390 #8E9089 #00AE42 240 #C12E1F #000000 90 #C12E1F #FFFFFF 780 @@ -49,6 +51,7 @@ src dst flush #F4EE2A #0A2989 390 #F4EE2A #FF6A13 180 #F4EE2A #0086D6 450 +#F4EE2A #F7E6DE 690 #0A2989 #000000 90 #0A2989 #FFFFFF 630 #0A2989 #545454 300 @@ -57,6 +60,7 @@ src dst flush #0A2989 #F4EE2A 510 #0A2989 #FF6A13 420 #0A2989 #0086D6 330 +#0A2989 #F7E6DE 630 #0A2989 #00AE42 390 #FF6A13 #000000 90 #FF6A13 #FFFFFF 420 @@ -66,6 +70,7 @@ src dst flush #FF6A13 #F4EE2A 180 #FF6A13 #0A2989 210 #FF6A13 #0086D6 360 +#FF6A13 #F7E6DE 420 #FF6A13 #00AE42 240 #0086D6 #000000 90 #0086D6 #FFFFFF 510 @@ -75,11 +80,20 @@ src dst flush #0086D6 #F4EE2A 420 #0086D6 #0A2989 120 #0086D6 #FF6A13 390 +#0086D6 #F7E6DE 510 #0086D6 #00AE42 300 +#F7E6DE #000000 90 +#F7E6DE #545454 90 +#F7E6DE #8E9089 180 +#F7E6DE #F4EE2A 150 +#F7E6DE #0A2989 60 +#F7E6DE #FF6A13 150 +#F7E6DE #00AE42 150 #00AE42 #FFFFFF 570 #00AE42 #545454 270 #00AE42 #8E9089 480 #00AE42 #F4EE2A 450 #00AE42 #0A2989 270 #00AE42 #FF6A13 300 -#00AE42 #0086D6 390 \ No newline at end of file +#00AE42 #0086D6 390 +#00AE42 #F7E6DE 570 \ No newline at end of file diff --git a/src/libslic3r/FlushVolCalc.cpp b/src/libslic3r/FlushVolCalc.cpp index 5b344e8cc..f574658d8 100644 --- a/src/libslic3r/FlushVolCalc.cpp +++ b/src/libslic3r/FlushVolCalc.cpp @@ -124,6 +124,14 @@ int FlushVolCalculator::calc_flush_vol(unsigned char src_a, unsigned char src_r, flush_volume = calc_flush_vol_rgb(src_r, src_g, src_b, dst_r, dst_g, dst_b); + + constexpr float dark_color_thres = 180.f/255.f; + constexpr float light_color_thres = 75.f/255.f; + bool is_from_dark = get_luminance(src_r, src_g, src_b) > dark_color_thres; + bool is_to_light = get_luminance(dst_r, dst_g, dst_b) < light_color_thres; + if (m_machine_type != FlushPredict::Standard && is_from_dark && is_to_light) + flush_volume *= 1.3; + flush_volume += m_min_flush_vol; return std::min((int)flush_volume, m_max_flush_vol); }