Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ARC_SEGMENTS_PER_SEC for finer G2/G3 arcs #16510

Merged
merged 4 commits into from
Jan 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a logic or linguistic error.
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment -> No segment can be smaller than 1 mm!
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle -> When the circumference of the circle is smaller than 24 mm print a circle with not smaller than that - because the segments cant be smaller then 1mm.

One of this defines is unlikely to be a minimum. Else arcs with small diameters are impossible.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MIN_ARC_SEGMENTS overrides MM_PER_ARC_SEGMENT to make possibly shorter segments. Personally I don't like MIN_ARC_SEGMENTS because it is trying to enforce smoothness irrespective of radius or feed rate, and it can generate excessive resolution that causes stalls.

Copy link
Member

@AnHardt AnHardt Jan 9, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So MM_PER_ARC_SEGMENT isn't a minimum but a maximum segment length.
And is that is right now, there is a conflict with:
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
If it's a maximum as well as a minimum there is no other possible value.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With MIN_STEPS_PER_SEGMENT we already have a lower limit for the length of one segment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MM_PER_ARC_SEGMENT, when not using ARC_SEGMENTS_PER_SEC, is the 'default' segment length and it can be shorter if MIN_ARC_SEGMENTS implies more smoothness than MM_PER_ARC_SEGMENT provides.

When using ARC_SEGMENTS_PER_SEC, the 'usual' behavior is for segment length to be determined by the feed rate but for very low feed rates the segments can become extremely short. If the feed rate is low enough that the segments are shorter than MM_PER_ARC_SEGMENT then it uses MM_PER_ARC_SEGMENT instead, so in that sense it is a minimum on the speed-derived segment length. But the MIN_ARC_SEGMENTS is still in effect, so a very fast small circle might be a hexagon according to ARC_SEGMENTS_PER_SEC, and MIN_ARC_SEGMENTS of 7 or more would force a smoother curve and the segments would be made shorter (and the segment rate would be higher than ARC_SEGMENTS_PER_SEC).

Not all combinations of these settings make sense, for example a large MM_PER_ARC_SEGMENT and a high rate of segments per second would mean the MM_PER_ARC_SEGMENT would almost always take precedence and the segments per second has no effect. A large value for MIN_ARC_SEGMENTS would mean that small circles will ignore feed rate or (otherwise) minimum resolution and proceed with possibly extremely fine resolution that has no benefit.

Yes MIN_STEPS_PER_SEGMENT causes small segments to collapse, so there is no real benefit resolution-wise for MM_PER_ARC_SEGMENT to be much less than that.

I think a combination of settings that makes sense is for ARC_SEGMENTS_PER_SEC to be a value that the CPU can keep up with comfortably, and for MM_PER_ARC_SEGMENT to be a small value similar to the length that corresponds to MIN_STEPS_PER_SEGMENT. And MIN_ARC_SEGMENTS should not be used because ARC_SEGMENTS_PER_SEC will already provide the best smoothness that's reasonable at a given feed rate.

//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
17 changes: 12 additions & 5 deletions Marlin/src/gcode/motion/G2_G3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,15 @@ void plan_arc(
mm_of_travel = linear_travel ? HYPOT(flat_mm, linear_travel) : ABS(flat_mm);
if (mm_of_travel < 0.001f) return;

uint16_t segments = FLOOR(mm_of_travel / (MM_PER_ARC_SEGMENT));
const feedRate_t scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s);

#ifdef ARC_SEGMENTS_PER_SEC
float seg_length = scaled_fr_mm_s * _RECIP(ARC_SEGMENTS_PER_SEC);
Copy link
Contributor

@LinFor LinFor Jan 10, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usage of private-styled macro _RECIP from another module.

I have compilation fail here:
Compiling .pio\build\LPC1768\src\src\gcode\motion\G2_G3.cpp.o Marlin\src\gcode\motion\G2_G3.cpp: In function 'void plan_arc(const xyze_pos_t&, const ab_float_t&, uint8_t)': Marlin\src\gcode\motion\G2_G3.cpp:109:41: error: '_RECIP' was not declared in this scope float seg_length = scaled_fr_mm_s * _RECIP(ARC_SEGMENTS_PER_SEC); ^~~~~~ *** [.pio\build\LPC1768\src\src\gcode\motion\G2_G3.cpp.o] Error 1

Copy link
Contributor

@LinFor LinFor Jan 10, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to use RECIPROCAL() macro instead?

NOLESS(seg_length, MM_PER_ARC_SEGMENT);
#else
constexpr float seg_length = MM_PER_ARC_SEGMENT;
#endif
uint16_t segments = FLOOR(mm_of_travel / seg_length);
NOLESS(segments, min_segments);

/**
Expand Down Expand Up @@ -146,10 +154,9 @@ void plan_arc(
// Initialize the extruder axis
raw.e = current_position.e;

const feedRate_t scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s);

#if ENABLED(SCARA_FEEDRATE_SCALING)
const float inv_duration = scaled_fr_mm_s / MM_PER_ARC_SEGMENT;
const float inv_duration = scaled_fr_mm_s / seg_length;
#endif

millis_t next_idle_ms = millis() + 200UL;
Expand Down Expand Up @@ -206,7 +213,7 @@ void plan_arc(
planner.apply_leveling(raw);
#endif

if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, MM_PER_ARC_SEGMENT
if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, seg_length
#if ENABLED(SCARA_FEEDRATE_SCALING)
, inv_duration
#endif
Expand All @@ -226,7 +233,7 @@ void plan_arc(
planner.apply_leveling(raw);
#endif

planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, MM_PER_ARC_SEGMENT
planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, seg_length
#if ENABLED(SCARA_FEEDRATE_SCALING)
, inv_duration
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/default/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/3DFabXYZ/Migbot/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/ADIMLab/Gantry v1/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/ADIMLab/Gantry v2/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/AlephObjects/TAZ4/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Alfawise/U20-bltouch/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1531,9 +1531,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Alfawise/U20/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1530,9 +1530,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/AliExpress/UM2pExt/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Anet/A2/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Anet/A2plus/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Anet/A6/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
//#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Anet/A8/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
//#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Anet/A8plus/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
//#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Anet/E10/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
//#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Anet/E16/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
//#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/AnyCubic/i3/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/ArmEd/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1533,9 +1533,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
7 changes: 4 additions & 3 deletions config/examples/Artillery/Genius/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1529,9 +1529,10 @@
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
#define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
//#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
Expand Down
Loading