diff options
author | FormerLurker <hochgebe@gmail.com> | 2020-11-23 17:39:15 +0300 |
---|---|---|
committer | FormerLurker <hochgebe@gmail.com> | 2020-11-23 17:39:15 +0300 |
commit | f2b52d935ebc81a2eb12cfd7a1c4b924cfc5ea68 (patch) | |
tree | c790f2249ef02d6bdd10dc8d44f9b3bcf58a4cdb /PyArcWelder | |
parent | 3eda30c23a6a8f1679989e1862e6c9d815cdbd7e (diff) |
Implement #18 and #19. Fix some compiler warnings.
Diffstat (limited to 'PyArcWelder')
-rw-r--r-- | PyArcWelder/py_arc_welder.h | 8 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder_extension.cpp | 30 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder_extension.h | 8 |
3 files changed, 43 insertions, 3 deletions
diff --git a/PyArcWelder/py_arc_welder.h b/PyArcWelder/py_arc_welder.h index ba2dcf7..979c3d0 100644 --- a/PyArcWelder/py_arc_welder.h +++ b/PyArcWelder/py_arc_welder.h @@ -41,7 +41,9 @@ public: py_logger* logger, double resolution_mm, double path_tolerance_percent, - double max_radius, + double max_radius, + int min_arc_segments, + double mm_per_arc_segment, bool g90_g91_influences_extruder, bool allow_z_axis_changes, int buffer_size, @@ -52,7 +54,9 @@ public: logger, resolution_mm, path_tolerance_percent, - max_radius, + max_radius, + min_arc_segments, + mm_per_arc_segment, g90_g91_influences_extruder, allow_z_axis_changes, buffer_size diff --git a/PyArcWelder/py_arc_welder_extension.cpp b/PyArcWelder/py_arc_welder_extension.cpp index 194ee22..4796230 100644 --- a/PyArcWelder/py_arc_welder_extension.cpp +++ b/PyArcWelder/py_arc_welder_extension.cpp @@ -196,7 +196,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.guid, args.source_path, args.target_path, p_py_logger, args.resolution_mm, args.path_tolerance_percent, args.max_radius_mm, args.g90_g91_influences_extruder, args.allow_z_axis_changes, DEFAULT_GCODE_BUFFER_SIZE, py_progress_callback); + py_arc_welder arc_welder_obj(args.guid, args.source_path, args.target_path, p_py_logger, args.resolution_mm, args.path_tolerance_percent, args.max_radius_mm, args.min_arc_segments, args.mm_per_arc_segment, args.g90_g91_influences_extruder, args.allow_z_axis_changes, 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); @@ -300,6 +300,34 @@ static bool ParseArgs(PyObject* py_args, py_gcode_arc_args& args, PyObject** py_ args.max_radius_mm = DEFAULT_MAX_RADIUS_MM; // Set to the default if no resolution is provided, or if it is less than 0. } + // Extract the mm_per_arc_segment + PyObject* py_mm_per_arc_segment = PyDict_GetItemString(py_args, "mm_per_arc_segment"); + if (py_mm_per_arc_segment == NULL) + { + std::string message = "ParseArgs - Unable to retrieve the mm_per_arc_segment parameter from the args."; + p_py_logger->log_exception(GCODE_CONVERSION, message); + return false; + } + args.mm_per_arc_segment = gcode_arc_converter::PyFloatOrInt_AsDouble(py_mm_per_arc_segment); + if (args.mm_per_arc_segment < 0) + { + args.mm_per_arc_segment = 0; + } + + // Extract min_arc_segments + PyObject* py_min_arc_segments = PyDict_GetItemString(py_args, "min_arc_segments"); + if (py_min_arc_segments == NULL) + { + std::string message = "ParseArgs - Unable to retrieve the min_arc_segments parameter from the args."; + p_py_logger->log_exception(GCODE_CONVERSION, message); + return false; + } + args.min_arc_segments = (int) gcode_arc_converter::PyIntOrLong_AsLong(py_min_arc_segments); + if (args.min_arc_segments < 0) + { + args.min_arc_segments = 0; // Set to the default if no resolution is provided, or if it is less than 0. + } + // Extract Allow Z Axis Changes // allow_z_axis_changes PyObject* py_allow_z_axis_changes = PyDict_GetItemString(py_args, "allow_z_axis_changes"); diff --git a/PyArcWelder/py_arc_welder_extension.h b/PyArcWelder/py_arc_welder_extension.h index fb5524c..bcd368b 100644 --- a/PyArcWelder/py_arc_welder_extension.h +++ b/PyArcWelder/py_arc_welder_extension.h @@ -49,6 +49,8 @@ struct py_gcode_arc_args { resolution_mm = DEFAULT_RESOLUTION_MM; path_tolerance_percent = ARC_LENGTH_PERCENT_TOLERANCE_DEFAULT; max_radius_mm = DEFAULT_MAX_RADIUS_MM; + min_arc_segments = DEFAULT_MIN_ARC_SEGMENTS; + mm_per_arc_segment = DEFAULT_MM_PER_ARC_SEGMENT; g90_g91_influences_extruder = DEFAULT_G90_G91_INFLUENCES_EXTREUDER; allow_z_axis_changes = DEFAULT_ALLOW_Z_AXIS_CHANGES; log_level = 0; @@ -60,6 +62,8 @@ struct py_gcode_arc_args { double resolution_mm_, double path_tolerance_percent_, double max_radius_mm_, + int min_arc_segments_, + double mm_per_arc_segment_, bool g90_g91_influences_extruder_, bool allow_z_axis_changes_, int log_level_ @@ -70,6 +74,8 @@ struct py_gcode_arc_args { resolution_mm = resolution_mm_; path_tolerance_percent = path_tolerance_percent_; max_radius_mm = max_radius_mm_; + min_arc_segments = min_arc_segments_; + mm_per_arc_segment = mm_per_arc_segment_; allow_z_axis_changes = allow_z_axis_changes_; g90_g91_influences_extruder = g90_g91_influences_extruder_; log_level = log_level_; @@ -82,6 +88,8 @@ struct py_gcode_arc_args { bool allow_z_axis_changes; bool g90_g91_influences_extruder; double max_radius_mm; + int min_arc_segments; + double mm_per_arc_segment; int log_level; }; |