Skip to content

Releases: FormerLurker/ArcWelderLib

1.2.0

21 Nov 21:38
Compare
Choose a tag to compare

At long last a new version of ArcWelderLib, ArcWelder Console, ArcStraightener, and the associated libraries are available!

Please report any feedback in the discussion created for this release.

Enhancements

  • Add extrusion rate variance to support Cura's Arachne engine (variable line width).
  • Add support for travel move conversion.
  • Enhance inverse processor to support various firmware implementations and versions (Marlin 1/2, Prusa Firmware, Smoothieware, repetier).
  • Add workaround for firmware that does not support long gcode commands.
  • Reduce the max radius to reduce the impact of gcodes that are too long for the current firmware implementation.
  • Enhance arc generation to convert more G1/G2 commands to arcs when transitioning from retraction/deretraction/travel.
  • Make extrusion rate variance percentage (added to support cura Arachne) optional (0 = disabled).
  • Enhance segment/travel statistics rendering for python code to include unicode box drawing characters.

Arc Welder Console Argument Changes

New arguments are available for the console version of ArcWelder:

  • --allow-travel-arcs (-y) - This will allow ArcWelder to convert travel moves to G2/G3. Default: True
  • --extrusion-rate-variance-percent (-v) - This will cause ArcWelder to abort any current arcs if the extrusion rate changes more than the percent (where 0.05 = 5%) specified. This enhances quality and provides support for Cura's Arachne engine (variable line width). 0=disabled. Default: 0.05 (5%).
  • --max-gocde-length (-c) - Some firmware have issues with long gocde commands. This setting allows ArcWelder to terminate arc generation if the resulting gcode contains more characters than this setting. 0=no limit. Default = disabled.
  • --progress-type (-p) - Supports three options: NONE, SIMPLE, and FULL. NONE - Prevents all progress display text. SIMPLE - Gives just basic progress messages (percent complete), each on a single line. FULL - Shows detailed statistics, which are useful for any third-party app that wants to give a detailed status update. Default: SIMPLE

Arc Straightener (Inverse Processor) Argument Changes

This has been COMPLETELY overhauled. It's quite difficult to test these functions, so I'd appreciate any feedback you have.

  • --firmware-type (-f) - MARLIN_1|MARLIN_2|REPETIER|PRUSA|SMOOTHIEWARE> - Sets the firmware type to emulate when converting G2/G3 to G1/G2
  • --firmware-version (-v) - Sets the firmware version to use. The allowable values depend on the firmware type. LATEST_RELEASE will use the newest version available. Use the --help flag to see all available versions for each firmware type. Also note that the Prusa Firmware v3.11.0 does not yet exist. I added it in anticipation of new arc features from this pull request which has been added to the official milestones. Hopefully I won't have to remove that.
  • --print-firmware-defaults (-p) - Prints all default arc interpolation settings for the provided firmware-type and firmware-version. This is quite useful to see what options the firmware supports. Note that the defaults will be used unless they are overridden by other options, and you must provide a source/target to use this option until I manage to fix this limitation. Example: ArcStraightener "" "" -p:
Showing arguments and defaults for MARLIN_2 (LATEST_RELEASE)
Available argument for firmware: --mm-per-arc-segment, --arc-segments-per-r, --min-arc-segments, --arc-segments-per-sec, --n-arc-correction, --g90-g91-influences-extruder
Default Firmware Arguments:
        Firmware Type               : MARLIN_2
        Firmware Version            : 2.0.9.1 (LATEST_RELEASE)
        g90_g91_influences_extruder : True
        min_arc_segments            : 24
        n_arc_correction            : 25
        mm_per_arc_segment          : 1.00
        arc_segments_per_r          : 0.00
        arc_segments_per_sec        : 0.00
The following parameters do not apply to this firmware version: min_mm_per_arc_segment, mm_max_arc_error, min_circle_segments, min_arc_segment_mm, max_arc_segment_mm

Note - Not all of the following arguments are supported by all firmware implementations. Use the --print-firmware-defaults to see if the selected firmware supports these options.

  • --max-arc-segment-mm (-d) - Sets the maximum number of segments per millimeter.
  • --min-arc-segment-mm (-b) - The minimum mm per arc segment. Used to prevent unnecessarily small segments from being generated. A value less than or equal to 0 will disable this feature. Default Value: 0.
  • --min-circle-segments (-a) - The minimum number of segments within a circle of the same radius as the arc. Can be used to increase detail on small arcs. The smallest segment generated will be no larger than min_mm_per_arc_segment. A value less than or equal to 0 will disable this feature. Default Value: 0.
  • --arc-segments-per-second (-s) - The number of segments per second. This will produce a constant number of arcs, clamped between mm-per-arc-segment and min-mm-per-arc-segment. Can be used to prevent stuttering when printing very quickly. A value less than or equal to 0 will disable this feature. Default Value: 0.
  • --n-arc-correction (-c) - The number of segments that will be interpolated using a small angle approximation before true sin/cos corrections are applied. A value less than or equal to 1 will disable this feature. Default Value: 24.
  • --min-arc-segments (-r) - The minimum number of segments within a circle of the same radius as the arc. Can be used to increase detail on small arcs. The smallest segment generated will be no larger than min_mm_per_arc_segment. A value less than or equal to 0 will disable this feature. Default Value: 0.
  • --min-mm-per-arc-segment (-n) - The minimum mm per arc segment. Used to prevent unnecessarily small segments from being generated. A value less than or equal to 0 will disable this feature. Default Value: 0.
  • --mm-per-arc-segment (-m) - The default segment length. Note that this parameter has different effects on different firmware. Default Value: 1.00000.
  • --g90-influences-extruder (-g) - Sets the firmware's G90/G91 influences extruder axis behavior. By default this is determined by the firmware's behavior. Default Value: DEFAULT.

Important Notes about Binaries

The MacOs action is still not working. @fieldOfView was kind enough to compile ArcWelder AND ArcStraightener for the Mac (thanks!).

The Raspbian version does not output the correct version info or branch, but it does include the correct build date. This is because it is built remotely on a Raspberry Pi, which does not include git info. I'll work to remedy this.

1.1.1

07 Feb 20:26
Compare
Choose a tag to compare

This is mostly a bugfix release, but also contains support for the 'UltiGcode' comment. Please drop some feedback here. I'd LOVE a note if you were able to find a build that works for you, and if you were able to get it working. I want to hear about the good things, the bad things, and everything in-between, and will work to improve the software based on your input. Thank you for trying Arc Welder!

Enhancements

  • Support for UltiGcode. Preserves the first comment as the first line if it is equal to ;FLAVOR:UltiGCode
  • Added slicer integration instructions to the README.md file

Bug Fixes

  • Fixed a regression added in 1.1.0, where empty lines in a gcode file that appear between commands that would generate an arc could be inserted out-of-order. Empty lines are now taken into account, and removed when necessary. Solves #34.

1.1.0

24 Jan 21:07
Compare
Choose a tag to compare

This release includes some enhancements and bugfixes related to user feedback, as well as a major overhaul of arc error detection. Please leave any feedback for this release here.

Some of the enhancements were geared towards increasing performance, but some of the bug fixes and other enhancement reduced performance. I think it is a wash.

@fieldOfView was kind enough to supply a build for MacOS, which has been attached. Thanks!

Enhancements

  • If ArcWelder fails to find an arc in the usual way, using the first, middle, and final points, it will perform a deep search of all possible points for an arc. If more than one arc is detected, it will use the one with the least average deviation. This increases compression by a few percent, but does slow down the algorithm somewhat. Solves #29
  • Advanced arc error detection has been added, which will prevent errant arcs no matter what the path_tolerance_percent is set at (I used 10,000% to test extreme cases). I've not found a situation yet where this new algorithm fails. This should prevent a lot of edge cases from causing problems. Please note that these situations were very rare, but serious.
  • The windows binaries are now statically linked, which should allow ArcWelder to run without the c++ runtime libraries. The exe is a bit bigger, but I think this is a great tradeoff for not needing an installer.
  • I've added a binary for the Raspberry Pi.
  • A modified version of the fpconv algorithm has been implement to enhance the speed of generating floating point strings. Solves #24
  • The precision of XYZIJ and E parameters can now be specifically defined in both the console version and the libraries. Solved #22.
  • POW and the Modulus operator have been removed to increase performance where possible. Solves #25
  • Tolerance values are now pre-calculated, further increasing performance. Solves #26
  • All relevant settings are now added to the ArcWelder comment at the top of the file. This should help simplify debugging of future issues.

Bugfixes

  • It was possible (though very rare) in previous versions of ArcWelderConsole and the related libraries to produce an arc with I and J values below the current precision of the gcode output. This caused errors and disconnects in some firmware. This problem is now detected an prevented. Solves #23
  • The default value for mm-per-arc-segment was incorrect. This has been corrected.

1.0.0

30 Nov 17:51
Compare
Choose a tag to compare

Initial release of the ArcWelderLib library, including the console application (ArcWelder) and the inverse processor (ArcStraightener).

Note: This release has been patched.