184 Commits

Author SHA1 Message Date
Lukáš Hejl
dcf26e1302 SPE-2501: Add an option to specify which extruder controls the bed temperature. 2025-02-17 12:23:02 +01:00
Martin Šach
57e984b083 SPE-2636 Enforce z generation after layer change
There can be custom gcode that modifies the print head position.
2025-02-12 17:05:19 +01:00
jalapnopuzzle
462758153b const prevents calling GCodeGenerator::travel_to functions which change the m_pos internal state.
These methods allow travel moves to be made without checking the distance against XYZ_EPSILON, which may prevent the move from being emitted. This is useful when we want an important comment to be emitted, like a layer change.

get_travel_to_gcode() functions don't maintain m_pos, which later causes incorrect speed calculations as the movement vector is measured incorrectly.

Ensure that client code can't make moves without maintaining m_pos.
2025-02-12 17:05:19 +01:00
Martin Šach
ef89fb3af8 Fix avoid crossing perimeters on layer change (SPE-2498, #13445, #13478) 2024-11-05 13:55:26 +01:00
Martin Šach
aa6132ebb6 Scarf seam implementation. 2024-09-26 14:43:09 +02:00
Martin Šach
6cfad69a5a Fix first travel to wipe tower after layer change 2024-08-12 15:50:01 +02:00
Lukáš Hejl
7f666265e1 SPE-2368: Reduce the number of emitted M106 when dynamic fan speed on overhangs is enabled.
This fixed duplicity M106, which doesn't have any effect.
Also, it was implemented hysteresis that filters out small back-and-forth changes in fan speeds.
2024-08-09 09:56:42 +02:00
Martin Šach
af4a1d67a9 Fix cancel object annotation 2024-07-10 15:18:52 +02:00
Martin Šach
61e015fc38 Fix layer change handling 2024-07-10 15:18:52 +02:00
Martin Šach
131f05c3c4 Add offset to extrusions an make sure to reset origin 2024-07-10 15:18:52 +02:00
Martin Šach
dca7318896 Refactor process layer single object 2024-07-10 15:18:52 +02:00
Martin Šach
a321a97f36 Use smooth path to extrude brim 2024-07-10 15:18:52 +02:00
Martin Šach
d2d9762322 Smooth path for infills 2024-07-10 15:18:52 +02:00
Martin Šach
d54f20a12c failed arc welder in path ordering 2024-07-10 15:18:52 +02:00
Martin Šach
773c34f906 Move skirt smooth path generation to extrusion order 2024-07-10 15:18:52 +02:00
Martin Šach
a5f6da6bd5 Move get_sorted_extrusions to a gcode generator method 2024-07-10 15:18:52 +02:00
Martin Šach
02c615999b Separate extrusion order utilities to a file. 2024-07-10 15:18:50 +02:00
Martin Šach
bee25a4652 Precalculate noraml and overriden extrusions, before exporting 2024-07-10 15:17:43 +02:00
Martin Šach
e922a8f84f Move slice_extrusions and support extrusions one layer up 2024-07-10 15:17:43 +02:00
Martin Šach
d41304a42a First extract extrusions than generate gcode 2024-07-10 15:17:43 +02:00
Martin Šach
257888513d Separate extrusion extraction from extrusion gcode generation 2024-07-10 15:17:43 +02:00
Martin Šach
e1275f7307 Do not use GCodeGenerator::last_position during extrusion extraction and sorting. 2024-07-10 15:17:43 +02:00
Martin Šach
31eab3eb36 Separate 'extrude_infill_ranges' and use 'extract_infill_ranges' 2024-07-10 15:17:43 +02:00
Martin Šach
5a9f9946ba Separate 'extrude_infill_range'. 2024-07-10 15:17:43 +02:00
Martin Šach
4e7d5453f6 Separate 'extrude_perimeters.' 2024-07-10 15:17:43 +02:00
Martin Šach
96e3e77fef Prepare fe for include optimization.
- Add pragmas to keep necessary headers with symbols not explicitly
stated in the file.
- Use include paths that IWYU understands.
2024-07-08 15:37:02 +02:00
Lukas Matena
d8bf4fed18 Merge branch 'lh_ms_seam_improvements' 2024-05-14 07:33:26 +02:00
Lukas Matena
8d26de63f3 The new chamber_minimal_temperature parameter is taken into account 2024-05-14 07:14:18 +02:00
Lukas Matena
126de4d648 Chamber temperature G-code emission 2024-05-14 07:14:18 +02:00
Martin Šach
e60b8b1193 Seam placement improvements.
Previously there was an algirithm that was fitting a curve through
the resulting seam points. This worked for smooth models, but was
failing for some very basic cases (such as a cylinder).

The new algorithm builds on the previously implemented visibility
algirithm but does not do the curve fitting anymore.

Now the code is more separated for the four seam placement
options (rear, random, aligned, nearest).

Nearest and random are handled as one would expect.
Aligned is handled in a more "brute force" manner
(trying multiple seams and picking the best one)
and rear smartly switches between two modes
(center straight line projection and max y).
2024-05-06 10:11:32 +02:00
Lukas Matena
9dc7b70084 Merge branch 'master_27x' 2024-03-27 16:37:47 +01:00
enricoturri1966
858e431f97 Removed obsolete tech ENABLE_GCODE_VIEWER_DATA_CHECKING 2024-03-26 14:41:55 +01:00
Martin Šach
ea9dfa9a8d Use path generation even on layer change 2024-03-20 14:42:27 +01:00
Martin Šach
1c2e3aed74 Fix reset on layer change by keeping it all the time 2024-03-14 15:42:52 +01:00
Martin Šach
0894ac6d72 Evaluate maybe change instance lazily 2024-03-14 15:42:52 +01:00
Martin Šach
fdbe119658 Make LabelObjects hold state.
* This enables setting the object flags anywhere in gcode.
* The flags are then set in such a way that cancel object behaves as expected.
2024-03-14 15:42:52 +01:00
Martin Šach
3fdd02fff5 Use proper z for no sparse layers travel start - this z is used to calculate lift of the travel (#12330, SPE-2176) 2024-02-26 16:12:40 +01:00
Martin Šach
8a2db4cf11 Disable retraction replacing in vase mode with ramping enabled.
Fixes: #12305
2024-02-22 10:21:07 +01:00
Martin Šach
bc0fc8a789 Fix missing deretraction coused by caching gcode writer. Use find and replace to remove the retraction if not required 2024-02-19 15:27:38 +01:00
Martin Šach
e5656a80c2 Fix wipe before ramping travel 2024-02-19 15:24:48 +01:00
Lukas Matena
601d61ca86 Fixed placeholders extruded_volume and similar: wipe tower was not included 2024-02-07 09:55:37 +01:00
Lukas Matena
642535eecb Added const Print backpointer into GCodeGenerator 2024-02-07 09:55:37 +01:00
Nohus
540b800a5c SPE-1922: Place M600 after unretract to prevent printer returns at the position that was already printed with the previous color.
This fixes #2672 caused by the default implementation of M600 that returns back to XY position before M600.
2024-02-01 09:34:01 +01:00
Martin Šach
812c40e887 Unify GCodeGenerator travel to first layer position.
* Fixes SPE-2116. The reason for this bug was forgotten change in
  WipeTowerIntegration after change in gcode.cpp.
* Prevents future similar bugs by unifing the functionality to a method.
2024-01-23 09:00:58 +01:00
Lukáš Hejl
da57489874 Implement lift before obstacles that take into account already extruder extrusions on the current layer.
Ignore the first intersection of the travel path with the object from which the travel starts.

Created a new class TravelObstacleTracker, for wrapping all data structures related to lift before obstacles.
2024-01-17 12:22:22 +01:00
Lukáš Hejl
1b0ba60280 Rename m_last_obj_copy to m_current_instance and use struct instead of std::pair.
Also, instead of storing the shift of the instance, store the instance index.
2024-01-17 12:22:22 +01:00
Lukáš Hejl
317db5fab4 Move ObjectLayerToPrint from GCodeGenerator to outside to allow using forward declaration. 2024-01-17 12:22:22 +01:00
SachCZ
ff30d7aad3 Replace last_pos and helpers with optional in GCode.cpp 2024-01-17 12:22:22 +01:00
SachCZ
7f397cd7b3 Implement ramping layer change using a tag in gcode
During layer change, instead of generating the gcode, generate a placeholder tag. Then at the end of layer processing replace this tag with a ramping travel move.
This solves the issue, that one does not know the starting point of the current layer where the layer change gcode would be originally generate.
The ramping layer changes uses smoothing of the ramping travel. Also it is adjusted in such a way that it increases the ramp angle when the travel is too short, to always reach the next layer.
2024-01-17 12:22:19 +01:00
Martin Šach
0b3974954d Remove layer count in GCode.hpp 2024-01-08 10:27:38 +01:00