This function is named as if it could later include other printed pieces, but it is meant to only include pieces that have normal bed adhesion, so not the prime locations.
Contributes to issue CURA-2625.
It's much easier to create, more obvious code, and better approximates the area that we seek to use for our prime location.
Contributes to issue CURA-2625.
The check for collisions is only at the end, and after that it adds the polygon itself. We should keep the code closer together to make it more readable.
Contributes to issue CURA-2625.
Because we have 'areas', 'disallowed_areas', 'self._disallowed_areas', 'disallowed_polygons', and so on. This should reduce the confusion a bit.
Contributes to issue CURA-2625.
This is not used, unless you take multi-threading into account. In that case though, the actual disallowed areas are only updated at the end of this function, and the _has_errors variable is updated right before then as well, so this way the variable is in an invalid state for a smaller amount of time.
Contributes to issue CURA-2625.
These disallowed areas will have to move or get duplicated according to which nozzles are used. Eventually we'll want to compute these with their Minkowski additions only when needed (the skirt size changes), not when the used extruders change. This is also part of an effort to make this disallowed area computation a bit better structured. The behaviour should be the same.
Contributes to issue CURA-2625.
These are the extruders that are being used by the scene if it would currently be printed. You can ask the extruder stacks for stuff like the nozzle offset. This way we can determine the disallowed areas per extruder.
Contributes to issue CURA-2625.
I've made sure that the behaviour of getAllExtruderValues remains the same, so that this function may still be used by other pieces of code. It is now just a special case of getAllExtruderSettings. Please suggest a better naming scheme, if you like.
Contributes to issue CURA-2823.
This is different from the old way of setting scale / rotation & position in sequence.
The assumption in that case only held if all spaces had the same axis orientations (which is not the case for 3MF)
Contributes to CURA-382
The carot indicates start of string, the dollar the end of string. So it must match on the entire string, not a piece of it.
Contributes to issue CURA-2692.
There is also a more advanced attempt that allows more, but I've commented it out because it doesn't quite work yet. Special characters now always count for 12.
Contributes to issue CURA-2652.
Currently this validator can't be used in QML due to a PyQt bug. I plan to call the validator manually upon receiving a signal that the text changed in a text box.
Contributes to issue CURA-2692.