Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
53eadf0
Basically working sending full GCode at the end
wawanbreton Mar 23, 2026
03c1da2
Apply clang-format
wawanbreton Mar 23, 2026
a9f1f32
Resolve GCode templates at the end
wawanbreton Mar 24, 2026
434fcdd
Merge remote-tracking branch 'origin-um/main' into CURA-13049_process…
wawanbreton Mar 25, 2026
025b0eb
Calculate and replace end-of-print variables in engine
wawanbreton Mar 26, 2026
88fd672
Remove now-useless code
wawanbreton Mar 27, 2026
2be3b26
Calculate the initial extruder and print state on engine side
wawanbreton Mar 29, 2026
a38e53b
Remove warning since code is correct
wawanbreton Mar 30, 2026
ea9d876
Create the environments once and just add the local ones
wawanbreton Mar 31, 2026
9c4c88d
Multi-thread gcode parts resolving
wawanbreton Mar 31, 2026
5c34243
Update unit tests
wawanbreton Apr 2, 2026
7a401a9
Fix EmscriptenCommunication
wawanbreton Apr 2, 2026
c5b688c
Merge branch 'main' into CURA-13049_process-the-end-variable-replacem…
wawanbreton Apr 2, 2026
1c2e19b
Add documentation
wawanbreton Apr 2, 2026
317ad65
Fix crash when extruder is unused
wawanbreton Apr 3, 2026
fc4cbfd
Add first layer bounding box as GCode variable
wawanbreton Apr 3, 2026
d8fe46c
Calculate more accurate first layer bounding box
wawanbreton Apr 3, 2026
e53d0f9
Add list of used extruders as variable
wawanbreton Apr 3, 2026
6aa9f7c
Fix functions not being applied in formulas
wawanbreton Apr 8, 2026
82f9e4a
Add total print bounding box variable
wawanbreton Apr 8, 2026
b45f19f
Merge remote-tracking branch 'origin-um/main' into CURA-13049_process…
wawanbreton Apr 14, 2026
ecd268a
Merge remote-tracking branch 'origin/main' into CURA-13049_process-th…
wawanbreton Apr 16, 2026
0005a2d
Merge remote-tracking branch 'origin/main' into CURA-13049_process-th…
wawanbreton Apr 28, 2026
07d18e0
Apply clang-format
wawanbreton Apr 28, 2026
bed9dd8
Update unit tests
wawanbreton Apr 28, 2026
337babe
Polish documentation
wawanbreton Apr 28, 2026
bc55f7e
Remove now-useless header inclusion
wawanbreton Apr 28, 2026
da4b865
Add possibly missing headers
wawanbreton Apr 28, 2026
8de26ff
Fix Emscripten build
wawanbreton Apr 28, 2026
288faa5
Add defensive check
wawanbreton Apr 30, 2026
fa4dbbd
Use formulae engine from proper branch
wawanbreton Apr 30, 2026
fd4119e
Fix typo
wawanbreton Apr 30, 2026
7300d08
Add documentation
wawanbreton Apr 30, 2026
13f1704
Add documentation
wawanbreton Apr 30, 2026
58064fa
Merge branch 'main' into CURA-13049_process-the-end-variable-replacem…
HellAholic May 6, 2026
84a0b9e
(Try to) fix Windows build
wawanbreton May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,7 @@ set(engine_SRCS # Except main.cpp.
src/FffGcodeWriter.cpp
src/FffPolygonGenerator.cpp
src/FffProcessor.cpp
src/gcodeExport.cpp
src/GCodePathConfig.cpp
src/GcodeTemplateResolver.cpp
src/infill.cpp
src/InfillOrderOptimizer.cpp
src/InsetOrderOptimizer.cpp
Expand All @@ -68,6 +66,7 @@ set(engine_SRCS # Except main.cpp.
src/PathAdapter.cpp
src/PathOrderMonotonic.cpp
src/Preheat.cpp
src/PrintInformation.cpp
src/PrimeTower/PrimeTower.cpp
src/PrimeTower/PrimeTowerNormal.cpp
src/PrimeTower/PrimeTowerInterleaved.cpp
Expand Down Expand Up @@ -116,6 +115,11 @@ set(engine_SRCS # Except main.cpp.
src/communication/EmscriptenCommunication.cpp
src/communication/Listener.cpp

src/gcode_export/gcodeExport.cpp
src/gcode_export/FixedGCodePart.cpp
src/gcode_export/ResolvedGCodePart.cpp
src/gcode_export/GcodeTemplateResolver.cpp

src/infill/AbstractLinesInfill.cpp
src/infill/ImageBasedDensityProvider.cpp
src/infill/NoZigZagConnectorProcessor.cpp
Expand Down
8 changes: 8 additions & 0 deletions Cura.proto
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,14 @@ message PrintTimeMaterialEstimates { // The print time for each feature and mate
message MaterialEstimates {
int64 id = 1;
float material_amount = 2; // material used in the extruder
float material_length = 3; // Length if used filaments, in meters
float material_weight = 4; // Weight of used filament, in grams
float material_cost = 5;
string material_name = 6;
}

message InitialExtruder {
uint32 extruder_nr = 1;
}

message SettingList {
Expand Down
2 changes: 1 addition & 1 deletion conandata.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: "5.14.0-alpha.0"
commit: "unknown"
requirements:
- "cura-formulae-engine/1.0.0"
- "cura-formulae-engine/1.1.0@ultimaker/cura_13049"
- "scripta/[>=1.1.0]@ultimaker/testing"
- "libpng/1.6.48"
- "onetbb/2022.2.0"
Expand Down
152 changes: 152 additions & 0 deletions doc/formulae-env-adapters.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0" version="29.3.6">
<diagram name="Page-1" id="CGY_M83Ti9Vo0v8sfCIR">
<mxGraphModel dx="983" dy="601" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-1" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;Setting&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Extruder 0&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="530" y="470" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;Setting&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Global&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="600" y="380" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-3" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;Setting&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Extruder 1&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="670" y="470" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-4" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-1" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-2" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="450" y="550" as="sourcePoint" />
<mxPoint x="500" y="500" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-5" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-3" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-2" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="503" y="480" as="sourcePoint" />
<mxPoint x="527" y="450" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-6" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;EnvironmentMap&lt;/u&gt;&lt;/div&gt;&lt;div&gt;std_env&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="180" y="200" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-7" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;LocalEnvironment&lt;/u&gt;&lt;/div&gt;&lt;div&gt;global_environment&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="180" y="290" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-8" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-7" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-9" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="410" y="430" as="sourcePoint" />
<mxPoint x="380" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-9" parent="1" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" value="Contains extra settings that are global to the whole print" vertex="1">
<mxGeometry height="90" width="120" x="370" y="250" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-10" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-7" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-6" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="643" y="530" as="sourcePoint" />
<mxPoint x="667" y="500" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-11" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;Setting...Adapter&lt;/u&gt;&lt;/div&gt;&lt;div&gt;adapter global&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="310" y="380" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-12" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-11" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-7" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="250" y="300" as="sourcePoint" />
<mxPoint x="250" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-15" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;Setting...Adapter&lt;/u&gt;&lt;/div&gt;&lt;div&gt;adapter ex0&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="50" y="380" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-16" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;Setting...Adapter&lt;/u&gt;&lt;/div&gt;&lt;div&gt;adapter ex1&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="180" y="380" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-17" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-16" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-7" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="337" y="390" as="sourcePoint" />
<mxPoint x="293" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-18" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-15" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-7" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="250" y="390" as="sourcePoint" />
<mxPoint x="250" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-21" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-11" style="endArrow=classic;html=1;rounded=0;dashed=1;" target="2G1Lj2lZ86cbt5S1vXI7-2" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="646" y="320" as="sourcePoint" />
<mxPoint x="670" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-22" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-15" style="endArrow=classic;html=1;rounded=0;dashed=1;" target="2G1Lj2lZ86cbt5S1vXI7-1" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<Array as="points">
<mxPoint x="180" y="500" />
</Array>
<mxPoint x="440" y="420" as="sourcePoint" />
<mxPoint x="490" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-23" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-16" style="endArrow=classic;html=1;rounded=0;dashed=1;" target="2G1Lj2lZ86cbt5S1vXI7-3" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<Array as="points">
<mxPoint x="320" y="560" />
<mxPoint x="660" y="560" />
</Array>
<mxPoint x="180" y="435" as="sourcePoint" />
<mxPoint x="420" y="495" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-24" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;LocalEnvironment&lt;/u&gt;&lt;/div&gt;&lt;div&gt;local_env global&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="310" y="580" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-25" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;LocalEnvironment&lt;/u&gt;&lt;/div&gt;&lt;div&gt;local_env ex1&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="180" y="580" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-26" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;u&gt;LocalEnvironment&lt;/u&gt;&lt;/div&gt;&lt;div&gt;local_env ex0&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="120" x="50" y="580" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-27" parent="1" style="shape=document;whiteSpace=wrap;html=1;boundedLbl=1;" value="Contains extra settings that are local to this gcode part" vertex="1">
<mxGeometry height="90" width="120" x="180" y="720" as="geometry" />
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-28" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-24" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-27" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="310" y="322" as="sourcePoint" />
<mxPoint x="380" y="313" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-29" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-25" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-27" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="399" y="650" as="sourcePoint" />
<mxPoint x="442" y="720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-30" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-26" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-27" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="296" y="650" as="sourcePoint" />
<mxPoint x="410" y="725" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-31" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-26" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-15" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="163" y="390" as="sourcePoint" />
<mxPoint x="207" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-32" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-25" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-16" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="120" y="590" as="sourcePoint" />
<mxPoint x="120" y="450" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="2G1Lj2lZ86cbt5S1vXI7-33" edge="1" parent="1" source="2G1Lj2lZ86cbt5S1vXI7-24" style="endArrow=classic;html=1;rounded=0;" target="2G1Lj2lZ86cbt5S1vXI7-11" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="250" y="590" as="sourcePoint" />
<mxPoint x="250" y="450" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
13 changes: 12 additions & 1 deletion include/ExtruderPlan.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

#include "FanSpeedLayerTime.h"
#include "RetractionConfig.h"
#include "gcodeExport.h"
#include "geometry/Point2LL.h"
#include "pathPlanning/GCodePath.h"
#include "pathPlanning/NozzleTempInsert.h"
Expand All @@ -27,6 +26,7 @@ namespace cura
{
class LayerPlanBuffer;
class LayerPlan;
class GCodeExport;
/*!
* An extruder plan contains all planned paths (GCodePath) pertaining to a single extruder train.
*
Expand Down Expand Up @@ -131,6 +131,17 @@ class ExtruderPlan
*/
std::shared_ptr<const SliceMeshStorage> findFirstPrintedMesh() const;

/*! \brief Calculates whether this extruder plan actually has at least one extrusion move */
bool hasExtrusion() const;

/*!
* \brief Calculate the total bounding box of extrusion moves
* \note This is not 100% accurate since at this point we don't know the start position of the extruder plan. So if the very first
* move happens to be an extrusion move and the start position is the outermost of the bounding box, it will not be accounted
* for and the bounding box will be approximate.
*/
AABB calculateExtrusionBoundingBox() const;

private:
LayerIndex layer_nr_{ 0 }; //!< The layer number at which we are currently printing.
bool is_initial_layer_{ false }; //!< Whether this extruder plan is printed on the very first layer (which might be raft)
Expand Down
54 changes: 4 additions & 50 deletions include/FffGcodeWriter.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#ifndef GCODE_WRITER_H
#define GCODE_WRITER_H

#include <fstream>
#include <optional>

#include "ExtruderUse.h"
Expand All @@ -13,7 +12,8 @@
#include "LayerPlan.h"
#include "LayerPlanBuffer.h"
#include "LinesOrderingMethod.h"
#include "gcodeExport.h"
#include "PrintInformation.h"
#include "gcode_export/gcodeExport.h"
#include "utils/LayerVector.h"
#include "utils/NoCopy.h"
#include "utils/gettime.h"
Expand Down Expand Up @@ -61,11 +61,6 @@ class FffGcodeWriter : public NoCopy
*/
GCodeExport gcode;

/*!
* The gcode file to write to when using CuraEngine as command line tool.
*/
std::ofstream output_file;

//!< For each layer, the extruders to be used in that layer in the order in which they are going to be used
LayerVector<std::vector<ExtruderUse>> extruder_order_per_layer;

Expand All @@ -86,6 +81,8 @@ class FffGcodeWriter : public NoCopy

std::string slice_uuid; //!< The UUID of the current slice.

PrintInformation print_info_; //!< Global print information calculated along slicing

public:
/*
* \brief Construct a g-code writer.
Expand All @@ -95,49 +92,6 @@ class FffGcodeWriter : public NoCopy
*/
FffGcodeWriter();

/*!
* Set the target to write gcode to: to a file.
*
* Used when CuraEngine is used as command line tool.
*
* \param filename The filename of the file to which to write the gcode.
*/
bool setTargetFile(const char* filename);

/*!
* Set the target to write gcode to: an output stream.
*
* Used when CuraEngine is NOT used as command line tool.
*
* \param stream The stream to write gcode to.
*/
void setTargetStream(std::ostream* stream);

/*!
* Wether or not the extruder is actually used in the print, regardless of enablement.
*
* \param extruder_nr The extruder number for which to get the useage
* \return actual use y/n boolean
*/
bool getExtruderActualUse(int extruder_nr);

/*!
* Get the total extruded volume for a specific extruder in mm^3
*
* Retractions and unretractions don't contribute to this.
*
* \param extruder_nr The extruder number for which to get the total netto extruded volume
* \return total filament printed in mm^3
*/
double getTotalFilamentUsed(int extruder_nr);

/*!
* Get the total estimated print time in seconds for each feature
*
* \return total print time in seconds for each feature
*/
std::vector<Duration> getTotalPrintTimePerFeature();

/*!
* Write all the gcode for the current meshgroup.
* This is the primary function of this class.
Expand Down
43 changes: 0 additions & 43 deletions include/FffProcessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,49 +47,6 @@ class FffProcessor : public NoCopy
*/
TimeKeeper time_keeper; // TODO: use singleton time keeper

/*!
* Set the target to write gcode to: to a file.
*
* Used when CuraEngine is used as command line tool.
*
* \param filename The filename of the file to which to write the gcode.
*/
bool setTargetFile(const char* filename);

/*!
* Set the target to write gcode to: an output stream.
*
* Used when CuraEngine is NOT used as command line tool.
*
* \param stream The stream to write gcode to.
*/
void setTargetStream(std::ostream* stream);

/*!
* Wether or not the extruder is actually used in the print, regardless of enablement.
*
* \param extruder_nr The extruder number for which to get the useage
* \return actual use y/n boolean
*/
bool getExtruderActualUse(int extruder_nr);

/*!
* Get the total extruded volume for a specific extruder in mm^3
*
* Retractions and unretractions don't contribute to this.
*
* \param extruder_nr The extruder number for which to get the total netto extruded volume
* \return total filament printed in mm^3
*/
double getTotalFilamentUsed(int extruder_nr);

/*!
* Get the total estimated print time in seconds for each feature
*
* \return total print time in seconds for each feature
*/
std::vector<Duration> getTotalPrintTimePerFeature();

/*!
* Add the end gcode and set all temperatures to zero.
*/
Expand Down
Loading
Loading