diff options
author | FormerLurker <hochgebe@gmail.com> | 2020-11-06 19:43:13 +0300 |
---|---|---|
committer | FormerLurker <hochgebe@gmail.com> | 2020-11-06 19:43:13 +0300 |
commit | 91633ba765214d1c6eece514e2dd2d0e898be8b4 (patch) | |
tree | 21ed3e43d72bc89efb0f363464ec26ee5e3ce536 /PyArcWelder | |
parent | 395c472dfc6080b0b0b2fca9f1dba6eeb46c21cf (diff) |
Implementations for #8, #9, #10, #11.
Diffstat (limited to 'PyArcWelder')
-rw-r--r-- | PyArcWelder/py_arc_welder.h | 22 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder_extension.cpp | 16 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder_extension.h | 13 |
3 files changed, 47 insertions, 4 deletions
diff --git a/PyArcWelder/py_arc_welder.h b/PyArcWelder/py_arc_welder.h index 1b70980..ffa4561 100644 --- a/PyArcWelder/py_arc_welder.h +++ b/PyArcWelder/py_arc_welder.h @@ -34,8 +34,26 @@ class py_arc_welder : public arc_welder { public: - py_arc_welder(std::string source_path, std::string target_path, py_logger* logger, double resolution_mm, double max_radius, bool g90_g91_influences_extruder, int buffer_size, PyObject* py_progress_callback):arc_welder(source_path, target_path, logger, resolution_mm, max_radius, g90_g91_influences_extruder, buffer_size) - { + py_arc_welder( + std::string source_path, + std::string target_path, + py_logger* logger, + double resolution_mm, + double path_tolerance_percent, + double max_radius, + bool g90_g91_influences_extruder, + int buffer_size, + PyObject* py_progress_callback + ): arc_welder( + source_path, + target_path, + logger, + resolution_mm, + path_tolerance_percent, + max_radius, + g90_g91_influences_extruder, + buffer_size + ){ py_progress_callback_ = py_progress_callback; } virtual ~py_arc_welder() { diff --git a/PyArcWelder/py_arc_welder_extension.cpp b/PyArcWelder/py_arc_welder_extension.cpp index ea24f59..d22500e 100644 --- a/PyArcWelder/py_arc_welder_extension.cpp +++ b/PyArcWelder/py_arc_welder_extension.cpp @@ -190,7 +190,7 @@ extern "C" std::string message = "py_gcode_arc_converter.ConvertFile - Beginning Arc Conversion."; p_py_logger->log(GCODE_CONVERSION, INFO, message); - py_arc_welder arc_welder_obj(args.source_file_path, args.target_file_path, p_py_logger, args.resolution_mm, args.max_radius_mm, args.g90_g91_influences_extruder, 50, py_progress_callback); + py_arc_welder arc_welder_obj(args.source_file_path, args.target_file_path, p_py_logger, args.resolution_mm, args.path_tolerance_percent, args.max_radius_mm, args.g90_g91_influences_extruder, DEFAULT_GCODE_BUFFER_SIZE, py_progress_callback); arc_welder_results results = arc_welder_obj.process(); message = "py_gcode_arc_converter.ConvertFile - Arc Conversion Complete."; p_py_logger->log(GCODE_CONVERSION, INFO, message); @@ -256,6 +256,20 @@ static bool ParseArgs(PyObject* py_args, py_gcode_arc_args& args, PyObject** py_ args.resolution_mm = 0.05; // 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."; + p_py_logger->log_exception(GCODE_CONVERSION, message); + return false; + } + args.path_tolerance_percent = gcode_arc_converter::PyFloatOrInt_AsDouble(py_path_tolerance_percent); + if (args.path_tolerance_percent < 0) + { + args.path_tolerance_percent = ARC_LENGTH_PERCENT_TOLERANCE_DEFAULT; // Set to the default if no resolution is provided, or if it is less than 0. + } + // Extract the max_radius in mm PyObject* py_max_radius_mm = PyDict_GetItemString(py_args, "max_radius_mm"); if (py_max_radius_mm == NULL) diff --git a/PyArcWelder/py_arc_welder_extension.h b/PyArcWelder/py_arc_welder_extension.h index 068621b..84e50ec 100644 --- a/PyArcWelder/py_arc_welder_extension.h +++ b/PyArcWelder/py_arc_welder_extension.h @@ -46,14 +46,24 @@ struct py_gcode_arc_args { source_file_path = ""; target_file_path = ""; resolution_mm = DEFAULT_RESOLUTION_MM; + path_tolerance_percent = ARC_LENGTH_PERCENT_TOLERANCE_DEFAULT; max_radius_mm = DEFAULT_MAX_RADIUS_MM; g90_g91_influences_extruder = DEFAULT_G90_G91_INFLUENCES_EXTREUDER; log_level = 0; } - py_gcode_arc_args(std::string source_file_path_, std::string target_file_path_, double resolution_mm_, double max_radius_mm_, bool g90_g91_influences_extruder_, int log_level_) { + py_gcode_arc_args( + std::string source_file_path_, + std::string target_file_path_, + double resolution_mm_, + double path_tolerance_percent_, + double max_radius_mm_, + bool g90_g91_influences_extruder_, + int log_level_ + ) { source_file_path = source_file_path_; target_file_path = target_file_path_; resolution_mm = resolution_mm_; + path_tolerance_percent = path_tolerance_percent_; max_radius_mm = max_radius_mm_; g90_g91_influences_extruder = g90_g91_influences_extruder_; log_level = log_level_; @@ -61,6 +71,7 @@ struct py_gcode_arc_args { std::string source_file_path; std::string target_file_path; double resolution_mm; + double path_tolerance_percent; bool g90_g91_influences_extruder; double max_radius_mm; int log_level; |