SoftFever / OrcaSlicer

G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)
https://discord.gg/P4VE9UY9gJ
GNU Affero General Public License v3.0
6.85k stars 806 forks source link

If there's no change in bed temp, don't send command to change the bed temp #6602

Open tlhintoq opened 1 month ago

tlhintoq commented 1 month ago

Is there an existing issue for this problem?

OrcaSlicer Version

2.2.0-dev

Operating System (OS)

Windows

OS Version

Win10x64

Additional system information

StealthDeck_DeviceManager

Printer

Elegoo giga

How to reproduce

First you have to understand that the Giga has 4 heatbeds. If the part is only on bed T2 you don't need to heat the other 3. Its an easy matter to make a change to only warm the used bed by making the bed command specify the right bed for that job. image

HOWEVER... Orca is generating a change to the bed temp after the first layer even if the temp is the same. From: 65 to 65 for example. This command does not appear in any material gCode to be overwritten. So an Giga user can't just Slice and Print. They have to slice, save to usb, go to the machine on the shop floor, change USB drives and launch from the machine.

image

How to reproduce: Slice any job where the bed temp is unchanged between first and following layers.

Actual results

After the first layer the next is dynamically injected commands that we can't stop or change. image image Without the specification of T2 this generic command turns on the other 3 heatbeds of 400mm² each. That's a lot of wasted energy and alot of ambient heat into the room for no reason.

Expected results

Don't issue changes that aren't needed. From 65 to 65 doesn't require another command be sent.

Project file & Debug log uploads

None required

Checklist of files to include

Anything else?

2024-08-30_11-17-31

tlhintoq commented 2 weeks ago

FYI: Elegoo's slicer has fixed this bug - so I don't think its all that hard. Can someone out there just do a compare against the two branches and reverse-merge their fix so Orca can be better used by Giga owners? Please! cc: @Noisyfox

Noisyfox commented 2 weeks ago

Elegoo's slicer has fixed this bug

Do you mean their Cura-based slicer?

tlhintoq commented 1 week ago

Elegoo's slicer has fixed this bug

Do you mean their Cura-based slicer?

No - their OrcaBased fork that they are branding in their own name. - I'm not happy either. They should have just been a contributor here and maintained being a part of the open-source mind set. Then again - they needed to deploy a slicer that didn't have this bug.

Noisyfox commented 1 week ago

Elegoo's slicer has fixed this bug

Do you mean their Cura-based slicer?

No - their OrcaBased fork that they are branding in their own name. - I'm not happy either. They should have just been a contributor here and maintained being a part of the open-source mind set. Then again - they needed to deploy a slicer that didn't have this bug.

Did they publish the source code of that anywhere? I couldn't find it.

tlhintoq commented 1 week ago

Elegoo's slicer has fixed this bug

Do you mean their Cura-based slicer?

No - their OrcaBased fork that they are branding in their own name. - I'm not happy either. They should have just been a contributor here and maintained being a part of the open-source mind set. Then again - they needed to deploy a slicer that didn't have this bug.

Did they publish the source code of that anywhere? I couldn't find it.

https://github.com/ELEGOOTechSupport/ElegooSlicer

d-portero commented 1 week ago

this would be very helpful!

tlhintoq commented 4 days ago

I have a work-around until this can be fixed. I never change the bed temp after the first layer anyway so...

image

`;Giga zoned hot bed control ;Case 1 {if (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32) < 405 && (max(0, first_layer_print_min[1])) < 402.5} M190 T0 S[bed_temperature_initial_layer_single] {if ((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) > 405} M190 T1 S[bed_temperature_initial_layer_single] {endif} {if ((first_layer_print_max[1])) > 402.5} M190 T3 S[bed_temperature_initial_layer_single] {endif} {if ((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) > 405 && ((first_layer_print_max[1])) > 402.5} M190 T2 S[bed_temperature_initial_layer_single] {endif} {endif}

;Case 2 {if (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32) < 405 && (max(0, first_layer_print_min[1])) > 402.5} M190 T3 S[bed_temperature_initial_layer_single] {if ((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) > 405} M190 T2 S[bed_temperature_initial_layer_single] {endif} {endif}

;Case 3 {if (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32) > 405 && (max(0, first_layer_print_min[1])) < 402.5} M190 T1 S[bed_temperature_initial_layer_single] {if ((first_layer_print_max[1])) > 402.5} M190 T2 S[bed_temperature_initial_layer_single] {endif} {endif}

;Case 4 {if (min(print_bed_max[0], first_layer_print_min[0] + 32) - 32) > 405 && (max(0, first_layer_print_min[1])) > 402.5} M190 T2 S[bed_temperature_initial_layer_single] {endif}`