prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.41k stars 1.88k forks source link

Some objects are too tall and cannot be printed without extruder collisions #1095

Open tobymurray opened 5 years ago

tobymurray commented 5 years ago

Version

1.40.1+win64

Operating system type + version

Windows 10 1803

Behavior

Sequential printing fails to slice in situations where I would expect it to slice. It's not clear what conditions are triggering the "extruder collisions".

I've been playing with sequential printing, and I'm not understanding the limitations. As a simplification, I'm trying to print items that look like this:

image

Intuitively, this seems extremely printable - there's ample space around both individual objects in all dimensions. Neither shifting the cylinders around on the plate, nor changing the extruder clearance seems to make the objects printable. I've attached two cylinders that show an example of the issue, but they're just plain cylinders - it seems to happen with many different shapes and configurations. In fact, 2 25mm cylinders exhibit the same lack of sliceability, so it doesn't appear to be because of the height difference.

Is there a limitation that is not immediately obvious to me that I'm running into? Or perhaps the collision algorithm is just in the early stages?

STL/Config (.ZIP) where problem occurs

config.zip stls.zip.zip

mpalmujoki commented 5 years ago

I'm encountering the same issue.

đź‘Ť

NovaViper commented 5 years ago

I got the same issue

haarp commented 4 years ago

PrusaSlicer wants all objects to be below the extruder clearance height, even if the last object (and only the last) could theoretically be as tall as the printer's max Z.

NovaViper commented 4 years ago

@haarp So they have to be the exact same height?

haarp commented 4 years ago

So they have to be the exact same height?

? no. Say you have 5 objects. Max height for object 1 to 4 could be anything up to the setting for extruder clearance height. Object 5 could be as tall as it wants to be (as long as it fits within the printer's build volume)

However, Slic3r/PrusaSlicer pointlessly enforces the max height for object 5 to also be below extruder clearance height.

NovaViper commented 4 years ago

So they have to be the exact same height?

? no. Say you have 5 objects. Max height for object 1 to 4 could be anything up to the setting for extruder clearance height. Object 5 could be as tall as it wants to be (as long as it fits within the printer's build volume)

However, Slic3r/PrusaSlicer pointlessly enforces the max height for object 5 to also be below extruder clearance height.

I'm still a bit confused by it, because it implies that ALL objects have to be the exact same height

haarp commented 4 years ago

because it implies that ALL objects have to be the exact same height

No it doesn't? How?

NovaViper commented 4 years ago

because it implies that ALL objects have to be the exact same height

No it doesn't? How?

It does imply that because if any of the objects are slightly taller than the other one, then PS will not let you create the gcode until you make every object on the build plate the same height

agryson commented 4 years ago

@NovaViper Actually, what @haarp is saying is that all 5 objects have to be below the clearance height, but they can all have different heights - so yes all the objects have the same max height but they can all have different individual heights provided it's below that.

e.g. 5 cylinders, printer clearance height of 25mm: Cylinder 1 : 1mm Cylinder 2 : 2mm ... Cylinder 5 : 5mm

All 5 cylinders will print since all are < 25mm but all are different individual heights.

This behaviour seems to be the cause of #2171

NovaViper commented 4 years ago

@agryson Ah ok. I've been having issues even if the object is nearly exactly the same height, the slicer tells me I can't slice any of them with the same issue as seen #2171

agryson commented 4 years ago

Adding to the confusion, I have created a case where I have an item above the clearance height but it is slicing correctly, here is a zipped 3mf file:

now_it_works.zip

Height is 50.01 with a clearance of 25mm, looking at the travel movements, the tall item is being printed last (which is desired behaviour)

image

This is after clicking 'arrange' which normally doesn't work without producing collision errors but this time it did work fine - maybe it set print order as well?

Prusaslicer version: 2.0.0+win64-201905201652

ThePirat91 commented 4 years ago

Hello guys, there are any news on this? I'm feeling exactly the same with some model height above the extruder clearance height (stock value). I cannot pass the "sliding pre check" in any way, regardless the distance I tried to add (on X-axes) among the models of my project...Thanks!

KilianB commented 4 years ago

The following code is to be blamed for the current behaviour. The min/max y position of the convex hull of the individual objects should also be be checked to figure out if a print is possible without collision.

Due to the extruder facing towards the front of the xAxis placing the individual parts with increasing height on the print bed would allow for trivial intersection checks.

https://github.com/prusa3d/PrusaSlicer/blob/52c590f57aa784476f0788909b9caa20cf9e440b/src/libslic3r/Print.cpp#L1186-L1197

ThePirat91 commented 4 years ago

Thanks Killian. So we can consider this as a bug or a desired behavior?

With "placing the individual parts with increasing height on the print bed" you mean regarding the extruder front face? So the shortest item next to the extruder and the tallest on the opposite side (close to the border of the bed x-axis)?

Thanks

KilianB commented 4 years ago

The code is working according to logic making sure that the extruder and axis does not crash into the prints, therefore -> desired behavior.

On the other hand, the algorithm can be improved to recognize printable layouts.

ThePirat91 commented 4 years ago

I'm wondering if this logic is not a little too conservative..... It's only my thought...No offence at all :)

andrewfraley commented 4 years ago

Is there any way I could arrange these objects to where it would work? As soon as I add the second object instance in green I get the some objects are too tall message. Capture

ntiedt commented 4 years ago

I have 4 object with the exact same high and also get this error. I tried many position but can´t get this to work. See pictures. Auto positioning never works for me. In some circumstances I could get it run manually. Don´t know why. Please fix this. Additional info: With Cura it works with no problems. 01 02

KilianB commented 4 years ago

@andrewfraley

You can adjust the clearance height in the settings. But double check of what you are doing or else the extruder might collide with the workpiece. Better also take a look at the travel moves and also be aware of the final move after finishing the print.

Bildschirmfoto 2020-01-29 um 20 57 57

ThePirat91 commented 4 years ago

I have 4 object with the exact same high and also get this error. I tried many position but can´t get this to work. See pictures. Auto positioning never works for me. In some circumstances I could get it run manually. Don´t know why. Please fix this. Additional info: With Cura it works with no problems.

I am on your exactly same situation. I have 3mf projects with same height objects that trigger the "too tall" error and some others, with very different height objs on them that don't. I was not able to understand why....

bubnikv commented 4 years ago

We have reworked the order of sequential printing to follow the object list order in PrusaSlicer 2.2.0-alpha4.

Here the collision is shown, because the tallest object would collide with the X gantry. image

If I reorder the object by drag & dropping the tallest object to the end of list (feature of the upcoming PrusaSlicer 2.2.0-alpha4), the collision is gone. image

Also the upcoming PrusaSlicer 2.2.0-alpha4 could visualize the print order by pressing the "E" key in the scene or from "View->Show Labels". Here the print order is clear. image

Also #2450 #3585 will be fixed in PrusaSlicer 2.2.0-alpha4.

The collision logic is described here: https://manual.slic3r.org/advanced/sequential-printing

with the exception, that PrusaSlicer follows the order of the objects in the object list.

I agree with @KilianB:

@andrewfraleyYou can adjust the clearance height in the settings. But double check of what you are doing or else the extruder might collide with the workpiece. Better also take a look at the travel moves and also be aware of the final move after finishing the print. The code is working according to logic making sure that the extruder and axis does not crash into the prints, therefore -> desired behavior.

On the other hand, the algorithm can be improved to recognize printable layouts.

@ThePirat91

I'm wondering if this logic is not a little too conservative.....

The collision logic is surely conservative:

It is surprisingly complex to cover all the scenarios and arrange the objects optimally for sequential print with various collisions. For now, if you insist printing complex stuff, you order the objects front to back on Prusa I3 and you know what you are doing, you may just elevate the extruder_clearance_height.

@KilianB:

The following code is to be blamed for the current behaviour. The min/max y position of the convex hull of the individual objects should also be be checked to figure out if a print is possible without collision.

Yes, but only for the Prusa I3 kinematics as noted above.

@haarp

So they have to be the exact same height?? no. Say you have 5 objects. Max height for object 1 to 4 could be anything up to the setting for extruder clearance height. Object 5 could be as tall as it wants to be (as long as it fits within the printer's build volume)However, Slic3r/PrusaSlicer pointlessly enforces the max height for object 5 to also be below extruder clearance height.

It did not enforce the last object to be below the extruder clearance height. The problem was, that the order of sequential print was not clear. Now with PrusaSlicer 2.2.0-alpha4 the order will be clear and for the last object the extruder clearance height will be ignored.

I believe many issues have been fixed and / or explained. I am closing this issue. Feel free to open a new issue with precise description of how the behavior of PrusaSlicer shall be changed / improved.

ThePirat91 commented 4 years ago

Thanks a lot @bubnikv for your time and explanation!! Only one thing, when you write "order objects front to back on prusa i3", you mean that the tallest objects should be on the front side of the plate? Thanks and sorry for the noob question....

bubnikv commented 4 years ago

I would say that the longest object shall be at the rear side of the print bed as it shall be printed last.

Ăşt 25. 2. 2020 v 16:11 odesĂ­latel ThePirat91 notifications@github.com napsal:

Thanks a lot @bubnikv https://github.com/bubnikv for your time and explanation!! Only one thing, when you write "order objects front to back on prusa i3", you mean that the tallest objects should be on the front side of the plate? Thanks and sorry for the noob question....

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/prusa3d/PrusaSlicer/issues/1095?email_source=notifications&email_token=ABMPSI6RHICGVRRAVGGW4ITREUYJDA5CNFSM4FMWCEN2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEM4KLDY#issuecomment-590914959, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABMPSI3HX2IQCS5YC4JZTETREUYJDANCNFSM4FMWCENQ .

neslekkim commented 4 years ago

So this is done?, why wont this work: image

ochumi commented 4 years ago

some problem here with 3 boxes with the same height cas

ODonaldC commented 4 years ago

@bubnikv (unsure if this is how I should bring the issue back to your attention, sorry if this is poor mannerisms, first time using GitHub) I'm having the same issue as the 2 above me :/ I've ensured the second model to be printed is in the back left corner and the first model to be printed is in the front right. They are the same model but no collisions should occur as they have a small XY footprint and a moderate Z height. It just throws me the "Some objects are too tall and cannot be printed without extruder collisions." error. I'm using the latest version of PrusaSlic3r and checking for updates reveals none are available. MK3 (NOT MK3s, I'd imagine the issue is persistent across all printers however). Some feedback would be appreciated :)

pedjas commented 4 years ago

I have an issue with printing several copies of the same object - meaning all the same height. I use PrusaSlicer 2.2.0 installed just few days ago.

I guess main issue is that whole Y axis moves over board and for the first layer it goes pretty low - and that is height limitation for save printing in sequence to just 20 mm.

With objects of different size this behavior requires quite smart algorithm to avoid collisions.

I guess collisions could be avoided with some limitations like objects cannot share the same X coordinates. That means printing could go well as long as no object overlap on x axis coordinates.

Arrange tool could be reworked to arrange objects along x axis only if sequential printing is turned on.

Here is example of collision safe arrangement regardless of objects height. Slicer has to take care of head movement, probably to force printing order of objects from front to the back (or reversed).

prusaslicer-collision-safe-arrangement

neslekkim commented 4 years ago

Well, you also require atleast 5cm between these boxes on the Y axis, so you can't lay it out like that. Just measure from the nozzle to the fan of your extruder.

The two previous examples poses no such limitations, there are ample space both in X and Y direction, and should be printable, but slicer are stopping you.

pedjas commented 4 years ago

Well, you also require atleast 5cm between these boxes on the Y axis, so you can't lay it out like that. Just measure from the nozzle to the fan of your extruder.

You are right, I overlooked that issue.

ruar commented 4 years ago

Same problem here: too tall

If I scale the first object a little more, the issue disappears. But I want to print multiple copies of the tall object without scaling.

neslekkim commented 4 years ago

Well, atleast you have to TRY, that print wouldn't go no matter what. First, put the first print in front, not in the back, and then move them even closer to the edge. Take a look at your X axis, that would just smash into that print right away.

What I put out earlier, two cubes 2x2x2cm each, the issue is that THAT wont work, and ofcourse your cannot work, it's not room for the x-axis.

tgani commented 3 years ago

This issue is 2 years old. Is there any intention of fixing this from Prusa? Many intuitively sequentially printable objects are blocked by this error.

x1hash commented 3 years ago

This issue has been quite annoying to say the least, I wish Prusa Slicer would have the option of 'disabling collision support', maybe if it was included in the 'Expert' mode, it will allow us to disable the lines of code which check if the extrude may collide. I am fairly sure some more advanced logic can be inserted to determine the following - however it will be quite complicated when it comes to different extruders being used on different machines and different setups., I think my solution of disabling collision support and providing this in expert mode would be the most ideal for the interim.

KilianB commented 3 years ago

This issue has been quite annoying to say the least, I wish Prusa Slicer would have the option of 'disabling collision support', maybe if it was included in the 'Expert' mode, it will allow us to disable the lines of code which check if the extrude may collide. I am fairly sure some more advanced logic can be inserted to determine the following - however it will be quite complicated when it comes to different extruders being used on different machines and different setups., I think my solution of disabling collision support and providing this in expert mode would be the most ideal for the interim.

this should already be possible by setting the extruder clearance to 0

x1hash commented 3 years ago

This issue has been quite annoying to say the least, I wish Prusa Slicer would have the option of 'disabling collision support', maybe if it was included in the 'Expert' mode, it will allow us to disable the lines of code which check if the extrude may collide. I am fairly sure some more advanced logic can be inserted to determine the following - however it will be quite complicated when it comes to different extruders being used on different machines and different setups., I think my solution of disabling collision support and providing this in expert mode would be the most ideal for the interim.

this should already be possible by setting the extruder clearance to 0

Thank you, I just tried it and it works.

DarkGreenBlade commented 3 years ago

Using version 2.2.0 - setting extruder clearance to zero does not work for me. In fact if I use two objects that are only 10mm high, I get the "objects too tall" message (the message doesn't appear when using the Slicer default clearance values when printing with these objects). It would appear that you have to set a clearance value higher than the highest object being printed.

10bn commented 3 years ago

Same issue here using PrusaSlicer 2.3.0 Setting clearance to 0 dosen't seem to do anything.

AllanXu49 commented 3 years ago

Same issue.

Prusa Slicer 2.2.0.

Does the application override the clearance ?

image

image

kopchik commented 3 years ago

In 2.3.0 I set extruder clearance to 200mm and I was able to print a tall object along with small ones.

extruder_clearance_200mm

wolph commented 3 years ago

I usually set the extruder clearance height to 200mm and adjust the position and print order by hand. But it would be absolutely fantastic if the slicer could take care of this for me.

Printing from the front of the printer towards the back should take care of the height clearance issues already. That won't help with clearing multiple items that won't clear the bar along the X axis, but it's a great start.

I really prefer to print sequentially because if something goes wrong, I'll only have 1 scrapped part instead of a bunch.

salzig commented 3 years ago

neither a clearance of 0mm or 200mm allows me to print the following. I really wish there was an expert option to disable the validation. How on earth should a prusa mini collide here? (expecting no recalibration between parts) Bildschirmfoto 2021-04-01 um 21 32 27

Edit: PrusaSlicer 2.3.0

wolph commented 3 years ago

Have you set radius as well?

I have a MK3S and this works great for me if I'm careful: image

fe60 commented 3 years ago

https://help.prusa3d.com/en/article/sequential-printing_124589 PrusaSlicer wants all objects to be below the extruder clearance height except for the last object, which can be as tall as the printer's max Z. The collision detection logic is pretty basic and will sometimes prevent you from Exporting printable G-code. It's up to you to take responsibility and increase the height tolerance.

@salzig Even after reading the documentation and playing around with the tool, I still don't understand why some object sets are not printable. For your setup I would try the following:

  1. Set the height of the "Extruder clearance" to a value slightly higher than the head of your model.
  2. Ensure the head is the first object to be printed. The sequence number depends on the position in the object list (drag objects to change their position). Press E to show in the sequence number for your objects.
  3. Recommended according to documentation: Move the head to the back and the body to the front of the print bed. Got the documentation wrong. Keep the objects as shown on the screenshot.
salzig commented 3 years ago

@fe60 order in item list.... didn't check that. Should i test it again, i'll keep an eye on that.

StodaraHodan commented 3 years ago

something i just discovered: I had this same issue, wanted to print 2 objects (25mm high) one in front one in back of the build platform sequentially but refused to let me slice, i had to delete and re-add the two objects AFTER setting the Extruder clearance height, it seems this is only calculated when adding objects. After that i was able to slice

wa2mze commented 1 year ago

Changing the Extruder clearance Height to be greater than the height of the tallest object allows this to work. I assume that the radius setting must allow a suitable distance between objects and the width of the print head. In my case I was trying to print two bishops (chessmen) which were about 49mm tall, so I set the Height to 50mm and "Bob was my Uncle". I didn't need to worry about the Radius setting. I didn't have to delete and add objects back after changing the Height, just go back and forth between Print Settings and Platter tabs. BTW, the problem here was detected in SuperSlicer, which is a fork of PS, and this includes a lot of included bugs.

pxc commented 1 year ago

Just to clarify, as @fe60 noted, the order of the objects is important.

I wanted to slice two objects: one tall and short. Initially I added the tall one first and then the short one, and was getting this error. I removed them both and then added the short one followed by the tall one, and then the slicing worked. I didn't have to change the extruder clearance height.

It would be nice if PrusaSlicer could do this reordering automatically, or at least mention in the error message that the order is important.

MadGoatHaz commented 1 year ago

Just a Bump to add that this issue still exists and has now trickled its way down into Bambu Studio as well.

benjaminbrumbaugh commented 7 months ago

I still see this issue in PrusaSlicer 2.6.1

My two objects are the exact same height, so re-ordering them won't help.

jenschr commented 4 months ago

I can confirm that this bug still exists in the latest 2.7.1 build. I'm unable to print anything more than two identical objects since the sclicer incorrectly identifies one of them as being too tall. How hard can it be to just round off 0.01mm to this calculation? That would be sufficient to avoid any crash and to prevent this error that appear to have been around for 5+ years?

It would be incredibly convenient to be able to print one by one copies of the same model. I'm enclosing a screenshot and model to verify the bug.

Screenshot 2024-01-22 at 21 10 18

PresenceLedCover.stl.zip