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>2020-11-06 19:43:13 +0300
committerFormerLurker <hochgebe@gmail.com>2020-11-06 19:43:13 +0300
commit91633ba765214d1c6eece514e2dd2d0e898be8b4 (patch)
tree21ed3e43d72bc89efb0f363464ec26ee5e3ce536 /PyArcWelder
parent395c472dfc6080b0b0b2fca9f1dba6eeb46c21cf (diff)
Implementations for #8, #9, #10, #11.
Diffstat (limited to 'PyArcWelder')
-rw-r--r--PyArcWelder/py_arc_welder.h22
-rw-r--r--PyArcWelder/py_arc_welder_extension.cpp16
-rw-r--r--PyArcWelder/py_arc_welder_extension.h13
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;