From a22a382e1dc75c1ce8ce047657732c47bbb3d0d7 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Wed, 9 Nov 2022 21:48:29 +0800 Subject: [PATCH 1/8] explicitly specify linear PA mode for Bambu printers --- src/libslic3r/GCode.cpp | 2 ++ src/libslic3r/GCodeWriter.cpp | 16 ++++++++++------ src/libslic3r/GCodeWriter.hpp | 9 ++++++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index c90244339e..26cfc5f108 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1306,6 +1306,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato #if ENABLE_GCODE_VIEWER_DATA_CHECKING m_last_mm3_per_mm = 0.; #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING + + m_writer.set_is_bbl_machine(is_bbl_printers); // How many times will be change_layer() called? // change_layer() in turn increments the progress bar status. diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index 68bfb562a3..5876f9fdd0 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -214,12 +214,16 @@ std::string GCodeWriter::set_pressure_advance(double pa) const std::ostringstream gcode; if (pa < 0) return gcode.str(); - - if (FLAVOR_IS(gcfKlipper)) - gcode << "SET_PRESSURE_ADVANCE ADVANCE=" << std::setprecision(4) << pa << "; Override pressure advance value\n"; - else - gcode << "M900 K" < Date: Wed, 9 Nov 2022 22:04:03 +0800 Subject: [PATCH 2/8] wip --- src/libslic3r/PerimeterGenerator.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 47d6eeda32..e9dcdf387a 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -612,13 +612,18 @@ void PerimeterGenerator::process() } // nest loops: holes first - for (int d = 0; d <= loop_number; ++ d) { - PerimeterGeneratorLoops &holes_d = holes[d]; + int idx; + for (int d = -1; d < loop_number; ++ d) { + idx = d; + if (idx == -1) + idx = loop_number; + + PerimeterGeneratorLoops &holes_d = holes[idx]; // loop through all holes having depth == d for (int i = 0; i < (int)holes_d.size(); ++ i) { const PerimeterGeneratorLoop &loop = holes_d[i]; // find the hole loop that contains this one, if any - for (int t = d + 1; t <= loop_number; ++ t) { + for (int t = idx + 1; t <= loop_number; ++ t) { for (int j = 0; j < (int)holes[t].size(); ++ j) { PerimeterGeneratorLoop &candidate_parent = holes[t][j]; if (candidate_parent.polygon.contains(loop.polygon.first_point())) { @@ -645,13 +650,16 @@ void PerimeterGenerator::process() } } // nest contour loops - for (int d = loop_number; d >= 1; -- d) { - PerimeterGeneratorLoops &contours_d = contours[d]; + for (int d = loop_number-1; d >= 0; -- d) { + idx = d; + if (idx == 0) + idx = loop_number; + PerimeterGeneratorLoops &contours_d = contours[idx]; // loop through all contours having depth == d for (int i = 0; i < (int)contours_d.size(); ++ i) { const PerimeterGeneratorLoop &loop = contours_d[i]; // find the contour loop that contains it - for (int t = d - 1; t >= 0; -- t) { + for (int t = idx - 1; t >= 0; -- t) { for (size_t j = 0; j < contours[t].size(); ++ j) { PerimeterGeneratorLoop &candidate_parent = contours[t][j]; if (candidate_parent.polygon.contains(loop.polygon.first_point())) { From 0cfb0ed8309a1aac2491acc2683b601f55a7cbee Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 9 Nov 2022 22:32:16 +0800 Subject: [PATCH 3/8] bump version to 1.3.3 --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index 356ac0f839..e83442474d 100644 --- a/version.inc +++ b/version.inc @@ -11,4 +11,4 @@ if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() set(SLIC3R_VERSION "01.03.00.25") -set(SoftFever_VERSION "1.3.3 beta3") +set(SoftFever_VERSION "1.3.3") From de761660cb1119b9932761922770f52e89d4b338 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 9 Nov 2022 22:58:12 +0800 Subject: [PATCH 4/8] update cn translation --- resources/i18n/zh_cn/BambuStudio.mo | Bin 170420 -> 172866 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/i18n/zh_cn/BambuStudio.mo b/resources/i18n/zh_cn/BambuStudio.mo index 25961d7f7cd71585f76b7b5cfb7a39431a115a8b..ae116a398ac75bfdf0507616ad67a877e9d8fc4e 100644 GIT binary patch delta 43978 zcmZ791(X!mx`yGJ!QI^kcXxO9!QI{6Y24l29fG?P+}#u0Ap|D`2>1PZ|J=nowN{;H zyVc&+Jp<%y-4g!yW8r;wqKBOBaV-zyc?q#ZLC?z?-t*e`RjTJ@S?YNKm=(iec8re& zF)Y@`BG?3T;}VR3w@~$-U{QRA#WCG7&r5?HF_Y){yqN?-kZ=s?*E@w-@hX`m;fK52KWPGW4IM=fI%3Qcv@7se8^nAni!e>y@mwTaR*cby-^Jh zLCs_$YBA=bW)yp+=Y_<$sE!h0AIyOi&mhc6& z68TqqUMwt(8b}S)z?xztY>yeRFNVdHsB#-I4(`M1coj9{bZeZYuom&As7JjUeOj99 z1j6AnjEwJ40|;2_1{4RQ5l?_IFe9qtq8J{_p?{#LcABDppcsXCU&|kZYG)>@-_>hb ze>Jq51XVn21<#^7x`kTO*BBi`taHykHijXd1yw(f#fzfql|`*&15~?BFfq2nL^uXh z;i`44zeaeTgobz*8(^W|T*Y~)f-5j0o;7coPf;`afLgK8>s@;ZF%R(!s6EgEbKwkJ zglF+McJyuV9|JGfMz={?U>Y)Zp+@`wwaEfDd0r@tixDs}s$4oukJV6{)Q4J`e^C<) z-0W5)I+h`x3X@?cRK9Ntfvg0UU}e05TCx;dT*XYNg2k{R2BTJD5$f6hX6{4{>@ez) zoJW4KH9P^;;T-IU%WyQt*y-};qu!vaF^10n5dx|42I|>(yWGf=qh^u@wGx>z zE*3`Z;@TJ$d!jb!NGy!&aUi}%ZRQTUJueBK#%}l$wPzab;rWjxFqXh5jI-CCEyg7N z8)`{^N3GCVjDdGi$Ll@n8GlC2IOIO}=pv&AmJl`YjHnqG#6DOX2jQiCtiMKDZNKLY zRsw#(>IXcJed1L*$lDGB54n+d!Y;%gVt1_ZyXOtVQ>b|5!#rm^g2S=&5x2L_qE_}A zY9L=w6N-71_16qj9d(;8D{9G$U}7wdnsH0iv+avyt=Z!%Q-X;AHD_7PBn`7tC`!`WCHwWRM*1N??s$}qe&LSq~Zg^5uOr9hR-V)6W_ z_DZ8pR|QmiHBgVH5vo03X98+q5Jtywr~xg+ShxeVWM|E1sPZ9BxQ3#jRwxKHupFqB z$&Xrr>ZrZc(Hx3ucNS95=dCB8XYo6x!7I1~zoVYnqLXfE52HG`g&OF6)aLtudS3*b zax;vA`H06uX}Wzgt!z7 z;6YSJ-%&FTal!5O#HjR)I1;m?+S`Nb_zmjKnf#(FR~RD`FL{yYAAvx15+Y(_vx61r zi<;?ZjDnL;&wdeVU|UcPU%-_33d3RaOYRXS#PGz^piV<}OoVx`EY`fl`fDbOEMpHQ zC4Li2;aAj36uazpZ7mE#yaVdPs0S*4Hpam97XKY15x(q6bDr?n^_Q5v5e(cG25YLGy*llWvCTdjcWHO>Qr6FROnrEAHS(lE9GlO zKovWno?%z4fW7f19>v(W@Va|u+ff5OYVjMW{HGWd|3kGG<%Vl7Ch8H!N3BRwEQ*^LPP)XDts)E{7^|1}ML#^0VRJ(s- zTzrAr%pq>+2Ns@x5dv{Y=#BYt5^BU}P#s)0@1R~t&rzE(;%&DF5@LMfMNlhK4`X0Q z)T0@K8E_G5KxeTKUd41e|1tk?6$_(A8f-SgSj5|-R$z#wk3}^!3$+Osp*G+n zkD}h6yxg!oYBPU9wO{0pn_xxssp0AbH1Y;m9Xlg0G4Cj9X(!)x9nMFs)N(9``z$@| zJ@+LxD(V;(#$arLdL%pX2p&g0f^qj-A$@zdQIBBvLpP(N zs1><}WAPPg0=*x(M=}_->nEcIvJ~|wPNF9Ar^TORQsUnq`CNe{kKIVKqc&GDR6`X| z188XZZ7?M9-l&xrfNFR;rp3jW5>KP{#9Iu75udnSA00yzua0WBo{xYUYKc{GAZl}6 zKrP)pR6~Db0Sy1t^O|94EQM<^Fo5?5mL~r3nfn@F@Ht1C_;~z*Ur`-?ec@ispZy6jGz?`@gQ{zo+jsfr7Oj=?k;(f3%p1_0{ z_PzTsN{Jd^QPlabiW+F!_pHB`rn@B!L4BBv!w9$(lj8=|rn`)q`At*<4^S)g3RV6y z_Qen%_z4#WqViv3RQ!VKFZ@Th!f`*c{{CG`f(jJDkysV=OmCu&+YjuH%|5yJ#SLsv z{1ryWI-lJ@+ha81lQ0%8!L+y&+u{RMI~D(Nr{s4Z0nOw(D&s!t1yl12U#GAhrohpt zC0uXrN0mE=P4F_t#GL=~!Gh&bry%I7ThY|mn0O&ne+w}l`c@NALx)i-a00btH&MIw z5hlPNs7I6Fn=6+MwUoszUKKMDZ))+$sDUrR0A5hXu^RD{-`)3%MF08w^?7Xxs9+~d ziqlX_za0~M5{vIf&Gaa0h3;Yw{DA)R zpO)e280ALIs1$C+>ZoTKj`wQ@On~aRj9JyJi|V);YA{v}U_nn6KSgEdeMwMI4E$MOf8voS8|n^4d86ly?MFe2VXosL(i zJ@F5!y&vdPgHb~U_&+A&qLwrRsz6rM@hgUU)wV<}^=MQ>6HzNS1NF$3qXvB1((jFH2W*D{pW zZY5%3I^u~jJ(fj1f*z=TriAeYc+&{XB;hyA5H`U7v3d(j6Hgk>#oJ&u;u}%B_#u|V z+~HZ;K)#w`4B`_ax;?T4HS@Ko)3X_Mdd{I%>@nuV4?Y6gmFXh685Kq?eMMAyL)4OX z!yp`iYIr4%#`Tt;C$igQ$kzmY-tx)Yw$K1Hg;(uUNeg3~Bpi}S- z)j-JT&S*HDcw$t8TTx4R60_oU?11571o(fL?1g&9hfw8jpf=-Q=6BSDBE@tj#jra6 zISFV0g-}ac3RSTM>e=_O_$buOXIXp;s@`GrA3M~uzJq#EJ+$;!s1^8uYcX;x_deK- zKAq=d1T^zAs3pFM8tF?*|A9J25o5db+^A<-9<>>3qE@DXrME*plAh)`)WDXYUQjDh z{cMWO`BwvnE#nkwMprEU2dd%|i@!v5{1LT6UYr2`7m}!$hiD$uChdYNa5U=0l_jpL zR}Hn78k&9Ma{l!~nL&cybQ>@QUPh(=gPKXScy38kqh^`~^{fk_@@t@0upMev9M&VR(DE+Ms942zQ90QG1Vnj6dm=6S3^{$11~%9+fqWPa46 zC}!~rs1>b-TFF|db~~X@$H7NHGo6cy??Ih{>!{=N4YlM+lDiL&9H>VYj5-Z- zedbKd-+&t6KGfbgjM{7GlH2)zK!V;_&r#om-k~~-n8M8@DQZd6qZ-PG+Ra5Qy(C5; zUfpbr`YzcXRc?Z%PsQoP7os+E&Xhj)tc#^|b~5LgCsD`m6Y7~oOl9u@)N#v#8gNwr3zqfir@ZTU-3k76BaU>kh|RB#(=#>X%>-bNjt7^wsNKT;(?EpO~U`HK7zZ6mwYmPRvgHG#0}j7^L%GEQ1?SGt>Y& zp_Xg_YQ_`M|9#zjhFZ!n8LeaNOgtK@-ViK+(=2`w^@tyuAFwU)P?`Af()sU9K+kd( zYH8M?mTo6%X%CubF^Kpr%m0d6@(`I_{YaRBcv5VNl~60O3AIv(P~ZJdU}b!Qz8nN{ zWpQ7N+o1}K!c@2dE8$rT!h~7f`=B6dpp8)jY>%3GA9JiZ-|{!09?f1$KaZO5{j8jS zjqoE0xiC~VcM1xiUPx6@1-qbDWH@S5j>i-@12wZfs3ra#wIY{M1N+nRU!dL_Z!P_^ z88SQP-@j?HyM|JrHe-5JgSk*MD{b*Qn1*;;)BvZV2DSw?usx_vdjz$YE~8G%eM^s! z!%ZkYCL=wQkAOy26;+`Y>fE+KH8>dcUKoQqMhj6hTZS6oCLD;rqn>%uoTLYkk4K4b z%jNb!zud09v8ev0p;q2Ehk!a*gBrjAD{vOo(Ph++O!rWG<2z=;1bN(MD~DS0Ug#e% z`p>;N1@#E$p!UpqRJq;AKz!a|0_jOOiF%eFQ8WF9dK3Y91H2*_5mRGD%z!;mZ^|Xu z0B@lNnkS!ofz?1wtRJe}B-Ca-DPG5(g#)~0SgDBn+3`L4rjan9s2g$gVy>Yi zScUYIs6EjWE8sBH%r9aZyp7uJA&a|jxiK&s@v^A&{-_y`MV+Ems8h2Wb=+?i=lrX| zXeC^Q1gIIOL#;r5)Qroc_DD6sVDOa!^>Qk&6>PzHk)Q8U^%YS6~uTY=&fu-GENrVrHXTc#Dvy7X_ zOw>SDq9$}4waL%>2x!+|L2bU<5|R-qc+h5A0QAJy=6%fE|SsW%q?j>(BfF7N7R zL!Fx9sEO4?J+cO7S5!YEojz|C0eyv9jjC`M^-ND${4#1rw@@qd!s1_0$0%Hd0RJD$ z7cx7d&i4ZI4C)d7iyCOOiY}fLQ|bIyAfOR-Lp_3Fs3o3<>Trp<2{n*|<^|LX>KL44cToKd~mq*RKA?oA0Cu)VJpx*gQP~RQ5n{O;VU3HgV2sMFV9|0{@E%fgJR6{+? z;iwL#qn2W9u9D^FrE>y*1sF~hFeIfaPX)$_j_h<^B%2h^f$~LGs;Rw{qEk~V( zvzSrm{|^F{NC;oYZI(J%ns{T>Oje;PY{J8M(Bi}Dx);e*)U#ZJ8psCJjBla_a@YKV zDi@=kYcDQFpnoqlff|?{RdF=x*-S)zOwLBViZ59DbJU)BZ~j2-fe7^jya5;kwfiTd zp8XPwZ^nki52IEzSp&|$UX7Uv=$w{9RqTq|Y(r7Ieu1U0MjfZ!SQ!tYW*DuZtCt?j z5HEn;a5$=+FPIHuHgXdzjT&&pMx1{=!x|*$n@l&S(3-F_E);SbcV z@72r=Y#gfLov0a}#B}%wb7GX{0p2_;iCVD-=5y>#{0-_6w(+%aOWXt3kT3`}lk_d! z(q_fX#LJ_OVL#NVSdE&=4eXAgTDbxBMQzrxcns&D+H2C z-l&0Tb^ccp&=OxnJ9b_J)PI$DJq&|%boZlRX`3+hqj?c&~~ov=Oe zk*EQEKy@6ot6SN`7(_f1`t-)COhB8a531lO)b5;tTKXlZSLs&N$S@)Y%c_z(5y z!gX^?91V*RPl4I773RjdSPL(s9(nriod1CYhIDtwC7?%ux0v_>Oo~N%x@X=LCleop zl`wiQ_X28y3t);OD4R^pCxPGwv+3?{ISFX~~0IwhAhofc~Ff72UgQc-5E=Hxl z#|oHtxcj}p2-M0wM{V9bBV4|(5rIM^tV6wkUg8{_G17fk%R0(^8LffZ3%yahdkmJv z&8P;yVKq!X+CB4LScLdm)JncW9pAKL+-E~+X_5^7ThOmr()0(a{CA0(h%*=Lfg za1nKEqD~I*|5b_%c#?SFlmPD_p24L!eyW>!)@d%iHtIOWo9^1FgL(wBEdChJ6HhTC zzn& z2WsW|SpIZW$170pmkp@?_M_e-m*;W*)zEVi^x^U^Djs>hdjTauy=c;-@{6H9oNA&r zV>66`JunmwN7WyTdXddTy~x&}2C^Ns2M%C<3|zqR)65Dja23m7XySEH-)tJAI_zul zk*GJ}Vsk&nA$}Y6741E$!-xxAhjCHuCq)f3J!(bsqXt~WM?mlPQkKvJRiTyH1y!LR zs)IoogtJi%>_$C;gQyNpU{bt+T7iF26AHV?ISI#9WCA)^^8ZOHt7P?KpvqU;XBI@y~Mw1eO>|rdU15X(s&5< zY{M;eCO|cq5jB8fs0OQ|R;CeZ$(y4F(i!ze?TcEGO{hnB$nwu2FIMjcCfE7DML?VE zKU7DtmboQOhgyMbmDr}Bg`mv}1Oh!Gz8K_;o2{nP^m=|xN9#M?tHX+oTFe4_= z`7cjE9koK8*UqR8`k^Wgw*1kUmG~4?y(6d}NJ^{-@c(Vuuq)kX!BbTIqO075N}~o^ zAGLB#P%F|2eHw9p0vhoY)UjBGn&~}D53|~BzIdqe*)TJfK{ebPb^ZsSCNLPA;5aOS zudyL!U*rD9#1u?H+*`}}FN`VI2KfI%VGGoU#VJ%nVb;0L79B6E9BQw8L3Ld5H}}kg zQ8TKKnt2=4rtO59SWj~lY65dm$9v;%KDUcck)Su%ZPf1mj9U8e>s-(ZQ9AHi|m!bx+9W{WXsEJ-f_2YX-ARU2_8(l}4&0MHwTF@+t>Zl}Y1ah&V&ecoLHn%NT^gYQuz8@S264lO=t${kbNNC6x6cxcBo@I&>U`#Lk(=Ii~GDqmar0&lCjmi zhFZdZP$N&i-~G-eyEzfHv@cOFmX8*Xf54@uFf*YBng{jB%A55uv(A490zqWV$F#T~ zXW%p3jJ|_zAlVMNN7DdPlfKkEjsEX`s2NB6-OVrt>SwRJdL++KOCA2G>o_Lrkt9Vu`>Yl(je0ZI!Zg^|;!9BjJ%(!ME~>xhM>+orydgoy z=rd~MfyZ1&vCL$s^vo77hFOSL#+f+C(&HX?k0vGRQ?4Rv<=S8coQGPu=jNy5KKI2V z#0mE+lh&vLS5YH=fa>@wro_l6U3w1Gz$=>7QRV8H9nHb!G}NA1iTa`TJWj$$zEc5S zV*(3M4gA2?82z++wf4i2#5b6^&$x02%uA>NKQ`Z4`VZ6qqn~y8@yt|ac2s}9A_P>h znq|~QEmbRXs~K?4{k&fZ*O5O9wRuaPcj-sXC>LD34wfQ+Db~Xm*aS;mbgpvxyzrOY z2-~AJTOZWsnrrE6QF~*j#Sfzfd;#@{uA|Dov3&2c+mw;ahBusES)q$L1hvAg9p(DQWTdsFetP)uksvwU-lBzkpd5)lN-R`Nrr|ppPX?G1r<$ z%seW%z)7fb>rm}&xxx8YLnledfY-1R zhPdfw8jQ(__d+!|7gc^O>fOE*_0{S+=D~2cT!+O_-xF$>bx<8QK(*5xb76O%1=gaz za6GVh)Z1ewY9gRoLa2l$^HI}{`yAnTy`s(J( z@u%ycHR?ARV^9q&F;}BzywTieo-(ha%0IIBOH_ydp!QbSJ8mFJQ7e`k{hJV}=kpr7 zfY-|GhE` z1k}MRT#nz+zXJDM!>dvG+bwgNATSIhN>6kzAGOam7fYVp}eU48Wyjwe4YQ^ z1az#%nj2A{ZdXwiLO*auGGn5?GbX@8SOYb{I1k-`Q=`6$QD0Q9 zKeF?m?XfGE7u7&1)QZ$Wo#%m;z6SLS_n`*%2daaI<{Q*$`HmV`k|(a6%&2y&qtaVh zyw?+-dzNEJ&~aFVYWNCf!`rB57x}5{C>?61xls)kHLF{CE7X9xSbQLAz@t#*S7I03 zjVhPH_ssqMy}YRJb~{lc{D>MzsOQdzs0uMq?|~p(hQXHp8C5>y3pb$%s8@4RRC-y| zSF$RomFnj?x+px((PP#yF`4QL3eqj9KHu@E(oyXGs@```=e zSVno{{yd>9>PNZ7cn_aqIXv;!y{cop3-DU#{I@1>9M7Q|p7Gv&7A!?QtBa^F8lO=4 z0Uz9eBAZE3AE!A`E7b@!flij+)8eC11D%9gnHA{Mk{lo)@1tfM;-f1V2{nM^sPrIJm`^-kY_s(-}tFQR7l2vz?(>i9+Y?4Ef#RDLN`exuKJ{yUJMhK5>!NvIB2 zqXxDYwY0}9{hImQ(!Zg~Mf}GZ+YCb0OK0Y@^l}!j?jxX%n_EH`)Qe~^>RD|=J%ZDi z6W>^RsxL0T00xsDjCpW5>Ji<+GWZ2GfMWl;l?X;{;x4F_@NKfdDb$P~nx9Yu3-{H1 zn8ZfK)1k`cws<+z0BfOEpuai7oP^rEb5OsgUyj{y6V})HPx;Md3_*=_0_sz1fyIAA zb-d3!g>8smM}1=|`aQt^PqaH>C*qe;D_8tK_aRdUHPfxA@@G-~e8pHg{}Fz;86-vh z5~&pG({356VhDaYrPtoJz!oA*$m+s4pZVF%#}Yy+WVjJPZ*k(Esc7MYx3cZdAPnp#%MI z*5;^qYt%}1LJhD_=sb+6V;+@0#T)|!>sN-R%naxD4#1``sY5;G|@ZnrMIjUX()Ql>l zI%;I`mZ$;sG>4j#%=tbGtTA_>8aRS#@HA@4Zlh-U*z&(xdSLiK|EoBnnHyEVDXLx@ zvm0t+15oYGMh(ojnt&>7w}gG>Df2q2!Xxtos(eWP*|R=1BcN6w3hKp`%;Gi8Hn@rO z{-_nq6wz54X@~Fs1oQ%FWsXD5bdxLK9mh$;&*55Z6v;j72$2K*Z@l8DXWt+7@x2vW z;!CWG!BGOe0|6Xo)Qp=)a}(&|m-FA7fR@IGn(16r!L^tTccKRL($WK>yK<3HGf!-0 zHA|pYs1}aFhN$+QquT#u@z62YjQaeKK|mGKn3+)(a+$@=DrN(-EouP0EItOc#4}MV zy3xFfI==s+K8DlBbn({c|MS1u1T=sRs1a^Q4d586gUc3wV!lUhE-#iVAKr{_rbC^c ze5iKnpxS9^@jj@5j)=wi&rD#UWt>O7qyMmY_}H$4IH&=pMm3np%#Y)Vm$CRY^C6}s z{S8*Z_;CXLe-POYHNlPM!8n|MC0rmu4d1hjzs&Eb52HwN-Ha2W_ChLDy#lD2RWKWw zUCrUBPrq5H692uWBMnm{(bYA<@^375S5HCmJvR_s~8Q{K>}38G^mC$TYh#+FKFo{Q02>5dJWV- z>!Utn+Myopc+`sR!C^Z8=LqQdRZHMH>V#U_p5_R12CCc&^LI zz0wo)1I;+pBU*sk{rk}W=l|C%;T>w^5fZxwqMOOgY-TZ3xnR`5>R7xPYKCpiUZ_ve zVW>y94pna>YE$k&|Ih!w6VOP{pho@x)zCXj|ADF)D~WrhCPc+MqE?~@YDS}QH7>UF z@}!q+;{0p#%^*RpG`L`PmGc+@;6EEaay{HB`@RWA-wKqrQeuMXl%` zs7LV}!{A>&0$R$C<~P(*hDhO-HX&-$WJaY|vh-G{@A-XE$7{N!@38b!sCFNtI(~&3 z=od3gN*DLVBA^1vQ5CXSJU8mumOyQ?S{MVHpq9J`s@_;sy;-Po3sEy%ZRx+E%560d zndgvG=JRe7Py?SW<3C(TJVGj0aV=^fJI&MP9rG>fnTJg6Rw@Ciy?m%+TohAb1JnSA zp;mGN`hWgkNkA30`V)9Fp=NNx($Any#bwk$9-=-*KUseEG=csfsq&#Z=!^P2z%W$# z{iqeVi0bDKs@!9YtIz+x38-M$w65a>Sd(}X)aQ6l)Bxt9%B@9hzWo;e8`WT7I`<7I zB5DA|Q5_FJ)fMA5CqdBU9F4zW#p$708RW3|sS1tjn zgESV;Y!*Nr$Fi2+&g_aBU?0?H%|z5MxA*ug<3Ch`F|)YcoB*}SvY}R_6Kd&Znkz9K z@g1nI-49TEC3aRffc&TlH9*yCiyA;*)C4D)zNG|Ia64*-hfx)-TY;w*{}=%Pz}~bO`siWPjp57?x#Ph{W<1JRQat=pLd*qD&8{hqbfW@HS`fRpdXeWCA%vh z8&xh5s=;&?FNoSZR3m%4rrum8)#=ny7Y~VOQ*l`u)Olyp5%E271eN{*&i&OMep8z@O$LR0A)~|43zOg-OaIRd zmB;OYh^S4N4E0OqnyAg_L+zPms2|17qgFI&UT2ZKoPRyrMkJ_#PN)h?QOD>Umd7`! z%~l|vGZ@uSYt)QKq6Rz-)!tl-ueJQmmVUs}&s+Mne4Ky(3x))}xxS&6vOxYo|DOle z#@fV(qyEI=4ywbv1zd-vQ1ObG8S7g57z`#p8TBfDWa)_ux}{HPX7&-#n<+2qr`tU^ z5?d7t^#48ozi}Y(c7iu8dlN>8SU{a#a3VOpCWLBZe&M z(tX(oXlV;uLJiakG(|Nq(9&0+8s1_aHZP+#(?isw`wO*c;}&z})1&h9qXtsa492DU z{BL9lA&R@1MMV{igUK)jHp0@Dz7n+pTP?oFJc0R1ziRo>O1J^UMNKdbs@+2P6w6~L zo&W45UB*(>rrU_>;F6`^wD=R$ar?{Czgl|OQm%XyY)pP^i}x}IqE=uyY5)^aD>)DS zfBv_QKsFK%pnj9_P8pc4v}?GaSpwBSd5hOZm1|`2u9n}&9D$noRMc@?ZRzJw^=_m8 z{J$okQ}EG@T*h^j+RT9(aZ%Jvs+#psE7ijC+nfE(aj1^wp}w$eK<%k}sJ#-lEazVd z*~_|u^-wRGj;IbNpdQHr)XWc}Hs@JX$ImVOjrrXSU(S_}gBoxORQXJ(c5_;O$#OoI z5o`tOpq8w$73^v0BTxevZ_YstWToXFHcz2CyokB*HtM)VFYjht1l3ME)PQ>XEa9i) zEMqomAd7G>ZnyMq6$1UgM(>MyWFt@wE=0|2ou%)!_*L^UYQP^+k0e?}SI?J%KynhY zqB3fr3bsa#a2VUb@xot>6`0{uV#pSJ=p z&3{k@LsfMZW1$9=3^jn9sQmI4uZP-XT~I5t5H+AZ*buK^JU)8xQY6b_yo1&C2G5dYGHcf%`H9&)!}@LZ%36sZ1HQTKYV_OTH&;H z+(1gAzG>CKKIj`wK+h~hUAM&XP)k!3wPfW{OB;;&uo3Fdfaaj;owWSBs1j2vv^meJ^uTjmarR#QQ$ag(^RM*=>Ho{eNkVb&Z9aE*T5}#64WEBiH)&0 zs-v5h{sc9UunpbJ6QEWiJ*vIZI9%s{FagatOe6OqiiRDC$3itY6t&wY;XIs+nn|9< zu7kp;fdre~%^BuS>_`4B)Ly9B#Mu&;(!bY}fEtY7)D0x5nI4s%(=31*P;s*g>c!On z_4z&lHRCOoe+*UsGOFAy)Cxps<_3@&{h$B238-KpJcK1N9)@Wi=>NB&Nl`zoHb#|O zikit9bGLa4^@whv%D+JkIC~2>u_CB=In*Pl)q?Y{gvlfd5`+3IAPmBuPNs95m3T>RL6Tz zOMC*=z(ee7pPrazk@q&H&9ERx1;N*HZ~*P5sTv`RC}>Ix$-qpE4Bl*Src~l zucXf_NT2kOnY!Qzp+xN}|_HIsp;&wy!o826(7uE?OS?nko~s2K%xbMeynAMquq zm0a9C(ErbTcca>g-b3k}zkCGrtJG?!7f(lj1~W%(o^9rJ)X2YJhya$pr!!fvK>vSc zD^+i|H@0D8$~{L-tXv=GFx1}JZ@$A^^zWtW8|eQ_rwwp8@pY&XX6xsUQC(C+^Klej z$4=O|zgw9L<`dNU|AzVk5@mo}k$k8}HOS%%QJeHJ`v3ob0tUK0kO!5~1IyrK)Y9ET zJ%abBa~+OTqouEa8dz6U{yHp$zhh+#H^}{ARvpx5#v9ZoOfuM+YB1+N2MHNTSdUFn zGmkdJHINtQ5Fd^D^h+_+{e)BnHLy`Q9v7RLhXwloyTAKz2I_(twHWigV$9!e^ zg~qxGl}DAEiy?4{kATkO3e<NV9ZIuI;g!c(b9LI2DsniXHWyXj2gfb)Xd(S5huEM zO0$qz3st@|`hWj7z#rh3NEnrj$*7SovGmm#oA?%spE9qY%H1&^qgL*f892%1$3?9` z5>&@&Q4`ChxXyn=0&1w8+12cW$4MWAs#s>Sn{f@)Ok1NG9*oK#i+ZNB%vF}Y6IJf0 z#m}36pigh4=LA$S(G=G~MzaW3BE6cq1ocJYEouPCrn>J5`7t5!8mNJEMLilHs^ck^ zKF?f@>UaB8&c7ErMFHDyR->p-x8=bA;uuH8-PP zY`ahcyNYV>*)-07Mgkv6P(#V5yU+cMsAE%1p5DD6(3Qbw(DoQdM|whG^2Nx5IDOx7p#dsZ?=2G)xzo|%*TfK4)x8a>KvEf9rc;88#TiabKSS%SIuXr3SZ5b3tYz;Q4QonEp0{AjH+T} ztc_}~mDvkbZY1ib>ape`N&nt90-Dh&RKwR%GkIa@5f{2ozj&yIN}@U}YgRF9VIb)Z zF)TL0kl5DpJ6XJ^*$@5S{|6CJg^{R^Ct)t!jOyq)YG!Y6JpMqf%=kraZ>&Jg>=kMv z0gGL|$fyCwLQO0l>J6CzRj$}#&VPOal}XSs9E+;3%L?p64d9e{5jBt-s3m@i8pvmh zM_uB|2ch;*YE*tH)BqY;ysJ5OiO*G7MuJAP7Il1fqB=g0s(1~xw9ioke1-ZjdV|{i z|Cv#ix_FS874;%3L1RDEAXgkc6Rsg)_~Fz?Bo-}pQL9{C)eG0HQ2ZMm^7I&fUfpTn z3F(=*KU-tDX+4;ReqIHrbDB09k(P`yv$?HFe~}JE9#LN}v+|Vn9r#(30VKC@G75Ac zvm%Y;r-M>zjCgqNU#~2`blltW2Ge0X>Rh!6rJ=%A+AC}WF313ukROHoIPAY)+w+Gz zS;eB3)0x8GtnvF)E<>mL)Ci4Erfet5l_jq0meqAJevTxrjd_;*&6GdOAeIqNOB?%% z?@|A4h){153-TPrj(szf1TIb@CDJj^{}~$gL}w zn=eNHfAP1ny@Is!w~vNmF{;XB#j_kLXD6OkEYZFVfa2>dmF>&nr4nq|KIw?x$zuPJlCSBKV(h`xko{mnEH;ek=@i2L*X!8vDMaX~1J%{uh zl;i*F#^*(&fn^kkMuo^^PN70=(jwSEGLYV%dlB(a@@f%@oSWcOj;#OiL*#wL0DH0?mw)PAsCbP%UL`swxV1wYi}a@pZ_2d^$-uL=vdcYhnJ8vP4;hGXoFp$f3d!f z2A|Q`T&wVm20K%!5(Q_Iw~2U1!m+T9HFkyYA@X*it~a>-m%%G-i^ba!uBimOM$-@f z?8%Gg?~nOkA<&t^4QXUDg=W)PB<`f7U$&8|?oQHl?e>8Z2NC3)q^duL_0Tei(_!7ALx()MB<>hGa1-v|PM)>vN(B_@%73+Yw1#zxQp|1!|~ zMx}n_e^5(Y4~Xj*vi!c)YeWAz?cfwdDSfa17e3q4v2a z(MHLTJpT>W`AIx&jrO6@4c1rz8md9zkd`-;@Xsrv8lm2B5^_@h4h{Dt%rE`?e|u=+ zFJ&uOxG{NIREM(u_wT%)t>GRLV_8Q^zD?)Hx&Qs8A*D~?zCzi#H1vo({j9{lQ1)Me zr1hecP}ECI+DF2d3C~1bm$<{w$1&>p-~Sm2Y$72ZvyMPzUGYh~M0f`G2`V-wFFMvG zT~|lqCu#KO^*81Ek(Qc-GlcI`?mPK+h&LxZi1r(jeug$0lAegPV*30)%LuP>mnX3S z1%AB-lD?Y?nSbeM3~9RF(O^}=#|fXKOg-*aG^(EhYf%0v`MN3*-b%SKF6#gPP(Mw% ziT-^5{9R62M!%kdHLbH7SlBB4YiXx`8Q^m|Tt$8o)YXQ2K8?n+_&_@8Ls}@(`cgj| z;bo*%rJqKmWg}cd=l|!`oxnCK&!j+2ZvEbR7=?7DqvJ3Z4k9m$)oWv`k302b3$e(F9VZ;Z7&mH1zj(Vrajw6vJClTklzUL;f3ND{`88Pyt6+HUS1 zR17AKKLGGT68`l%K$@;j3^I*{6VS$Y!u@GCI(IosKm9*-N6=;wo&QW^B%)w#D*FHS zH4UC8{s})*c`o6H>V*6T46+dAN73P9;<_qPCfLHwN!OKya--;AGItnD%Vz^9PF^y~ zD4IeY=CKjBumWlzfN*@$hjK^YPQxHBlfHxoYg4Bk{=C9j=UMS2i51BUNhcp^;}-E@ z>Vx|+=`pbyH~(tc<5wh}FNjJBh(zPo)x(^KBZ!B##{1(zDh%YVN5dOw>?-%qt2*JW zlu^=G@aIAtCDYx- zA$*MRYsy5&9h8~QJ(}|KtPOP%fxKnZ4WRrs?ke2Jxf_!{6uaoxjX$rUHj|+w9HvrA zY()Nd8XQ1gb<##z;ZcMKS=|>jcARh$R;Lk-E~HG5wN;mLx;BwsigF8RYc=77lX5dYa@$?h|G$$-OGBrHY2!Whbj2X7D;jy3xNFkp z3%o~qamqd*Zx&@kk=9J_|087FC8Fyu!XfD}GWQS)t>BJrgUd`q;Yp8V9nGQ60@6BS z3F_vc@zsQ5lV8u@n){z3v^j@z*{R!-{8HRqN&A zzEP+;v-t~kRid#%grk!d!3MC<8lH{?t&Kluqq&90lb+YY@2R_(x|^uGoie&|5ne~S z?=gkqTVwn;GrS56A};o^&W}=|5S9NU{WNJ!$XiF+PVP&DcTl$k;l7kfz#W@=vQ1=K3a1-(I|K83I2i930tEhsfxO4R@iT@pM#$3Z1QBHyccO;-yG$Mu#n} zLp3yzcxK{l$sqa|*K=zFCD7RA@2J0b&tG5+{~Y!)hOJH1|H%$ z8i~*S8|l}noS%WbBAvfC@&DH!lpRF;Am#L@MO&~d<*t!-f;?S=xZ7BrUewRby`6GF zq}`)z5yIg@(0^hw25^s6WipyjF*os^-0dlpp0q>^B!IB4OQh?1Mfy29>%eRd5&n;R zhUHx+tm^>zqo`ZoR-qd4h=d2z7k^>IJEY(L>AFFMQaBN_(nxQ@^C>uNc|hL}XBZ5dThkH#*Yw6yK7jYqPak>*w?TNq5B( zm_a}PrKMsNMxv`JiED{3q(B^8N!kI_RnUw?*|x;z6Mswj@Z2jXe}S}^n2-EoHh_!d z#bE&TNl#1Xt5H{I(&AF)vEKj9h$N!1_auBL^We`Z5iUmhG~!2bEB7`U)V~PPwV1~4 zP-igtk!d3Zx306qzY)&HKx$Cu=arZ8F-R+H?&lRi{i&3nOa3+zea+G~w;ia_E*21UgBgi`MK;2UM z{@<8J^I7Lbu`zdjD)h$9+`&|c=LYO;q|#U7scp7Oer$Q-Ao)J>Qq$%K+9*re;-uFh zynwu<*o8KA1yH7>p8t9m_cD+$mhfsCh)uX6_bcL6tioG7U}06csm_S6q)}ZNxJy$v zJ!x&J+l%}>gr^g3L^vVgwK#+LI0m+ka6dKBii+E5q#etqYaN-odXX24`z+z9MhCUYUt)t0lPo+E!;@FXI-gJZ2ek9^N=JJh?Iq-% zU}fqNUd)|C^RGqz0xE34zi22eg+{p1`Tve`JDcfqY|TB(;_Bcqjm)CXaypsCJ(GA- z>%0o_e<@Re_G*(BM4qnl4*&ng)AN7B{lXH<6OKf|0mLuTa9nk&8Q3+<8aZMvqWpQv z)uoejzYHuf6PQlDLev}0-IH=@D6^FGNtFMOw8H2MOQpOtwv+-{NDND22hxJ^GDg9+ zR1875B4w5l9#6UMgu4^gb<+l;a8AlqP{1yt-d;M*h$(2R8VM=6w^5&qe{RVC_9o-H zExA$)6VA%$k5DK9o%F?0+)e2yKIxxHi({Qva}9al)DzcS?&TJ~N8WSFMZwCnd6|A* z{4&_%I{&&pk+FgTtMDXlB5g7q#j%D|W+dsa$X|>9T6%5#K;tcbDOaDeFNvq2qX<~$ zmk!mAuJsJ+9wt@)sc5hTx2}0Mt9?`&Ov6>NFZVI-LBw?}cX;PX`%E}9b(b*MlvdZW zy(HxCVE_$DNJw5e!gXk)0(VaGbopu$nMwoQxSP8)ZzgHuiC>`7L}sk(ITdWNya(i6 zri`w>gx^x8B=MpQ;&+KL{_Tp^1d2QT7C7{-nWWq%EgRbK*OQcOtB-k`2BzZn5@~ zV_4!(s6Uvn{_oDc&?ForQi6s%(&+^<#t@E0S`6Y- z@#l4uh9_tiT@T;K|J_H~i&)p6!UV}r$$)fq)BKCj z(9df!4e7d0LuF{N0|i@HT0-*+>AHH8*N1Yu2>-*qi*O;zjH83Z#OqM*G4WyCS18+q zfsC@c2}lb;+`s<0NZiPsgoJlgUS^{UOMW5JAJVX{0)%H%W01cWmk|wnI#4Sk~ATk0L5q2#1Bz>bvZN!~!rjlBkH5g3<)H=)C3LqQEez+jQ*MqH9pEChgmI^NKcW)}noju1&hP>C`c(Q_G-EJ-YwQ zn|g6&gSfxub?@4wXN&eh9Xj=F(QQlGRp}ChZ`r<6uONTrsl^ZHh}pbVi=Z|gTefN6 zKB#${t}U9W(JkE$#|s&?LsMGq-l9Wib=9M5i!Gy$cL*1zqZN63VPN#8ox8T^){U&7 zCe8n^v2%%Sql&_?XOcQ;Ov!^*Y$_NkMNOn81%W`7SkMIpwM9xrK}|uZV|yHr7|&St zxM>zBZXS&t=Sdn*lekHf#;H?+<0x^i<41zTmIVuTh_Z<9Jj5cbKx`0aX583;4GUZM z9?w1JKmT{`(wf^e?_ezN^R%5~sDH=LQFK5QC$InZh=25QnbrOJ48wpyyxwLC<-2mqk9;i-*SmPtN@Sq7-b;HGi_pkXZg** zAKNtzZ4SYy*9v&-Jk4@o=ih6My)MBA{;?uUb7nU9tDf&mN)JOF3fzI3OhwQDV(vNC z!-@t*a}O*lIU9+N@-?1oxzX8bxg79#p#oCsi94riz>%x0OGKYF6B(<`#rpiBsRj|} zh|f=ac$88{1vW6dn&vMt%bx?GXaJsL!#7hIG1*x_Ko) zet~11r2(}VNKHZiCxzjE#rbxs^MVk7DdZ_9tFBZmdFptOAi@CUbe+Neg)UAXz zG`=6~v*6_@98+co;H0#FoouVp7Y(0~uSvEv@j<<^n$=df57VM+Y2xO~FK8=KywNA8 z??M*o=?_F}lN<@li*da84IUhnqdRzF62VJRzOAywvPyD8&a8qa^wp2VP;I@sH!qLH zt?*LSqV?ejQ04c)3~R4l|mqy_I4l<9b74vT38gw#}jU9s>;S%_nb4;9OhTx!gZ$ZAr_N_(DPoBF?NhS*%-PDZ1Eb~XEoCz&Pp4omwA=$Vxm?U- z-)MhbdiD#^-0}`|T$=fZrLi}?)%g#G<=mu_i0D)KMGwi^tR_M9-2i#3`k2wZ)Ep+? kZUXpPf5My)KqoJT&?{lGueMItrEKKzd;~2_lBa6_0SL?hzyJUM delta 41751 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 Date: Wed, 9 Nov 2022 23:56:45 +0800 Subject: [PATCH 5/8] update changeme --- README.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d64ac1daad..657d64267d 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,25 @@ You can download it here: https://github.com/SoftFever/BambuStudio-SoftFever/rel ## BambuStudio SoftFever change notes: +### [V1.3.3 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.3.3): +1. Improve top surface quality. + Fix a bug that internal solid infills didn't use monotonic when top surface is using monotonic lines +2. New feature: filter out tiny gaps. + Note: for aesthetic considerations, this setting won't affect top/bottom layers. In other words, gap fills that can be seen from outside won't be filtered out +3. PA(pressure advance) now support multi-color printing. A new PA value from the selected filament profile will be applied whenever there is +a filament/extruder change action. This change only affects multi-color printing. +5. Users can now set float values of layer time in Filament->Cooling tab. +6. Allow to set target bed temp to 0 +7. Fix a bug that layer number is not displayed correctly in klipper UIs +8. Force using linear PA model when manual PA override is enabled for Bambu machines +9. Remember the last used filament +10. Skip checking BL network plugin for third-party printers. +### [V1.3.2 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.3.2-sf): +1. Support device control view for 3rd party printers +2. Port `Small perimeters` feature from PrusaSlicer. I also add an extra option to adjust the small perimeter threshold +You might want to reduce speed for small perimeter parts to prevent failures like bellow: +3. Add fan speed preview mode +4. Fix an issue that print time estimation is inaccurate when `Klipper` g-code style is used. ### [V1.3.1 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.3.1-sf): 1. Support change bed size and nozzle diameter 2. Allow users to specify the bridge infill direction @@ -56,11 +75,14 @@ You can download it here: https://github.com/SoftFever/BambuStudio-SoftFever/rel Demo video: https://youtu.be/vSNE9iGj2II ## NOTE: -## - If you have troubles to run the build, you might need to install following runtimes: +## 1. For Apple M1 users, please take a look at this [article](https://www.howtogeek.com/803598/app-is-damaged-and-cant-be-opened/ ) about how to run unsigned applications on your machine. Or better, you can build it from the source codes if you want:) + Apple requires a subscription(costs 99$ yearly) for developers to sign their app. I don't do a lot of dev work on Mac, and this is a nonprofit open-source project, so I decided not to pay the money ;) + +## 2. If you have troubles to run the build, you might need to install following runtimes: - [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/BambuStudio-SoftFever/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe) - [vcredist2019_x64](https://github.com/SoftFever/BambuStudio-SoftFever/releases/download/v1.0.10-sf2/vcredist2019_x64.exe) -## - BambuStudio use G2/G3 commands by default. You need to turn on ARC support in your printer's firmware use with this slicer. +## 3. BambuStudio use G2/G3 commands by default. You need to turn on ARC support in your printer's firmware use with this slicer. - For Voron and any Klipper based printers: You can enable gcode_arcs(G2/G3) support by adding following section into you printer.cfg file: ``` From 3af2c20bb259234106f23e01c5d6ea6e36870dc4 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 13 Nov 2022 13:02:12 +0800 Subject: [PATCH 6/8] fix a gcode preview compatibility issue --- src/libslic3r/Config.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 3800aefb81..c6e6c1797a 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -1150,7 +1150,7 @@ ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, Fo bool end_found = false; std::string line; while (std::getline(ifs, line)) - if (line == "; CONFIG_BLOCK_START") { + if (line.rfind("; CONFIG_BLOCK_START",0)==0) { begin_found = true; break; } @@ -1160,7 +1160,7 @@ ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, Fo } std::string key, value; while (std::getline(ifs, line)) { - if (line == "; CONFIG_BLOCK_END") { + if (line.rfind("; CONFIG_BLOCK_END",0)==0) { end_found = true; break; } From ff2cf17a7390a9e6b9e9c8f894b07a4c7b691ba5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 20 Nov 2022 09:23:16 +0800 Subject: [PATCH 7/8] special outer wall order --- src/libslic3r/PerimeterGenerator.cpp | 43 ++++++++++++++++------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index e9dcdf387a..dd06f9cc78 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -612,18 +612,13 @@ void PerimeterGenerator::process() } // nest loops: holes first - int idx; - for (int d = -1; d < loop_number; ++ d) { - idx = d; - if (idx == -1) - idx = loop_number; - - PerimeterGeneratorLoops &holes_d = holes[idx]; + for (int d = 0; d <= loop_number; ++ d) { + PerimeterGeneratorLoops &holes_d = holes[d]; // loop through all holes having depth == d for (int i = 0; i < (int)holes_d.size(); ++ i) { const PerimeterGeneratorLoop &loop = holes_d[i]; // find the hole loop that contains this one, if any - for (int t = idx + 1; t <= loop_number; ++ t) { + for (int t = d + 1; t <= loop_number; ++ t) { for (int j = 0; j < (int)holes[t].size(); ++ j) { PerimeterGeneratorLoop &candidate_parent = holes[t][j]; if (candidate_parent.polygon.contains(loop.polygon.first_point())) { @@ -650,16 +645,13 @@ void PerimeterGenerator::process() } } // nest contour loops - for (int d = loop_number-1; d >= 0; -- d) { - idx = d; - if (idx == 0) - idx = loop_number; - PerimeterGeneratorLoops &contours_d = contours[idx]; + for (int d = loop_number; d >= 1; -- d) { + PerimeterGeneratorLoops &contours_d = contours[d]; // loop through all contours having depth == d for (int i = 0; i < (int)contours_d.size(); ++ i) { const PerimeterGeneratorLoop &loop = contours_d[i]; // find the contour loop that contains it - for (int t = idx - 1; t >= 0; -- t) { + for (int t = d - 1; t >= 0; -- t) { for (size_t j = 0; j < contours[t].size(); ++ j) { PerimeterGeneratorLoop &candidate_parent = contours[t][j]; if (candidate_parent.polygon.contains(loop.polygon.first_point())) { @@ -675,18 +667,33 @@ void PerimeterGenerator::process() } // at this point, all loops should be in contours[0] ExtrusionEntityCollection entities = traverse_loops(*this, contours.front(), thin_walls); + // if brim will be printed, reverse the order of perimeters so that // we continue inwards after having finished the brim // TODO: add test for perimeter order - bool is_outer_wall_first = + bool is_outer_wall_first = this->print_config->wall_infill_order == WallInfillOrder::OuterInnerInfill || this->print_config->wall_infill_order == WallInfillOrder::InfillOuterInner; if (is_outer_wall_first || //BBS: always print outer wall first when there indeed has brim. (this->layer_id == 0 && - this->object_config->brim_type == BrimType::btOuterOnly && - this->object_config->brim_width.value > 0)) - entities.reverse(); + this->object_config->brim_type == BrimType::btOuterOnly && + this->object_config->brim_width.value > 0)) + { + //entities.reverse(); + if (entities.entities.size() > 1) { + std::vector extPs; + for (int i = 0; i < entities.entities.size(); ++i) { + if (entities.entities[i]->role() == erExternalPerimeter) + extPs.push_back(i); + } + for (int i = 0; i < extPs.size(); ++i) { + if (extPs[i] == 0 || extPs[i] - 1 == extPs[i - 1]) + continue; + std::swap(entities.entities[extPs[i]], entities.entities[extPs[i] - 1]); + } + } + } // append perimeters for this slice as a collection if (! entities.empty()) this->loops->append(entities); From e022c5ad5b52707c19af288130b94265f081a5e3 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 20 Nov 2022 11:22:35 +0800 Subject: [PATCH 8/8] New inner-outer-inner/infill mode --- bbl/i18n/zh_cn/BambuStudio_zh_CN.po | 3 +++ resources/i18n/zh_cn/BambuStudio.mo | Bin 172866 -> 172967 bytes src/libslic3r/GCode.cpp | 3 ++- src/libslic3r/PerimeterGenerator.cpp | 28 +++++++++++++++------------ src/libslic3r/PrintConfig.cpp | 3 +++ src/libslic3r/PrintConfig.hpp | 1 + 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po index 015b1f9d76..3b73c53869 100644 --- a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po +++ b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po @@ -5519,6 +5519,9 @@ msgstr "内圈墙/外圈墙/填充的打印顺序" msgid "inner/outer/infill" msgstr "内墙/外墙/填充" +msgid "inner-outer-inner/infill" +msgstr "内墙/外墙/内墙/填充" + msgid "outer/inner/infill" msgstr "外墙/内墙/填充" diff --git a/resources/i18n/zh_cn/BambuStudio.mo b/resources/i18n/zh_cn/BambuStudio.mo index ae116a398ac75bfdf0507616ad67a877e9d8fc4e..841ec9074e8d8a8a203b700828368da95f6100ce 100644 GIT binary patch delta 42135 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 delta 42070 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 dKZ6@C-p2p=Rlast_pos()); } else loop.split_at(last_pos, false); diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index dd06f9cc78..c0faedfe75 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -673,26 +673,30 @@ void PerimeterGenerator::process() // TODO: add test for perimeter order bool is_outer_wall_first = this->print_config->wall_infill_order == WallInfillOrder::OuterInnerInfill || - this->print_config->wall_infill_order == WallInfillOrder::InfillOuterInner; + this->print_config->wall_infill_order == WallInfillOrder::InfillOuterInner || + this->print_config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill; if (is_outer_wall_first || //BBS: always print outer wall first when there indeed has brim. (this->layer_id == 0 && this->object_config->brim_type == BrimType::btOuterOnly && this->object_config->brim_width.value > 0)) { - //entities.reverse(); - if (entities.entities.size() > 1) { - std::vector extPs; - for (int i = 0; i < entities.entities.size(); ++i) { - if (entities.entities[i]->role() == erExternalPerimeter) - extPs.push_back(i); - } - for (int i = 0; i < extPs.size(); ++i) { - if (extPs[i] == 0 || extPs[i] - 1 == extPs[i - 1]) - continue; - std::swap(entities.entities[extPs[i]], entities.entities[extPs[i] - 1]); + if (this->print_config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) { + if (entities.entities.size() > 1) { + std::vector extPs; + for (int i = 0; i < entities.entities.size(); ++i) { + if (entities.entities[i]->role() == erExternalPerimeter) + extPs.push_back(i); + } + for (int i = 0; i < extPs.size(); ++i) { + if (extPs[i] == 0 || (i > 0 && extPs[i] - 1 == extPs[i - 1])) + continue; + std::swap(entities.entities[extPs[i]], entities.entities[extPs[i] - 1]); + } } } + else + entities.reverse(); } // append perimeters for this slice as a collection if (! entities.empty()) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 89d9ff106b..b36b47d4c1 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -159,6 +159,7 @@ CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(IroningType) static t_config_enum_values s_keys_map_WallInfillOrder { { "inner wall/outer wall/infill", int(WallInfillOrder::InnerOuterInfill) }, { "outer wall/inner wall/infill", int(WallInfillOrder::OuterInnerInfill) }, + { "inner-outer-inner wall/infill", int(WallInfillOrder::InnerOuterInnerInfill) }, { "infill/inner wall/outer wall", int(WallInfillOrder::InfillInnerOuter) }, { "infill/outer wall/inner wall", int(WallInfillOrder::InfillOuterInner) } }; @@ -1000,10 +1001,12 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("outer wall/inner wall/infill"); def->enum_values.push_back("infill/inner wall/outer wall"); def->enum_values.push_back("infill/outer wall/inner wall"); + def->enum_values.push_back("inner-outer-inner wall/infill"); def->enum_labels.push_back(L("inner/outer/infill")); def->enum_labels.push_back(L("outer/inner/infill")); def->enum_labels.push_back(L("infill/inner/outer")); def->enum_labels.push_back(L("infill/outer/inner")); + def->enum_labels.push_back(L("inner-outer-inner/infill")); def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(WallInfillOrder::InnerOuterInfill)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index dfc0888d66..9e009f7e31 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -75,6 +75,7 @@ enum class WallInfillOrder { OuterInnerInfill, InfillInnerOuter, InfillOuterInner, + InnerOuterInnerInfill, Count, }; //BBS