Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FormerLurker/ArcWelderLib.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFormerLurker <hochgebe@gmail.com>2021-03-04 03:48:01 +0300
committerFormerLurker <hochgebe@gmail.com>2021-03-04 03:48:01 +0300
commit3649ab7fe0ff3ad61769d7c311bc052bedf2f098 (patch)
treea5d3e7fce794f2f35416064f76b707a08dd7ab63 /PyArcWelder
parentfe18f18b4c005a2c4e4b69a5866d0d065bde82aa (diff)
Add extrusion rate variance percent parameter for cura Arachne.
Diffstat (limited to 'PyArcWelder')
-rw-r--r--PyArcWelder/py_arc_welder.h2
-rw-r--r--PyArcWelder/py_arc_welder_extension.cpp17
-rw-r--r--PyArcWelder/py_arc_welder_extension.h3
3 files changed, 21 insertions, 1 deletions
diff --git a/PyArcWelder/py_arc_welder.h b/PyArcWelder/py_arc_welder.h
index ed4e8cc..6813c34 100644
--- a/PyArcWelder/py_arc_welder.h
+++ b/PyArcWelder/py_arc_welder.h
@@ -49,6 +49,7 @@ public:
bool allow_dynamic_precision,
unsigned char default_xyz_precision,
unsigned char default_e_precision,
+ double extrusion_rate_variance_percent,
int buffer_size,
PyObject* py_progress_callback
): arc_welder(
@@ -65,6 +66,7 @@ public:
allow_dynamic_precision,
default_xyz_precision,
default_e_precision,
+ extrusion_rate_variance_percent,
buffer_size
){
guid_ = guid;
diff --git a/PyArcWelder/py_arc_welder_extension.cpp b/PyArcWelder/py_arc_welder_extension.cpp
index 1e0728b..71c3855 100644
--- a/PyArcWelder/py_arc_welder_extension.cpp
+++ b/PyArcWelder/py_arc_welder_extension.cpp
@@ -210,6 +210,7 @@ extern "C"
args.allow_dynamic_precision,
args.default_xyz_precision,
args.default_e_precision,
+ args.extrusion_rate_variance_percent,
DEFAULT_GCODE_BUFFER_SIZE,
py_progress_callback
);
@@ -342,11 +343,25 @@ static bool ParseArgs(PyObject* py_args, py_gcode_arc_args& args, PyObject** py_
args.default_e_precision = 6;
}
+ // Extract the extrusion_rate_variance
+ PyObject* py_extrusion_rate_variance_percent = PyDict_GetItemString(py_args, "extrusion_rate_variance_percent");
+ if (py_extrusion_rate_variance_percent == NULL)
+ {
+ std::string message = "ParseArgs - Unable to retrieve the extrusion_rate_variance_percent parameter from the args.";
+ p_py_logger->log_exception(GCODE_CONVERSION, message);
+ return false;
+ }
+ args.extrusion_rate_variance_percent = gcode_arc_converter::PyFloatOrInt_AsDouble(py_extrusion_rate_variance_percent);
+ if (args.extrusion_rate_variance_percent < 0)
+ {
+ args.extrusion_rate_variance_percent = DEFAULT_EXTRUSION_RATE_VARIANCE_PERCENT; // Set to the default if no resolution is provided, or if it is less than 0.
+ }
+
// Extract the path tolerance_percent
PyObject* py_path_tolerance_percent = PyDict_GetItemString(py_args, "path_tolerance_percent");
if (py_path_tolerance_percent == NULL)
{
- std::string message = "ParseArgs - Unable to retrieve the py_path_tolerance_percent parameter from the args.";
+ std::string message = "ParseArgs - Unable to retrieve the path_tolerance_percent parameter from the args.";
p_py_logger->log_exception(GCODE_CONVERSION, message);
return false;
}
diff --git a/PyArcWelder/py_arc_welder_extension.h b/PyArcWelder/py_arc_welder_extension.h
index 2c2ecec..9b979fe 100644
--- a/PyArcWelder/py_arc_welder_extension.h
+++ b/PyArcWelder/py_arc_welder_extension.h
@@ -69,6 +69,7 @@ struct py_gcode_arc_args {
bool allow_dynamic_precision_,
unsigned char default_xyz_precision_,
unsigned char default_e_precision_,
+ double extrusion_rate_variance_percent_,
int log_level_
) {
guid = guid_;
@@ -83,6 +84,7 @@ struct py_gcode_arc_args {
allow_dynamic_precision = allow_dynamic_precision_;
default_xyz_precision = default_xyz_precision_;
default_e_precision = default_e_precision_;
+ extrusion_rate_variance_percent = extrusion_rate_variance_percent_;
g90_g91_influences_extruder = g90_g91_influences_extruder_;
log_level = log_level_;
}
@@ -95,6 +97,7 @@ struct py_gcode_arc_args {
bool allow_dynamic_precision;
unsigned char default_xyz_precision;
unsigned char default_e_precision;
+ double extrusion_rate_variance_percent;
bool g90_g91_influences_extruder;
double max_radius_mm;
int min_arc_segments;