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
[4.8.0-beta] Option to remove decimals from temperature #8657
Comments
I've tried changing the temperature a few times, but it only adds decimals when I explicitly add them myself. Cura also doesn't have a voxel profile built in, so it could be that whatever profile that you use has something set up weird / incorrectly. Could you add some more information as to how you got o this state? |
This .0 may be visible in the interface (depending on whether the value was derived from a formula), but is not put in the actual g-code if the temperature is integer. In the g-code it says:
So the printers should not be affected. |
Here I removed the .0 from the Build Plate Temp and left it on the Printing Temp The resulting .gcode looks like this:
I am using a custom Profile which I got from here: https://andybradford.dev/2020/01/12/using-the-monoprice-voxel-with-ultimaker-cura/ |
Oh right. It's the tag replacement of the start g-code that's causing this. Those don't get explicitly casted to ints. I still don't see how you ever go to the .0 without you explicitly adding it though. I simply can't reproduce it. |
The temperatures are defined as floats. Would it make sense to make them ints instead? |
For some reason, the esun profiles specifically define the temperature to be a float ending with .0 . No idea why they do that. |
FABtotum also has the .0. |
The ChangeAtZ Post Processing Script also adds .0s when using it to change temperature. |
Temperatures can be floats, normally. CuraEngine limits it to 1 decimal. Why this printer apparently breaks on it, I don't know. |
In some cases the profile value is float because it ends up from a calculated formula. This goes for most profiles as well as for the ChangeAtZ script. The only exception is what Nallath pointed out, the eSUN materials already write "190.0" and such in their profiles, which makes it a float even though it's not a calculated formula. While CuraEngine properly shortens the float to just "190" then, the front-end doesn't do this in the replacement keys of the start g-code. A minor issue. This doesn't solve the issue though. CuraEngine can still output fractional numbers willy-nilly, even if all of the profiles have integer values. For instance, if there isn't enough time to reach the stand-by temperature it'll instruct to cool down to the temperature that it thinks it can reach, which is computed from the cool down speed and the print duration and may be fractional. And normally that is fine, but apparently this printer firmware breaks on that. |
I have the same problem that @Gaweringo has. |
Btw, this is easy to reproduce on new installations of cura, without any special profile: Has no relation with materials calculation. To reproduce the issue, in a bare installation of cura 4.9.1 on Linux (Fedora 33 x86) do the following: Now open the Expert print profile. 5 - Replace the first zero from "Printing Temperature Initial Layer" by the number two, the result will show 220.0 Now go over the print temperature Initial Layer again. So I believe this troubleshooting shows two things: All that said: Clearly Adventurer 3 can't handle decimal points when setting temperatures. It's a known issue. While this is true, |
This is not entirely true here. The interface shows what is being stored, but it doesn't always store what you fill in. If the number you fill in is equal to the default from the profile, it doesn't store it as an override. Even if the profile holds a floating point type and what you type is integer.
No, Cura will also output fractional temperatures when there is not enough time to reach the stand-by temperature in multi-extrusion prints, even if all of the settings are integer. What's more, the user can still type in fractional temperatures. So fixing the start g-code is no guarantee that there will not be any fractional temperatures in the output. The only real solution is to have a machine setting to determine whether the printer firmware supports fractional temperatures or not. I.e. effectively what the title of this issue asks for. That is a detail which we won't be implementing since it is only applicable to third-party printers that we can't test with nor have any incentive for. Pull requests are welcome, but we can't implement this on Ultimaker's time. Sorry! I'll have to defer this. |
If anyone is working on a PR for this, or is willing to point me to where the related things are in the code i'd be glad to help with this issue. |
That would be in the Or in the case of the start g-code, in the
|
Practically no one will need to setup so precisely the temperatures, so there is not practical need to be with fractional values. |
Hi 👋, If this is still something that you think can improve how you and others use Cura, can you please leave a comment? If it has been resolved or don't need it to be improved anymore, you don't have to do anything, and this issue will be automatically closed in 14 days. |
I don't think it's worth pursuing this as it was a workaround to fix an issue with the flashforge firmware. |
I would like to see this fixed, it should a pretty simple fix. I can probably provide a PR if required. |
Actually... scratch that. It looks like the M140 and M104 lines can just be left out of the start G-code and the start temps get generated. I'm going to create a plugin for the adventurer, I'm doing it bit by bit. |
My Guider 2S continues to suffer from this problem on its latest firmware, in 2024. So while I get that MOST printers accept the floating point temperature format, clearly many FlashForge printers do not. |
Cura 4.8.0 adds a .0 to the Printing and Build Plate Temperature.
This trailing 0 is not in the Print Settings of the material.
My printer (Monoprice Voxel/Flashforge Adventurer 3) interprets a number like 210.0 as 0 and thus tries to print with a room temperature nozzle and bed.
A solution would be to add an option that removes the decimal place. Probably in the Machine Settings.
The way of doing it now is to manually remove the decimal before every print. Which Cura then wants to save into the Profile.
Affected printers are, as stated earlier:
And if there already is a way to change this, please let me know.
The text was updated successfully, but these errors were encountered: