Added GCode Block save/load with no encoding
Changed blocks order to: File metadata|Printer metadata|Thumbnails[]|Print metadata|Slicer metadata|GCode[]
1) added "num_extruders" placeholder
2) changed "is_extruder_used" vector to be always minimum 256 elements long
with the non-existent extruder values set to zero.
This is wasteful, but necessary until we change the PlaceholderParser
handling of vector values to not substitute missing elements
with the zero'th value.
The object labeling likely never worked. Likely it was contributed,
but not reviewed sufficiently (by me I suppose).
Now the object ID is calculated as an index in the list of PrintObjects,
the order is arbitrary but stable, indices start with 0 and incremented
for every printed object with no gap in indices.
We are not quite sure how the indices are used by the OctoPrint
"Cancel Object" plugin, I suppose this change is sufficient.
Dynamic overhang speed could sometimes wrongly apply volumtric limits
Also, setting speed to zero will now cause the algorithm to use base external perim speed.
the amount of total extruded material and per extruder extruded material
up to the point the value is evaluated:
"extruded_volume", "extruded_weight",
"extruded_volume_total", "extruded_weight_total"
Newly each custom G-code block may exchange the following values with slicer:
Position and Z-hop:
position (read/write)- 3 element vector (X, Y, Z) of current G-code position. Z element contains the current Z hop.
zhop (read only)- initial zhop value
Extruders: vector variables, one element per extruder:
e_position (read/write) - absolute E position, only available with absolute extruder addressing
e_retracted (read/write) - current retraction state
e_restart_extra (read/write) - current planned extra deretraction when starting printing
For readibility, script's if / elsif / else / endif syntax was modified:
{if cond then
block
elsif cond then
block
else
block
endif}
Semicolon is not required after else or endif.
Implements #4048#7196
Syntax:
(global|local) variable_name =
(scalar_expression|vector_variable|array_expr|initializer_list)
array_expr := array(repeat, value)
initializer_list := (value, value, value, ...)
The type of the newly created variable is defined by the type
of the right hand side intitializer.
Newly declared variable must not override an existing variable.
Variable may be assigned with global|local expression, but its type
must not be changed.
Newly the assignment operator also accepts the same right hand expressions
as the global|local variable definition.
Should fix the following issues: #9594, #9485, #9563, #9588, #9610
Also fixed a problem with zero speed when dynamic speed was percentage based and speeds were set to 0 (auto)
- remove the infinite skirt
- added 'idle_temperature' in Filament Settings as an optional parameter
- the logic is changed: if idle_temp is present, it is used,
otherwise it uses the old delta value from Print Settings
- TODO: the optional parameter is not well supported in UI
this removes duplicated code and fixes toolchange retraction
The ooze prevention part needs further work, now it does not
work as advertised (the tall skirt)