Skip to content

Junction Deviation Machine Limit #9234

Merged
Noisyfox merged 8 commits into
OrcaSlicer:mainfrom
RF47:JD-menu
Apr 15, 2025
Merged

Junction Deviation Machine Limit #9234
Noisyfox merged 8 commits into
OrcaSlicer:mainfrom
RF47:JD-menu

Conversation

@RF47

@RF47 RF47 commented Apr 5, 2025

Copy link
Copy Markdown
Collaborator

Added Junction Deviation Menus for Marlin Firmware

This update introduces a new Junction Deviation (JD) menus, allowing users to configure the maximum JD value for printers using Marlin firmware. JD is now the preferred motion control parameter, as the traditional jerk setting is considered obsolete in recent Marlin versions.
A menu is also added to the print settings panel.

The JD value will only be applied if:

  • The firmware is Marlin.
    Make sure the "Emit Limits to G-code" option is enabled for the JD setting to be included in the generated G-code.

image
image
image
image

@ianalexis

Copy link
Copy Markdown
Collaborator

After this pr is merged this value can be used to set different JD values according to the line type.
In this PR #9160 I am adding the corresponding function to set it.

@RF47 RF47 marked this pull request as draft April 8, 2025 00:22
@RF47 RF47 marked this pull request as ready for review April 8, 2025 18:27
@ianalexis ianalexis force-pushed the JD-menu branch 4 times, most recently from 24d346f to 2914e9e Compare April 10, 2025 18:31
Comment thread src/libslic3r/GCode.cpp Outdated
// New Marlin uses M205 J[mm] for junction deviation (only apply if it is > 0)

if (flavor == gcfMarlinFirmware && config().machine_max_junction_deviation.values.front() > 0) {
file.write_format("M205 J%.4lf ; set Junction Deviation, mm\n",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Could you update this to use the set_junction_deviation introduced in #9160

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It was with direct execution to keep the style that BBS has in that section. Even so we agree that the best way is through the writer.

@Noisyfox

Copy link
Copy Markdown
Collaborator

BTW, what do we need both default_junction_deviation and machine_max_junction_deviation?

@RF47

RF47 commented Apr 15, 2025

Copy link
Copy Markdown
Collaborator Author

BTW, what do we need both default_junction_deviation and machine_max_junction_deviation?

BTW, what do we need both default_junction_deviation and machine_max_junction_deviation?

Machine max junction deviation is the maximum limit allowed by the machine and should be added to the printer profile using Marlin's default value. Default junction deviation is the value used during printing and can be tuned for each print, but it must always stay within the machine's max limit

@Noisyfox

Copy link
Copy Markdown
Collaborator

Why not always use machine_max_junction_deviation for every print then?

@RF47

RF47 commented Apr 15, 2025

Copy link
Copy Markdown
Collaborator Author

Why not always use machine_max_junction_deviation for every print then?

Default juntion deviation allow you to save different print profiles for speed/ quality.

@ianalexis

Copy link
Copy Markdown
Collaborator

Why not always use machine_max_junction_deviation for every print then?

I consider that the important thing about JD is precisely to replace the Jerk options that have their limits defined in the machine, but it is allowed at the profile level to modify it without exceeding it.
For example, if we leave only the limit inside the printer it would only be used if “Emit limits to G-code” is enabled.
It is also important to have a well defined limit since this value can change a lot depending on the machine (for which the calibration test is used) and that the profile does not allow you to ruin prints by using a value that exceeds the printer capacity.
We are also aware of the fact that Klipper has stopped using JD and therefore, in order keep it clean and not to get in the way by adding irrelevant options, the JD options are disabled when it is not Marlin2.

@Noisyfox

Copy link
Copy Markdown
Collaborator

I see, that make sense.

@Noisyfox Noisyfox left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM, thanks

@Noisyfox Noisyfox merged commit 8cdc9c0 into OrcaSlicer:main Apr 15, 2025
@RF47 RF47 deleted the JD-menu branch July 22, 2025 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants