PrusaSlicer icon indicating copy to clipboard operation
PrusaSlicer copied to clipboard

A method for less visible seams

Open MichaelJLew opened this issue 8 months ago • 48 comments

The problem presented by the seams at layer change needs little introduction. It is sometimes trivial and sometimes important and PrusaSlicer offers a lot of variables that can alter the seam location, form, and visibility on the model. However, there is often no good way to prevent the seam from being #intrusive.

I have a method for making seams in my 'hand-made' gcode that are far less intrusive than those that I can achieve using PrusaSlicer. I believe that the method would be readily incorporated into the slicer and should be offered as an option.

I call the improved seam a 'scarf seam' because it is similar to a scarf joint that woodworkers might use to join two pieces of timber end to end. The scarf joint is conceptually simple as it simply has matching tapers on the ends of the timber that are glued together. A long taper gives a strong joint.

The standard seam can be described like this: the nozzle is positioned at the start of a perimeter at the z-height that is a full layer height above the previous layer. Extrusion starts and the nozzle moves around the perimeter until it arrives back at the start position whereupon the nozzle movement and extrusion stops. The scarf seam differs in that the nozzle starts at the same z-height as the previous layer. The Z-height is gradually increased as the perimeter is printed until it reaches the full layer height. (That is one of the scarf tapers.) The perimeter is then printed normally until the nozzle reaches back to the starting XY location, whereupon the nozzle retraces the first taper with a complementary taper where the layer height is decreased gradually to zero but the z-height is fixed. (That makes the second taper.) After the second taper is complete the nozzle can be moved away to complete the rest of the layer in the normal manner.

The low visibility of the scarf seam comes from the fact that the discontinuity of the joint if spread over the gradual tapers. When the nozzle is moved to the outer perimeter to start a scarf seam it is moved with effectively zero layer height and so there is almost no artefact from that movement. The scarf seam is compatible with any object shape, but I used a cylinder for the example for my own convenience. (I normally print fountain pen parts and most of my printing is pseudo-cylindrical objects with gcode from custom-written software and so I have a big library of cylinder-related functions.)

The scarf seam has a couple of possible disadvantages. First, it gives a region of variable layer height that may sometimes be visible. Second, it will be slower than the normal seam because it involves the nozzle moving twice over a part of the outer perimeter. That speed difference may be trivial in many cases as the scarf distance can be small compared to the perimeter total, and the outer perimeter is a small part of most printed objects. Finally, the scarf seam requires that the outer perimeter be printed first so that the first taper does not foul adjacent extrusions.

Example file

The attached file was generated by PrusaSlicer and then gcode generated by custom software appended. The PrusaSlicer settings were for the MK4 (no IS) and used the 0.20 QUALITY setting for Prusament PLA with the following changes from the defaults: no retract on layer change; no wipe; external perimeters first. The seam was painted on to force it to align with the seams from my software.

The first 6mm of the cylinder are the PrusaSlicer output. The region between 6mm and 12mm has a scarf seam with the tapers extending around the full 360 degrees of circumference. Between 12mm and 18mm the scarf seam has aligned tapers over 80 degrees of circumference. The alignment requires a retrograde travel move after each layer. The last section, 18mm to 24mm, has the 80 degree scarf but does not re-align the seams and so the seam moves by 80 degrees at each layer change.

Various seams

cylinder d=12 h=6 v2d.gcode.zip

MichaelJLew avatar Nov 08 '23 23:11 MichaelJLew

This looks really promising and would make one of the banes of FDM less of an issue.

mix579 avatar Nov 09 '23 11:11 mix579

Very few new features in a slicer are revolutionary these days, but this seems like it could be one of them.

thanhtacles avatar Nov 18 '23 08:11 thanhtacles

Scarf joint (source: wikipedia) image

petrubecheru avatar Nov 18 '23 21:11 petrubecheru

I would love to see this idea receive more attention. I've printed the test cylinder, and the result is simply great.

I can imagine that implementing it in a slicer might be quite complicated since an algorithm would have to handle various shapes and sizes. Nevertheless, the result is very compelling, at least visually.

ulfertg avatar Nov 25 '23 11:11 ulfertg

I think implementation would be easy in the slicer. It would just have to keep track of the first x millimetres of each layer, do the taper over those point and then complete the matching taper over the same points, in the same sequence, at the end of the layer.

I’m hoping that now that PS2.7 is out there will be some attention given to scarf seams…

On Sat, Nov 25, 2023, at 10:40 PM, ulfertg wrote:

I would love to see this idea receive more attention. I've printed the test cylinder, and the result is simply great.

I can imagine that implementing it in a slicer might be quite complicated since an algorithm would have to handle various shapes and sizes. Nevertheless, the result is very compelling, at least visually.

— Reply to this email directly, view it on GitHub https://github.com/prusa3d/PrusaSlicer/issues/11621#issuecomment-1826288208, or unsubscribe https://github.com/notifications/unsubscribe-auth/BBXJAZJ423AYI5TJCWZ4QGTYGHKJJAVCNFSM6AAAAAA7DV6GVSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMRWGI4DQMRQHA. You are receiving this because you authored the thread.Message ID: @.***>

MichaelJLew avatar Nov 25 '23 19:11 MichaelJLew

commit https://github.com/b3n3d1k7/PrusaSlicer/commit/173a69391e3091cdb63dd9073a2e5bdf5818ea95 (that solves issue #7932) implements a 360 degree scarf for the last layer of vase mode. I think it can be adapted

petrubecheru avatar Nov 26 '23 11:11 petrubecheru

Yes, that would probably work. In fact, my own scarf code is adapted from a routine that I wrote to go between vase-mode and layer by layer portions of my objects.

I think that the best solution would involve both the slicer and the firmware because the firmware could have responsibility for tapering extrusions over the length of a move. Such a capability would be very useful for non-planar printing. I once asked for this feature for RepRap firmware in the Duet forum, but the response was that my use-case was too specialised.

MichaelJLew avatar Nov 26 '23 19:11 MichaelJLew

wow, that's astounding, I will peek at the code.

SaschaKP avatar Nov 30 '23 08:11 SaschaKP

What should I do to gain more attention this feature request? Given the effectiveness of the scarf seams and the straightforward way in which they can be incorporated into slicers, I'm surprised that it has no visible interest from developers. Presumably I'm 'doing it wrong'...

MichaelJLew avatar Dec 02 '23 22:12 MichaelJLew

I love it!

Maybe they have more important things to do, but you can stir the hornet's nest a bit: post this to Prusa/3D printing groups and maybe it will get enough traction. Eventually Jo will get bored from all the people who tag him asking for it and will just greenlight it 😂

Reddit:

  • https://www.reddit.com/r/3Dprinting/
  • https://www.reddit.com/r/prusa3d/

Facebook:

  • https://www.facebook.com/groups/PrusaOfficial/
  • https://www.facebook.com/groups/prusacommunity/
  • https://www.facebook.com/groups/2144493972517241/
  • https://www.facebook.com/groups/Prusai3users/

Show everyone the example picture from your initial message here, and it's sure to get lots of traction. I'm rooting for you, this is something I always wanted to see.

popsickl3 avatar Dec 03 '23 20:12 popsickl3

@popsickl3 Good idea. Yes, I'll post to Reddit, but not Facebook.

I deleted my Facebook account after Zuck threatened the Australian federal government with retaliation for proposed legislation that would have Facebook paying a small amount to Australian commercial news outlets for their news. Facebook then closed down all of the government departmental facebook pages and those of many emergency and social support services! He/they are not, at the moment, as obviously odious as Musk, but he/they are equally deserving of no support from me. Sorry for the rant, but things like that should not be forgotten. You can read about it here: https://www.theguardian.com/media/2021/feb/23/facebook-reverses-australia-news-ban-after-government-makes-media-code-amendments

MichaelJLew avatar Dec 03 '23 22:12 MichaelJLew

This is a nice idea but the requirement to print the outer perimeter first is a deal breaker. Most designs I print have some overhang perimeters somewhere (negative beveled edges or horizontal round holes), and printing the outer perimeter first results in poor quality due to insufficient contact surface. That's why printing the outer perimeter first is disabled by default. It's useful only for prints with no negative slopes that need high dimensional accuracy. I'd wager that this setting is rarely used, and by consequence this scarf seam feature would also be rarely used. It would be great if the scarf seam was simply an automatic integrated feature of the 'outer perimeter first' setting.

amatulic avatar Dec 03 '23 23:12 amatulic

@amatulic You may be right, but it certainly should not be a deal-breaker. Any clever implementation in the slicer would do the scarf seam where is fits well and a conventional seam in layers where the outer perimeter first is a problem. The slicer knows where there are overhangs and by how much the hang over, after all.

MichaelJLew avatar Dec 03 '23 23:12 MichaelJLew

@MichaelJLew - I'd like to see an option to "print non-overhang outer perimeters first". Then this scarf seam could be used on those, and on layers where there's any overhang, print the inner perimeter first as normal. This concept looks promising and needs some thought on how to implement it so that it gets used when it's possible to do so.

I can't think of anything I've published recently that doesn't involve an overhang somewhere, even if it's just a 45° beveled bottom edge. A Benchy wouldn't do well with outer perimeters first, but it might be good if this could be flipped back and forth automatically.

amatulic avatar Dec 04 '23 01:12 amatulic

This is a great idea

LordRaptor avatar Dec 04 '23 09:12 LordRaptor

If it's easy open a Pull Request with you code, it's just an idea at this point..

I don't know what a Pull Request is. Yes, it's an idea for the slicer, but I have already implemented it in my own LiveCode functions, so it is not "just" an idea. I have posted an example of Gcode that works, so it is not "just" an idea. I have also given a description that is pretty much pseudo-code, so it is not "just" an idea.

Does a person have to provide C++ code in order to contribute? I don't think so, and I find your comment to be a bit offensive.

MichaelJLew avatar Dec 05 '23 19:12 MichaelJLew

I knew what you were referring to, but thank you for mansplaining it to me.

MichaelJLew avatar Dec 05 '23 21:12 MichaelJLew

I have been castigated on Reddit for saying that the implementation of this should be "easy". I guess I should have said that the implementation is conceptually straightforward. I have also been castigated for not supplying the code. I assumed that my Livecode code would not be helpful, but here it is: `on mouseUp put 50 into xc put 50 into yc put 0.2 into LH put 0.45 into w put the cPrusaSlicerCode of me into tcode--6mm tall cylinder, two walls, LH=0.2

put 6 into z put 6 into rout put rout-0.9 into rLumen put 0 into theta put 600 into f

put rout-w/2 into r put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode repeat while z<=12 put smallSeamLayerMW(xc, yc, rout, rLumen, LH, theta, z, f) & return after tcode end repeat

put rout-w/2 into r put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode put 1.4 into seamDtheta put 0 into theta repeat while z<=18 put smallSeamLayerMW2(xc, yc, rout, rLumen, LH, seamDtheta,theta, z, f) & return after tcode subtract seamDtheta from theta end repeat put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode repeat while z<=24 put smallSeamLayerMW2(xc, yc, rout, rLumen, LH, seamDtheta,theta, z, f) & return after tcode end repeat put tcode into fld "gcodeFld" end mouseUp

function smallSeamLayerMW xc,yc,rout,rLumen,LH, theta,@z,f put true into ccw put rout-rLumen into totW put max(1,totW div 0.45) into n put totW/n into w put rout-w/2 into r --outer perim made of two tapers put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode put circle1Taper(xc, yc, r, z, theta, w, LH, f, ccw) & return after tcode put circle1Taper(xc, yc, r, z, theta, w, LH & return & 0, f, ccw) & return after tcode --inner perims --put r into ri repeat n-1 put r-w into r put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode put arc1(xc, yc, r, 0, 2pi, z, theta, w, LH, f, ccw) & return after tcode end repeat -- --return to start -- put unpolarGoToGC(xc, yc, r, theta, z, 0, 1.5f) & return after tcode return tcode end smallSeamLayerMW

function smallSeamLayerMW2 xc,yc,rout,rLumen,LH,seamDtheta,@theta,@z,f put true into ccw put rout-rLumen into totW put max(1,totW div 0.45) into n put totW/n into w put rout-w/2 into r put unpolarGoToGC(xc, yc, r, theta, z, 0, 2000) & return after tcode put ";taper 1" & return after tcode put 0 into LH1 put LH into LH2 put arc1taperLH(xc,yc,r, LH,seamDtheta,z,theta,w,LH1,LH2,f,ccw) & return after tcode put return after tcode put arc1(xc,yc,r, 0,2pi-seamDtheta,z,theta,w,LH,f,ccw) & return after tcode --need a taper here that decreases LH by keeps z constant... put LH into LH1 put 0 into LH2 put ";taper 2" & return after tcode put arc1taperLH(xc,yc,r, 0,seamDtheta,z,theta,w,LH1,LH2,f,ccw) & return after tcode put return after tcode --inner perims --put r into ri repeat n-1 put r-w into r put unpolarGoToGC(xc, yc, r, theta, z, 0, 2000) & return after tcode put arc1(xc, yc, r, 0, 2pi, z, theta, w, LH, f, ccw) & return after tcode end repeat -- --return to start -- put unpolarGoToGC(xc, yc, r, theta, z, 0, 1.5*f) & return after tcode return tcode end smallSeamLayerMW2

function arc1taperLH xc,yc,r, dz,dtheta,@z,@theta,w,LH1,LH2,f,ccw --Uses only G1 commands so that it can work with Prusa MK4 firmware. --Can taper w, but LH is constant. Use circle1Taper to vary LH. if ccw is empty or ccw="ccw" then put true into ccw if dtheta="dtheta" then put 2pi into dtheta put LH1 into LH put line 1 of w into w1 put line 2 of w into w2 if w2 is empty then put w1 into w2 put round(6(r+1)^1.5) into numSegsPerCircle put round(numSegsPerCircledtheta/(2pi)) into numSegs if numSegs<1 then return "; arc1 had less than one segment; r=" & r end if put abs(dtheta) into dtheta --can't have negative here. Use ccw=false to go clockwise. put dtheta/numSegs into dtheta put dz/numSegs into dz put (w2-w1)/numSegs into dw put line 1 of w into w put (LH2-LH1)/numSegs into dLH if not ccw then put -dtheta into dtheta put unpolarX(xc, r, theta) into x1 put unpolarY(yc, r, theta) into y1 add dtheta to theta put unpolarX(xc, r, theta) into x put unpolarY(yc, r, theta) into y put sqrt((x1-x)^2+(y1-y)^2) into dist repeat numSegs add dz to z add dw to w add dLH to LH put extrudeAmount(dist, LH, w, 1.75) into e if e<0 then return "; extrusion less than zero; r=" & r end if put G1line(x, y, z, e, f) & return after tcode add dtheta to theta put unpolarX(xc, r, theta) into x put unpolarY(yc, r, theta) into y end repeat subtract dtheta from theta return tcode end arc1taperLH `

MichaelJLew avatar Dec 10 '23 20:12 MichaelJLew

Seems that the Code function plays badly with the LiveCode code, so here it is again (with a couple of commented out lines removed):

("--" denotes a comment; code is case-insensitive; indentation is for clarity only)

on mouseUp put 50 into xc put 50 into yc put 0.2 into LH put 0.45 into w put the cPrusaSlicerCode of me into tcode--6mm tall cylinder, two walls, LH=0.2

put 6 into z put 6 into rout put rout-0.9 into rLumen put 0 into theta put 600 into f

put rout-w/2 into r put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode repeat while z<=12 put smallSeamLayerMW(xc, yc, rout, rLumen, LH, theta, z, f) & return after tcode end repeat

put rout-w/2 into r put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode put 1.4 into seamDtheta put 0 into theta repeat while z<=18 put smallSeamLayerMW2(xc, yc, rout, rLumen, LH, seamDtheta,theta, z, f) & return after tcode subtract seamDtheta from theta end repeat put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode repeat while z<=24 put smallSeamLayerMW2(xc, yc, rout, rLumen, LH, seamDtheta,theta, z, f) & return after tcode end repeat put tcode into fld "gcodeFld" end mouseUp

function smallSeamLayerMW xc,yc,rout,rLumen,LH, theta,@z,f put true into ccw put rout-rLumen into totW put max(1,totW div 0.45) into n put totW/n into w put rout-w/2 into r --outer perim made of two tapers put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode put circle1Taper(xc, yc, r, z, theta, w, LH, f, ccw) & return after tcode put circle1Taper(xc, yc, r, z, theta, w, LH & return & 0, f, ccw) & return after tcode --inner perims repeat n-1 put r-w into r put unpolarGoToGC(xc, yc, r, theta, z, 0, f) & return after tcode put arc1(xc, yc, r, 0, 2*pi, z, theta, w, LH, f, ccw) & return after tcode end repeat return tcode end smallSeamLayerMW

function smallSeamLayerMW2 xc,yc,rout,rLumen,LH,seamDtheta,@theta,@z,f put true into ccw put rout-rLumen into totW put max(1,totW div 0.45) into n put totW/n into w put rout-w/2 into r put unpolarGoToGC(xc, yc, r, theta, z, 0, 2000) & return after tcode put ";taper 1" & return after tcode put 0 into LH1 put LH into LH2 put arc1taperLH(xc,yc,r, LH,seamDtheta,z,theta,w,LH1,LH2,f,ccw) & return after tcode put return after tcode put arc1(xc,yc,r, 0,2pi-seamDtheta,z,theta,w,LH,f,ccw) & return after tcode --need a taper here that decreases LH by keeps z constant... put LH into LH1 put 0 into LH2 put ";taper 2" & return after tcode put arc1taperLH(xc,yc,r, 0,seamDtheta,z,theta,w,LH1,LH2,f,ccw) & return after tcode put return after tcode --inner perims repeat n-1 put r-w into r put unpolarGoToGC(xc, yc, r, theta, z, 0, 2000) & return after tcode put arc1(xc, yc, r, 0, 2pi, z, theta, w, LH, f, ccw) & return after tcode end repeat return tcode end smallSeamLayerMW2

function arc1taperLH xc,yc,r, dz,dtheta,@z,@theta,w,LH1,LH2,f,ccw --Uses only G1 commands so that it can work with original Prusa MK4 firmware. --Can taper w, but LH is constant. Use circle1Taper to vary LH. if ccw is empty or ccw="ccw" then put true into ccw if dtheta="dtheta" then put 2pi into dtheta put LH1 into LH put line 1 of w into w1 put line 2 of w into w2 if w2 is empty then put w1 into w2 put round(6(r+1)^1.5) into numSegsPerCircle put round(numSegsPerCircledtheta/(2pi)) into numSegs if numSegs<1 then return "; arc1 had less than one segment; r=" & r end if put abs(dtheta) into dtheta --can't have negative here. Use ccw=false to go clockwise. put dtheta/numSegs into dtheta put dz/numSegs into dz put (w2-w1)/numSegs into dw put line 1 of w into w put (LH2-LH1)/numSegs into dLH if not ccw then put -dtheta into dtheta put unpolarX(xc, r, theta) into x1 put unpolarY(yc, r, theta) into y1 add dtheta to theta put unpolarX(xc, r, theta) into x put unpolarY(yc, r, theta) into y put sqrt((x1-x)^2+(y1-y)^2) into dist repeat numSegs add dz to z add dw to w add dLH to LH put extrudeAmount(dist, LH, w, 1.75) into e if e<0 then return "; extrusion less than zero; r=" & r end if put G1line(x, y, z, e, f) & return after tcode add dtheta to theta put unpolarX(xc, r, theta) into x put unpolarY(yc, r, theta) into y end repeat subtract dtheta from theta return tcode end arc1taperLH

MichaelJLew avatar Dec 10 '23 21:12 MichaelJLew

This is now being implemented for OrcaSlicer: https://github.com/SoftFever/OrcaSlicer/pull/3839

MichaelJLew avatar Jan 30 '24 20:01 MichaelJLew

I never really noticed this was an issue before. I started recently designing (with a view to selling) astronomy parts. Telescopes are round and cylindrical for the most part. These seams are bad enough that I'm not actually sure I can sell them in the current state!

This solution does seem fantastic. I wonder, does it work with lower layer heights than 0.3? I have details on cylinder walls which benefit from lower layer height, around 0.15mm.

I hope Prusa actually acknowledge the effort put in by the community in this thread.

mrflib avatar Feb 10 '24 00:02 mrflib

Yes, it works well for me with layers of 0.12mm. I'm not sure, but the micro-step distance on the z-axis might be a limiting factor...

Are you aware that Noisyfox has implemented the method in OrcaSlicer? See this thread: https://github.com/SoftFever/OrcaSlicer/pull/3839 You can try it out here: https://github.com/SoftFever/OrcaSlicer/actions/runs/7792877482

MichaelJLew avatar Feb 10 '24 00:02 MichaelJLew

I saw that. I've not looked in to alternative slicers, so will take a look thanks. I was on with Prusa Support the other day and I linked this thread, he said he would forward it on. Believe it or not the seams were actually interfering with my interference fit. I really hope they implement it. It's great.

mrflib avatar Feb 17 '24 19:02 mrflib

So I had a go with the Orca Slicer implementation. I do not have Orca dialled in at all for my printer, and I simply used default settings. As expected in such a scenario, PrusaSlicer gave a much nicer finish generally out of the box. However, the seam is absolutely outrageous.

Orca Slicer's implementation of the Scarf Seam seems good. Printing allows you to see what most of the settings represent. I would say that it certainly minimises the stark impact of the seam, but does spread the seam over a much wider space, which is still visible.

I think usage will really depend on what you're printing, as always.

None of these settings are dialled in, I'm sure I could get much better with experimenting as these are just default. But I figured sharing defaults might be useful

Prusa Slicer Prusament PLA Profile 0.4 IS Mk4 0.2mm Layer Height

Print Time 2hr 21min

PXL_20240218_183204310 MP

Orca Slicer Default Prusa PLA Profile 0.4 IS Mk4 0.2mm Layer Height

Print Time 3hr 29min (Default Scarf Seam settings)

PXL_20240218_183212669

mrflib avatar Feb 18 '24 18:02 mrflib

The scarf seam seems (sorry!) to have given you an improvement, but there is still room for more. Did you print the outer perimeter first? I would do that if the outer wall seam is the one you want best hidden. And I would not have retractions or z-hop between layers.

MichaelJLew avatar Feb 18 '24 20:02 MichaelJLew

Print Time 3hr 29min

I just noticed the increased time for the scarf seam print. It seems to be too much. At most the scarf seam should extend print time by adding overlap on the perimeter and by (sometimes) requiring the outer perimeter to be printed slowly. That should not increase the time by anything like 50%.

Can you zip your gcode files and post them?

MichaelJLew avatar Feb 18 '24 20:02 MichaelJLew

E.zip

Sure. As I said I just ran pretty much defaults on Orca. I'm sure it can be tweaked.

mrflib avatar Feb 18 '24 21:02 mrflib

Sure. As I said I just ran pretty much defaults on Orca. I'm sure it can be tweaked.

I printed the bottom few mm of your files and got the results that you did (Prusa MK4, like yours). I then sliced a similar tube shape with retractions turned off and got a much better scarf seam, at the cost of having quite a few blobs on the inner surface and a little stringing. I think that turning off retract on layer change might help. I'll test that next.

MichaelJLew avatar Feb 18 '24 23:02 MichaelJLew

Michael if you'd like the stl I used it's here:

https://drive.google.com/file/d/1WnE1i8HTZmbk9CAEqrja8WseL_imOmHK/view?usp=drivesdk

On Sun, 18 Feb 2024, 23:49 MichaelJLew, @.***> wrote:

Sure. As I said I just ran pretty much defaults on Orca. I'm sure it can be tweaked.

I printed the bottom few mm of your files and got the results that you did (Prusa MK4, like yours). I then sliced a similar tube shape with retractions turned off and got a much better scarf seam, at the cost of having quite a few blobs on the inner surface and a little stringing. I think that turning off retract on layer change might help. I'll test that next.

— Reply to this email directly, view it on GitHub https://github.com/prusa3d/PrusaSlicer/issues/11621#issuecomment-1951488100, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIPJKO2ZGTSWELZZFEB6V33YUKHP7AVCNFSM6AAAAAA7DV6GVSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJRGQ4DQMJQGA . You are receiving this because you commented.Message ID: @.***>

mrflib avatar Feb 19 '24 08:02 mrflib

+1 for adding this as a seam option to the slicer

astraiophos avatar Mar 01 '24 21:03 astraiophos