From 4f2fef2779e4cac3d31eb2ba4181416efb6a6bab Mon Sep 17 00:00:00 2001 From: FormerLurker Date: Fri, 20 Nov 2020 14:40:10 -0600 Subject: Add -z parameter to console app to support arcs, take z into account when calculating spiral length. --- PyArcWelder/py_arc_welder.h | 6 ++++-- PyArcWelder/py_arc_welder_extension.cpp | 19 ++++++++++++++++++- PyArcWelder/py_arc_welder_extension.h | 4 ++++ 3 files changed, 26 insertions(+), 3 deletions(-) (limited to 'PyArcWelder') diff --git a/PyArcWelder/py_arc_welder.h b/PyArcWelder/py_arc_welder.h index 4d0e56b..ba2dcf7 100644 --- a/PyArcWelder/py_arc_welder.h +++ b/PyArcWelder/py_arc_welder.h @@ -42,7 +42,8 @@ public: double resolution_mm, double path_tolerance_percent, double max_radius, - bool g90_g91_influences_extruder, + bool g90_g91_influences_extruder, + bool allow_z_axis_changes, int buffer_size, PyObject* py_progress_callback ): arc_welder( @@ -52,7 +53,8 @@ public: resolution_mm, path_tolerance_percent, max_radius, - g90_g91_influences_extruder, + g90_g91_influences_extruder, + allow_z_axis_changes, buffer_size ){ guid_ = guid; diff --git a/PyArcWelder/py_arc_welder_extension.cpp b/PyArcWelder/py_arc_welder_extension.cpp index bce6620..194ee22 100644 --- a/PyArcWelder/py_arc_welder_extension.cpp +++ b/PyArcWelder/py_arc_welder_extension.cpp @@ -148,7 +148,13 @@ extern "C" void initPyArcWelder(void) std::vector logger_names; logger_names.push_back("arc_welder.gcode_conversion"); std::vector logger_levels; + logger_levels.push_back(log_levels::NOSET); + logger_levels.push_back(log_levels::VERBOSE); logger_levels.push_back(log_levels::DEBUG); + logger_levels.push_back(log_levels::INFO); + logger_levels.push_back(log_levels::WARNING); + logger_levels.push_back(log_levels::ERROR); + logger_levels.push_back(log_levels::CRITICAL); p_py_logger = new py_logger(logger_names, logger_levels); p_py_logger->initialize_loggers(); std::string message = "PyArcWelder V0.1.0rc1.dev2 imported - Copyright (C) 2019 Brad Hochgesang..."; @@ -190,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, 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.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); @@ -294,6 +300,17 @@ 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 Allow Z Axis Changes + // allow_z_axis_changes + PyObject* py_allow_z_axis_changes = PyDict_GetItemString(py_args, "allow_z_axis_changes"); + if (py_allow_z_axis_changes == NULL) + { + std::string message = "ParseArgs - Unable to retrieve allow_z_axis_changes from the args."; + p_py_logger->log_exception(GCODE_CONVERSION, message); + return false; + } + args.allow_z_axis_changes = PyLong_AsLong(py_allow_z_axis_changes) > 0; + // Extract G90/G91 influences extruder // g90_influences_extruder PyObject* py_g90_g91_influences_extruder = PyDict_GetItemString(py_args, "g90_g91_influences_extruder"); diff --git a/PyArcWelder/py_arc_welder_extension.h b/PyArcWelder/py_arc_welder_extension.h index f288c9a..fb5524c 100644 --- a/PyArcWelder/py_arc_welder_extension.h +++ b/PyArcWelder/py_arc_welder_extension.h @@ -50,6 +50,7 @@ struct py_gcode_arc_args { path_tolerance_percent = ARC_LENGTH_PERCENT_TOLERANCE_DEFAULT; max_radius_mm = DEFAULT_MAX_RADIUS_MM; g90_g91_influences_extruder = DEFAULT_G90_G91_INFLUENCES_EXTREUDER; + allow_z_axis_changes = DEFAULT_ALLOW_Z_AXIS_CHANGES; log_level = 0; } py_gcode_arc_args( @@ -60,6 +61,7 @@ struct py_gcode_arc_args { double path_tolerance_percent_, double max_radius_mm_, bool g90_g91_influences_extruder_, + bool allow_z_axis_changes_, int log_level_ ) { guid = guid_; @@ -68,6 +70,7 @@ struct py_gcode_arc_args { resolution_mm = resolution_mm_; path_tolerance_percent = path_tolerance_percent_; max_radius_mm = max_radius_mm_; + allow_z_axis_changes = allow_z_axis_changes_; g90_g91_influences_extruder = g90_g91_influences_extruder_; log_level = log_level_; } @@ -76,6 +79,7 @@ struct py_gcode_arc_args { std::string target_path; double resolution_mm; double path_tolerance_percent; + bool allow_z_axis_changes; bool g90_g91_influences_extruder; double max_radius_mm; int log_level; -- cgit v1.2.3