180 Commits

Author SHA1 Message Date
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
Martin Šach
e298593a2e Refactor: Separate gcode generator layer changes utilities to a file. 2023-12-06 09:49:56 +01:00
Martin Šach
e13d3cdbf2 Refactor: Move gcode travel utils to a separate file. 2023-12-06 09:49:56 +01:00
Martin Šach
2175fc3f4d Fix lift before obstacle over multiple instances. 2023-12-06 09:49:56 +01:00
Martin Šach
f6efd3a501 Fix: Spiral vase missing perimeter 2023-12-04 10:03:34 +01:00