diff options
author | FormerLurker <hochgebe@gmail.com> | 2021-03-04 03:48:01 +0300 |
---|---|---|
committer | FormerLurker <hochgebe@gmail.com> | 2021-03-04 03:48:01 +0300 |
commit | 3649ab7fe0ff3ad61769d7c311bc052bedf2f098 (patch) | |
tree | a5d3e7fce794f2f35416064f76b707a08dd7ab63 /PyArcWelder | |
parent | fe18f18b4c005a2c4e4b69a5866d0d065bde82aa (diff) |
Add extrusion rate variance percent parameter for cura Arachne.
Diffstat (limited to 'PyArcWelder')
-rw-r--r-- | PyArcWelder/py_arc_welder.h | 2 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder_extension.cpp | 17 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder_extension.h | 3 |
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; |