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-23 17:39:15 +0300
committerFormerLurker <hochgebe@gmail.com>2020-11-23 17:39:15 +0300
commitf2b52d935ebc81a2eb12cfd7a1c4b924cfc5ea68 (patch)
treec790f2249ef02d6bdd10dc8d44f9b3bcf58a4cdb /PyArcWelder
parent3eda30c23a6a8f1679989e1862e6c9d815cdbd7e (diff)
Implement #18 and #19. Fix some compiler warnings.
Diffstat (limited to 'PyArcWelder')
-rw-r--r--PyArcWelder/py_arc_welder.h8
-rw-r--r--PyArcWelder/py_arc_welder_extension.cpp30
-rw-r--r--PyArcWelder/py_arc_welder_extension.h8
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;
};