Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Graceful end of vase mode print #7932

Open
firepebble opened this issue Feb 17, 2022 · 26 comments
Open

Graceful end of vase mode print #7932

firepebble opened this issue Feb 17, 2022 · 26 comments

Comments

@firepebble
Copy link

firepebble commented Feb 17, 2022

Version

2.4.0

Operating system type + version

All

3D printer brand / version + firmware version (if known)

All

Behavior

  • When printing in vase mode the model will finish suddenly when the height is reached. This causes a jagged top at the end point and overall top is not flat.
  • It would be better to allow variable height on the top of a vase mode print so that the end point is less jagged and the top is more flat. This would result in a much nicer finish.
  • A flatter top would also allow ironing to be turned on for "Topmost Surface" in vase mode.

Is this a new feature request?

Yes.

@gaduffl
Copy link

gaduffl commented Feb 27, 2022

100% agree, makes vase mode basically unusable when working with large layer height.

@Zaaijer
Copy link

Zaaijer commented Mar 5, 2022

I've was wondering the same thing without finding a solution of my own. I regularly print vases with large layer heights, and the lack of this feature makes me prefer Cura over PrusaSlicer. Would love to see this feature be added in the future!

@firepebble
Copy link
Author

If anyone is doing this manually here is what I found works on bottle tops that have a fairly small circumference and 64 'sides'. Find the last layer in the g-code, which might look like this:

G1 Z72.301 X134.438 Y82.347 E.03928
G1 Z72.308 X134.722 Y83.314 E.16997
...
G1 Z72.683 X133.043 Y79.675 E.16983
G1 Z72.689 X133.595 Y80.519 E.17004
G1 Z72.695 X134.062 Y81.412 E.16996
G1 Z72.700 X134.351 Y82.13 E.13065

And use a spreadsheet (see attached Vase top gcode modification.ods) to make new values to add, which go around one extra turn using the extraction rate from the 62nd 'side' and phase down the extraction linearly down to a negative value right at the end:

G1 Z72.700 X134.438 Y82.347 E0.1672
G1 Z72.700 X134.722 Y83.314 E0.1645
...
G1 Z72.700 X133.043 Y79.675 E0
G1 Z72.700 X133.595 Y80.519 E-0.0027
G1 Z72.700 X134.062 Y81.412 E-0.0055
G1 Z72.700 X134.351 Y82.13 E-0.0082

Clear as mud right? I'm sure others can do a much better job ;-)

@Zaaijer
Copy link

Zaaijer commented Mar 13, 2022

Thanks, @firepebble!

I had a look at the ending of the vase mode when slicing with Cura and it's doing the exact same as you describe, but automatically. Just started a test print to see if I can implement it manually. I regularly print using vase mode, so integrating it in the slicer itself would still save me some time though :D

@clivius
Copy link

clivius commented Jun 24, 2022

It would also be helpful if the print ended with a wipe in the opposite direction of travel so as to not leave a string of material from the sudden end and lift to the park position.

@5jvm0u4
Copy link

5jvm0u4 commented Jul 20, 2022

image
366251
still there in 2.5.0 alpha, and it's hurt to touch.

@firepebble
Copy link
Author

@clivius I find it works better to not have a wipe move but to start retracting as you get near the end of the extra turn, then do a sudden larger retraction with an inwards move to 'snap' the filament at the end.

@Misfi
Copy link

Misfi commented Sep 17, 2022

👍
Would love to see it. Using a 1.8 mm CHT nozzle and 1.5 layer height, it just... doesn't look good :-)

@jacoblukewood
Copy link

If this were to be implemented, should there be a toggle, or should it just be the default action?

It almost seems like this should be a bug or oversight rather than a feature request; especially seeing as Cura leaves a clean end in vase mode.

@firepebble
Copy link
Author

firepebble commented Nov 21, 2022 via email

@b3n3d1k7
Copy link

I created a pull request to fix this issue: #11282
It includes a new option to disable the fix and revert to the old logic:
Screenshot (6)

There is still an issue with the preview of the last layer and I haven't done any test-prints yet.
Please let me know if you see any other problems.

Flush finish disabled:
Screenshot (7)
enabled:
Screenshot (8)

b3n3d1k7 added a commit to b3n3d1k7/PrusaSlicer that referenced this issue Sep 17, 2023
@b3n3d1k7
Copy link

Preview now also works.
Screenshot (6)
Just need to do some test prints.

@firepebble
Copy link
Author

Amazing work!

b3n3d1k7 added a commit to b3n3d1k7/PrusaSlicer that referenced this issue Sep 18, 2023
b3n3d1k7 added a commit to b3n3d1k7/PrusaSlicer that referenced this issue Sep 19, 2023
@b3n3d1k7
Copy link

Had to fix a small bug I discovered during the first test-print, but now it works.
Here are two prints of the same cylinder with a 0.8mm Nozzle and 0.7mm layer-height.
The one on the left was printed with the fix on, the one on the right with the fix off - obviously 😉
1_adjusted
The extrusion-ends right next to each other:
2_adjusted
Here you can see the last layer with reducing extrusion to create a flush top layer:
3_adjusted

@b3n3d1k7
Copy link

Does anymore know what i got to do to get my PR reviewed?
It's been two months now and nothing happened - except my PR now having conflicts.
If this won't get reviewed anyways there is no point in fixing the conflicts ...

@5jvm0u4
Copy link

5jvm0u4 commented Nov 25, 2023

No one really knows, I've been here for over a year, there's been nothing.

@firepebble
Copy link
Author

firepebble commented Nov 26, 2023 via email

b3n3d1k7 added a commit to b3n3d1k7/PrusaSlicer that referenced this issue Nov 26, 2023
@Ro3Deee
Copy link

Ro3Deee commented Nov 26, 2023

also the method for less visible seams (#11621) with a 360 degree scarf will resolve this issue

@firepebble
Copy link
Author

firepebble commented Nov 26, 2023 via email

@b3n3d1k7
Copy link

b3n3d1k7 commented Nov 26, 2023

Wow. The scarf join is a great feature! I'm struggling with a model right at this moment with terrible seams. We need these both implemented as a package.

Because of the way vase mode is implemented, it was quite simple to add this for vase mode.
I assume it will be quite a bit more complicated to add this to non-vase mode slicing.

@MichaelJLew
Copy link

Because of the way vase mode is implemented, it was quite simple to add this for vase mode. I assume it will be quite a bit more complicated to add this to non-vase mode slicing.

A bit more complicated, but really not much more. If you look at the example file that I put up in #11621 you will see that it has two perimeters. I described the moves needed too.

@b3n3d1k7
Copy link

Because of the way vase mode is implemented, it was quite simple to add this for vase mode. I assume it will be quite a bit more complicated to add this to non-vase mode slicing.

A bit more complicated, but really not much more. If you look at the example file that I put up in #11621 you will see that it has two perimeters. I described the moves needed too.

I'm not talking about the gcode being more complicated, but how you'd have to change the c++ code generating the gcode to achieve the result 😉

@MichaelJLew
Copy link

how you'd have to change the c++ code generating the gcode to achieve the result

Yeah, I understand that. I can't do C++, but in my 'native' language, LiveCode, I wrote a short function for the tapered extrusions (20 lines of code) and another function that deals with the seam.

I think that the tapered extrusions function should be in the firmware rather than the slicer as it has utility for lots of non-planar tasks as well as the scarf seam and the flat top for vase-mode prints.

The slicer would need to keep track of the first lot of xy coordinates for the outer perimeter until the total movement distance reaches or exceeds a pre-set value and taper up over those points, and then append those same points to the end of the perimeter with the extrusion values tapering downwards to zero. Not hard at all in pseudo-code I think. Hard in C++? I don't know.

@Ro3Deee
Copy link

Ro3Deee commented Dec 4, 2023

Hard in C++?
It's not about about being harder in C++ than other languages, it's hard with respect to slicing code complexity.
For vase mode it's simpler because it's a continuous line and the code need just to redo the last 360 degrees with a lower and lower z height

@MichaelJLew
Copy link

it's hard with respect to slicing code complexity.

It really isn't. Have you read the original thread? I outlined a simple method that will work.

@Ro3Deee
Copy link

Ro3Deee commented Dec 4, 2023

it's hard with respect to slicing code complexity.

It really isn't. Have you read the original thread? I outlined a simple method that will work.

Your "simple method" has not outlined the lines from PrusaSlicer source code that need to be changed/added.
Anyway, you can make a simple pull request that works

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