bambulab / BambuStudio

PC Software for BambuLab and other 3D printers
GNU Affero General Public License v3.0
1.98k stars 271 forks source link

Allow for object exlusion while printing #1541

Closed eggy2501 closed 1 year ago

eggy2501 commented 1 year ago

It would be nice to be able to exclude an object mid print so you don't need to cancel an entire batch build plate because of one failed object.

Being able to go into the build plate in bambu studio and select an object/area that the printer no longer runs in would be great. There is already this feature on anything running Klipper.

Personally the filament/time waste isn't a massive deal for me for the failed object its the time and filament that is wasted from the other parts on the build plate. I like doing batch prints because when I leave for the day I am able to let the printer run for 6-7 hours instead of 1-2 and with the ability to check on the printer from bambu studio it would be great to be able to cancel parts.

CameronBigger commented 1 year ago

+1 (actually +10!)

In addition to Klipper, this is also something I find very useful from OctoPrint via the 'Exclude Region' plugin. In fact, I would say it is the SINGLE biggest feature I miss from OctoPrint versus using the cloud service for Bambu.

It's frustrating when one part of 10 parts fails to stick to the bed and then filament gets dragged over to the other adjacent models and ruins those. With OctoPrint's 'Exclude Region' I could put a rectangular or circular exclusion section and the printer would just ignore that area and print the rest of the plate.

But as the OP said, an acceptable but still highly useful alternative to providing precise exclusion area is to just allow de-selection of a whole object when multiple objects are on the plate. So instead of drawing an exclusion rectangle that covered two parts, just allowing the user to select in their entirety object X and object Y while leaving the others in tact would still be great.

MitchellDuhe commented 1 year ago

Currently watching a 10hr print devolve into spaghetti as 1 failed part is taking out his neighbors. This would be very helpful right now.

Fl0ken commented 1 year ago

In addition to this: Klipper as well as Marlin support the exclude object feature. Klipper uses [exclude_object], Marlin is using M486. This would help immensely with one failed print (from bad adhesion etc).

arekm commented 1 year ago

Dear devs,

superslicer implements M486 support (so you could backport from that) https://github.com/supermerill/SuperSlicer/commit/b4e4b09a035eb35c1521b14e780b6eb94ba862de

It causes each g-code lines related to some object be guarded by start/end "M486 SX" (where X is number of object).

What would need to be implemented is:

That feature would be great addition and would allow user to cancel objects on bed that no longer stick to bed (in middle of print) without affecting printing of all other objects. Feature that's desirable but not available in most 3d printers.

CameronBigger commented 1 year ago

Awesome reply @arekm. You provided step-by-step instructions on how Bambu can easily add this. Having the cancelation/exclude object(s) option on the touch screen of the printer itself would be an outstanding feature and one I could see would be universally hailed if implemented well. Let's hope they do this!

arekm commented 1 year ago

Also some firmware, like klipper + Mainsail/Fluidd , doesn't rely on M486 but only on gcode label objects. Slicer (ie prusaslicer) assigns object and names like in gcode file.

Example gcode file:

; object:{"name":"Astra_K_armrest_shelf_insert","id":"Astra_K_armrest_shelf_insert.stl id:0 copy 0","object_center":[115.499998,88.978579,0.000000],"boundingbox_center":[115.499998,88.978579,14.000000],"boundingbox_size":[13.000000,25.999999,28.000000]}
; object:{"name":"Astra_K_armrest_shelf_insert","id":"Astra_K_armrest_shelf_insert.stl id:0 copy 1","object_center":[134.500001,88.978579,0.000000],"boundingbox_center":[134.500001,88.978579,14.000000],"boundingbox_size":[13.000000,25.999999,28.000000]}
; object:{"name":"Astra_K_armrest_shelf_insert","id":"Astra_K_armrest_shelf_insert.stl id:0 copy 2","object_center":[115.499998,121.000417,0.000000],"boundingbox_center":[115.499998,121.000417,14.000000],"boundingbox_size":[13.000000,25.999999,28.000000]}
; object:{"name":"Astra_K_armrest_shelf_insert_V2","id":"Astra_K_armrest_shelf_insert_V2.stl id:1 copy 0","object_center":[134.500002,121.010838,0.000000],"boundingbox_center":[134.500002,121.010838,13.642466],"boundingbox_size":[13.000000,25.999999,27.284931]}
; Total objects to print: 4

and then

; printing object Astra_K_armrest_shelf_insert.stl id:0 copy 0
[gcodes for that]
; stop printing object Astra_K_armrest_shelf_insert.stl id:0 copy 0
; printing object Astra_K_armrest_shelf_insert.stl id:0 copy 1
[...]

and so on. Then in UI object names are displayed and user is able to cancel printing any object he wants.

In klipper/mainsail this looks like (example for some other gcode file): https://www.teamfdm.com/uploads/monthly_2022_05/image.png.836f06f7cd20293e136d6677d71908e0.png

nejc-cc commented 1 year ago

+1 for this feature, I had it on OctoPrint but it's not possible here yet

sickerin commented 1 year ago

+100 Like it currently already works with Orca Slicer + Mainsail for my Vorons, since Bambu/Orca already labels the objects.

Cetacea37 commented 1 year ago

This has been #1 on my wish list of features since I got these printers. I had this as a plugin with Octoprint and it's the best thing ever. Oh the plates of prints that would have been saved if this was just a feature. This would make the printer so much better. The lack of this feature is my biggest complaint. Nothing worse than a 24+ hour print getting ruined because one little thing broke loose and then it took out it's neighbors and now even if you remove those the print head is already slightly misaligned so if you do manage to finish the rest the tops are a little bit off. Pleaseeeee make this happen.

SaltWei commented 1 year ago

This feature has been included in latest V01.06.00.00 X1 series firmware and v01.07.01.62 studio. And please make sure both firmware and studio is updated.

Currently it only work in one filament per plate situation, and doesn't support multi filament because of the complexity of flushing and changing filament. One filament per plate situation can still benefit a lot when has some objects failed to be printed and need to be skipped.

Thank you every one for this good suggestion!

HuberDe commented 4 months ago

How do you label the objects now? It doesn't work for my non Bambu printers...

sickerin commented 4 months ago

@HuberDe

How do you label the objects now? It doesn't work for my non Bambu printers..

Hi, can you provide more details, what printers, what firmware, etc. The slicer automatically labels objects if I'm not mistaken (not something you need to do manually), and sends the print job with objects labeled. So, since a long time ago it has worked with Klipper firmware, etc where you can exclude certain objects. The issue was that the Bambu printer itself didn't support skipping objects, even though the objects in the print file were labeled, and the exclude objects feature worked with other non-bambu printers running Klipper on files sliced by Bambu Studio.

HuberDe commented 4 months ago

@sickerin

I'm using octoprint with several marlin printers connected to. There is a plugin called "cancel objects" which I would like to use. When I'm slicing my models using orca, I can see the the objects in octoprint. When using Bambu Studio I can't. Sadly I started with bambu Studio and have all my printer and other configuration now there so that I can't easily switch to orca. The sync of both tools over the bambu cloud seems to work not really good and my settings and printers got only partly synced.

So my prefered way would be to use the feature in bambu studio...

SaltWei commented 4 months ago

Thanks! We will find one octoprint printer and try to reproduce your issue. @@.***> Please follow this issue.

From: "Denis @.> Date: Mon, Jun 3, 2024, 11:49 Subject: Re: [bambulab/BambuStudio] Allow for object exlusion while printing (Issue #1541) To: @.> Cc: @.>, "State @.> @sickerinhttps://github.com/sickerin I'm using octoprint with several marlin printers connected to. There is a plugin called "cancel objects" which I would like to use. When I'm slicing my models using orca, I can see the the objects in octoprint. When using Bambu Studio I can't. Sadly I started with bambu Studio and have all my printer and other configuration now there so that I can't easily switch to orca. The sync of both tools over the bambu cloud seems to work not really good and my settings and printers got only partly synced. So my prefered way would be to use the feature in bambu studio... — Reply to this email directly, view it on GitHubhttps://github.com/bambulab/BambuStudio/issues/1541#issuecomment-2144223481, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A2MIWNY6H6JI4YQWA4FVIYLZFPRT5AVCNFSM6AAAAAAWJEDZB6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBUGIZDGNBYGE. You are receiving this because you modified the open/close state.[image: https://github.com/notifications/beacon/A2MIWN3MOHHR4A23TEOUKITZFPRT5A5CNFSM6AAAAAAWJEDZB6WGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTT7ZZAPS.gif]Message ID: @.***>

HuberDe commented 4 months ago

@SaltWei I attached two gcode files with the sames primitives (cubes) to print. Both with the same profiles for printer.

Bildschirmfoto 2024-06-03 um 06 18 15 Bildschirmfoto 2024-06-03 um 06 17 56

One is shown in the "cancel objects" tab of octoprint, the other not. I would like to share the according gcode files, too, but this seems to be not possible here...

EDIT: In the Orca code there are @Object parts defining the start and the end of an object code. That's missing in the bambu code:

@Objectstop Würfel id:0 copy 0 @Object Würfel id:8387236764689850234 copy 0

EDIT2:

Ahhh it seems as I can upload the gcode files in zip format:

gcode_examples.zip

SaltWei commented 4 months ago

@SaltWei I attached two gcode files with the sames primitives (cubes) to print. Both with the same profiles for printer.

Bildschirmfoto 2024-06-03 um 06 18 15 Bildschirmfoto 2024-06-03 um 06 17 56 One is shown in the "cancel objects" tab of octoprint, the other not. I would like to share the according gcode files, too, but this seems to be not possible here...

EDIT: In the Orca code there are @object parts defining the start and the end of an object code. That's missing in the bambu code:

@Objectstop Würfel id:0 copy 0 @Object Würfel id:8387236764689850234 copy 0

EDIT2:

Ahhh it seems as I can upload the gcode files in zip format:

gcode_examples.zip

Thanks! @QingZhangBambu I raise a new bug ticket. Please follow https://github.com/bambulab/BambuStudio/issues/4199

QingZhangBambu commented 4 months ago

@HuberDe are you use this plugin? it seems that it already support Slicer3r base slicer.https://github.com/paukstelis/Octoprint-Cancelobject image

HuberDe commented 4 months ago

@QingZhangBambu Yes this is what I would like to use 🤪

Not sure what you mean with that: "it seems that it already support Slicer3r base slicer"

QingZhangBambu commented 4 months ago

@HuberDe the release note said that the plugin will parse the gcode label and add @object and @objectstop automatically

QingZhangBambu commented 4 months ago

and it announced that it support Slicer3r, which mean it support BambuStudio.

HuberDe commented 4 months ago

I'm not sure how this can work if there is no object information in the code. But I'm only a user and not a deep goose expert 🤷🏼‍♂️ The only fact I know is that it seems to recognize objects with Orca generated gcode but not with Bambu

QingZhangBambu commented 4 months ago

@HuberDe That's fine. I want to figure out what you use and what need. Now I get it. I will figure out that so that you can get the feature you want.

QingZhangBambu commented 4 months ago

plate_1.zip please check this to see if the feature works @HuberDe

HuberDe commented 4 months ago

@QingZhangBambu Works 👍 I can see three Objects

image
QingZhangBambu commented 4 months ago

OK, to ensure the reading format, another gcode needs to be checked. Could you check this? test2.zip

HuberDe commented 4 months ago

@QingZhangBambu Works...

image
QingZhangBambu commented 4 months ago

Thanks, you will get this feature soon