Releases: evil-mad/axidraw
AxiDraw Software 3.9.0
A major feature release, including some long time frequently-requested features
Key changes
- New Hidden-line removal feature. When enabled, objects or parts of objects occluded by filled objects will not be drawn. You can read details in the AxiDraw User Guide and we've also written about it in a blog post.
- AxiDraw for Inkscape (AxiDraw Control extension): New "Hidden-line removal" option in Options>Advanced tab.
- AxiDraw Python API and CLI API: New
hiding
option to control this feature (is disabled by default).
- AxiDraw for Inkscape (AxiDraw Control extension): Preview option switch is now always visible, regardless of which tab is open. This saves time switching preview on and off, and makes it easy to see if it's on or off.
- AxiDraw for Inkscape (AxiDraw Control extension): Reorganization of AxiDraw Control GUI.
- Options>Preview and Alerts tab has been renamed to Options>Notifications.
- "Report time" option moved from Options>Advanced tab to Options>Notifications
- AxiDraw Python API and CLI API: New feature to offset the pause position on a plot, letting you resume plotting a little bit before (or a little bit after) where the plot was initially paused. You can also use it to configure a plot to start some specified distance through, even if it was not initially paused.
- AxiDraw Python API: New function
load_config()
to load a configuration file.
Other improvements, bug fixes, and maintenance:
- Major "under-the-hood" changes to the structure of the AxiDraw extensions for Inkscape in order to support the new hidden-line removal feature.
- AxiDraw for Inkscape builds are now (for the first time) platform specific, rather than cross-platform. We are currently building for Linux (x86), Linux (ARM), Windows, and Mac (Universal x86/ARM).
- AxiDraw for Inkscape is now running under Python 3.11, giving a significant speed boost.
- Added new
hiding
option to configuration file. - Rewrote core of SVG path parsing code (in simplepath.py of ink_extensions repository). Makes parsing of very large SVG files about 20% faster
- AxiDraw Python API: The numeric time report values noted in the description of the report_time option are now always populated, even if
report_time
is not enabled. - AxiDraw Python API: New
block()
function, which waits until all queued motion commands have completed. - Changed wording of "check for updates" notices to clearly indicate that updates are not required.
- Fixed a bug that could cause a traceback on SVG files containing XML comments.
- AxiDraw Python API and CLI API: Redesigned installation script for better reliability.
- Updates to AxiDraw User Guide, and documentation for Python API and CLI API, in support of new features and changes.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive (ad-ink_[...].zip) for manual installation into your Inkscape "user extensions" folder is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain permalinks for latest version as well as an archival link to this particular version, as well as installation and upgrade instructions. An archive for manual installation is attached to this release as well. The download package also includes the full HTML documentation for both APIs.
AxiDraw Software 3.8.0
A major update, with significant performance improvements and several minor new features.
Key changes
- Significant performance gains in processing the input SVG file, particularly for large SVG files.
- Faster time to begin plotting (or resume plotting). The degree of improvement depends on the nature of the file and the options selected. Some test files that would not begin plotting (or resume plotting) for 30 s now begin in under 4 s.
- Resume > Return to Home Corner command (and
res_home
mode in the APIs) is dramatically faster on large files. - Faster computation between plots when plotting or previewing multiple copies of a document:
- Parse and digest file only once before plotting (or previewing) multiple copies.
- Faster previews; preview is only rendered on last page.
- Faster yet previews when randomization is disabled. (Rather than calculating the same page many times, calculate once and multiply.)
- Some examples showing these specific speed gains are documented as Issue 144.
- New feature to export an optimized "plot digest", or "Plob" file from Inkscape. For files where initial processing is time consuming, printing from a Plob file can be much faster, particularly when using repeated pause and resume cycles.
- Add support for narrow-band brushless servo option.
- Overhaul of the AxiDraw CLI progress bar:
- Progress now shown in physical units, as mm of travel.
- Simplified and clarified progress bar during delays between pages.
- Added secondary progress bar to show layer delays (delays added with AxiDraw layer control syntax).
Minor features
- Added new "dead slow" rates for pen lifting and lowering in AxiDraw Control Inkscape extension, half the speed of "very slow".
- Added new
penlift
option in configuration file and Python/CLI APIs, to enable brushless servo option. - Python API now supports
axidraw.__version__
(in addition to existingversion_string
). - When pausing a plot, the paused message now includes the pause position, given as pen-down distance through the file in millimeters.
- Visual makeover of AxiDraw Control Inkscape extension
Other bug fixes, improvements, and maintenance:
- Changed
walk_dist
option in configuration file and Python/CLI APIs todist
. (The old valuewalk_dist
is now deprecated but still functional.) - Added new
button_interval
parameter in configuration file to specify interval for polling pause button - Added 6 new parameters in configuration file to support new brushless servo option.
- Changed the format of plot progress data stored in the SVG file. (As is typical for each software update, documents saved after pausing by previous software versions cannot resume plotting in the new version.)
- Fully rewritten "drip feeder" that manages the process of sending motion commands to the hardware
- Fully rewritten pause-and-resume subsystem. The internal plot-progress index is now based on distance of pen-down motion, rather than a count of "nodes" or trajectory waypoints. (Necessary for new features to offset pause position.)
- Expand estimate_time.py example file included with Python API
- Supersampling to smooth paths with overly-high vertex density is now dramatically faster and now happens after path joining.
- Supersampling tolerance is now slightly higher.
- Default path joining distance threshold is now slightly smaller.
- General refactoring for code quality.
- Updates to AxiDraw User Guide, and documentation for Python API and CLI API, in support of new features and changes.
-Documentation updates: State explicitly that AxiDraw Nicknames are erased by firmware updates. Added to AxiDraw Naming utility GUI, plus notes in the user guide and API docs. - Fixed some bugs reflecting "corner cases" of pause and resume functionality
- Bug fix: Avoid a case where initial acceleration was too high when resuming a plot in the middle of a path
- Bug fix: Avoid a possible position-along-path issue when changing speed before resuming a plot
- Bug fix: The time allotted to lower the pen was incorrectly calculated in cases where the pen raising and lowering speeds were different.
- Bug fix: Layer delays were not correctly skipped in preview mode
- Bug fix: Only display pen-lift count report when also reporting time
- Bug fix:
strip_data
manual command was not working in CLI API - Bug fix: Python API, plot context: Raise error more gracefully on failure to load file
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive (ad-ink_[...].zip) for manual installation into your Inkscape "user extensions" folder is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain permalinks for latest version as well as an archival link to this particular version, as well as installation and upgrade instructions. An archive for manual installation is attached to this release as well. The download package also includes the full HTML documentation for both APIs.
AxiDraw Software 3.7.0
A minor feature and bugfix release.
Key changes
- Rewrote the "path joining" routine in our plot optimizations, which joins together adjacent paths where the endpoint of one path is very close to the start point of the next path. The prior routine could fail to identify some paths that could be joined. While the new routine runs in about the same amount of execution time as the old one and does not typically change plot time, some grid-based plots with heavy endpoint overlap are seeing reductions of up to 15% in plot time.
- Python API: Plots run via the Python API can now be paused by a keyboard interrupt.
- Removed
bezier_segmentation_tolerance
andsmoothness
parameters from configuration file; replaced with a singlecurve_tolerance
parameter that has physical units. If you use a custom configuration file that specifies the old parameters, you may need to update your configuration file.
Other bug fixes, improvements, and maintenance:
- Add notice in AxiDraw Naming utility that updating firmware will removed any assigned nickname.
- Python API and CLI API: Add support for Python 3.11. Python 3.7 - 3.11 are now supported.
- Python API: Now also raise an error in the Plot context on failure to connect or loss of USB connectivity.
- Python API: The
fw_version_string
variable is now always populated by plot_run(), for any mode that connects to the hardware via USB. - Bug fix: When using digital output B3 and also having a physical transit time for the pen to raise and lower, B3 will switch at the beginning of the transit time, not the end. (Fixes issue introduced in prior version.)
- Removed API changelog notes in the online CLI API and Python API documentation for changes older than two years. These entries are still available in the archived download of the previous API version, and the extended changelog is still available in changelog.txt.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive (ad-ink_[...].zip) for manual installation into your Inkscape "user extensions" folder is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain permalinks for latest version as well as an archival link to this particular version, as well as installation and upgrade instructions. An archive for manual installation is attached to this release as well. The download package also includes the full HTML documentation for both APIs.
AxiDraw Software 3.6.0
A minor feature and bugfix release.
Key changes
- Python API: Added new
delay()
command in the interactive context, which creates a hardware-timed delay that can be queued with other motion control commands. - The
axidraw_conf.py
configuration file now sets defaults formode
,manual_cmd
, andwalk_dist
. (Previously, each had an immutable default value.) While potentially useful in the Python API, this adds significant capability to the AxiDraw Command-line Interface AxiCLI: You can now use separate config files in AxiCLI to (e.g.) cycle the pen, perform manual walks, or plot the document. - Issue #126: AxiCLI now returns a non-zero exit code on keyboard or pause button interrupt
while plotting (but not during delays between multiple pages), as well as on
certain errors, such as an initial failure to connect over USB or the loss of an active USB connection.
Other bug fixes, improvements, and maintenance:
- General documentation updates for the CLI API and Python API.
- Issue #131: Python Interactive API will now raise an error on movement commands when no USB connection is active.
- Related: Updated all Python API examples, ensuring that each demonstrates checking for an active connection.
- Related: Updated Python API documentation to ensure that each example shows checking for an active connection.
- Related: Update Python API documentation: Emphasize that it is important to check for an active connection.
- Issue #132: Fixed an issue where the AxiCLI progress bar could fail to initialize properly when resuming a plot.
- Renamed Python example script low-level_usb.py -> low_level_usb.py
- Streamline feedback to user when the USB connection is lost during a plot; reduce possible duplicate error messages and (by default) do not print the exact command/response that indicated the loss of connection.
- Fix a case where a warning message could be printed multiple times.
- Fixed an issue that could cause an erroneous warning message to be printed when exceeding plot bounds.
- Fixed an issue with AxiDraw Layer Control and per-layer pen-down height settings.
- Use a short timeout interval when checking online for updates.
- Re-order information printed when checking online for updates.
- Significant refactoring and reorganization of the main code base.
- Avoid a traceback on certain types of malformed SVG objects.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive (ad-ink_[...].zip) for manual installation into your Inkscape "user extensions" folder is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain permalinks for latest version as well as an archival link to this particular version, as well as installation and upgrade instructions. An archive for manual installation is attached to this release as well. The download package also includes the full HTML documentation for both APIs.
AxiDraw Software 3.5.0
A minor feature release.
Key changes
- Added new Cycle setup command, available on the "Setup" tab of AxiDraw Control as well as in the Python and CLI APIs. This command lowers the pen, waits a moment, and then raises it to the pen-up position.
- The AxiDraw Command-line Interface (CLI) now has a progress bar 🎉 -- a frequent request (e.g., #70). Enable it with
--progress
,-b
, or in your configuration file. - Added a new function,
draw_path()
in the Python API, which lets you draw a path composed of vertex lists, in your choice of units, while working in the Interactive context.
Other bug fixes, improvements, and maintenance:
- Added additional status printout information in the CLI when progress bars are enabled.
- Setup and manual commands that move the pen are more responsive; returning control to the user sooner.
- Python 3.7+ is now a hard requirement. (If you need to use Python 3.6, use AxiDraw 3.2 or older.)
- Fixed an issue where warning messages could be printed repeatedly in some cases.
- Added configuration file option
servo_pin
, for re-assigning the pen-lift servo output pin on the EBB. - Added new Python API example scripts:
- turtle_pos.py
- interactive_draw_path.py
- Significant refactoring and reorganization of the main code base.
- Updated lxml dependency following a security advisory.
- Documentation updates (CLI API, Python API, Inkscape extensions) for the new features.
Please note that refactoring changes to the structure of the Python API may break integrations using undocumented (private) API imports, variables, or methods. Use the documented from pyaxidraw import axidraw
import statement.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive (ad-ink_[...].zip) for manual installation into your Inkscape "user extensions" folder is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain permalinks for latest version as well as an archival link to this particular version, as well as installation and upgrade instructions. An archive for manual installation is attached to this release as well. The download package also includes the full HTML documentation for both APIs.
AxiDraw Software 3.4.0
A minor feature and bugfix release.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive for manual installation is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain permalinks for latest version as well as an archival link to this particular version, as well as installation and upgrade instructions. An archive for manual installation is attached to this release as well.
Changes
- Added a new "strict" mode in plot optimization that disables not only regular optimization but also the standard connected-path joining feature
- Add voltage input and motor current setpoint estimate readouts to the information listed by the Config tab.
- Added new options in the axidraw_conf.py configuration file that lets users customize the colors used when rendering previews.
- Corrected a motion planning bug that could cause a bump in some conditions.
- Ignore Inkscape
templateinfo
objects in the SVG tree - Corrected a bug where Hatch Fill was not correctly computing the spacing between hatches on objects with transforms when individually selected.
AxiDraw Software 3.3.0
A minor compatibility and maintenance release.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive for manual installation is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain permalinks for latest version as well as an archival link to this particular version, as well as installation and upgrade instructions. An archive for manual installation is attached to this release as well.
Changes
- Issue #119; add support for
--user
flag on API install. - Added support for new AxiDraw V3/B6 model.
- Remove calls to the deprecated function distutils.version.LooseVersion
AxiDraw Software 3.2.2
A minor compatibility release, with updates to support Inkscape 1.2.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive for manual installation is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain a permalink to the latest release of the API download as well as installation instructions. There is no API version published for 3.2.2; API users should continue to use the v3.2.1 release.
Changes
- Changes to Inkscape .inx files for compatibility with Inkscape 1.2
- Added support for new AxiDraw SE/A4 model.
AxiDraw Software 3.2.1
A minor bug fix release.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive for manual installation is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain a permalink to the latest release of the API download as well as installation instructions. An archive for manual installation is attached to this release as well.
Changes
- Fixed an issue that could cause AxiDraw Layer Control commands to be ignored after a programmatic pause
- Added two new example files for the python API.
AxiDraw Software 3.2
A minor feature and bug fix release.
Getting the software
Inkscape (GUI) software releases are hosted at https://wiki.evilmadscientist.com/Axidraw_Software_Installation (short link: https://axidraw.com/sw ). Formats include Mac and Windows installers, as well as a direct ZIP download for manual installation on Mac, Windows, or Linux, or for making your own use of the source code. These installers also include the latest EggBot and WaterColorBot software for Inkscape. An archive for manual installation is attached to this release as well.
Python/CLI API releases are hosted at https://axidraw.com/doc/py_api/ and https://axidraw.com/doc/cli_api/ , which are the documentation sites for those two APIs. Both contain a permalink to the latest release of the API download as well as installation instructions. An archive for manual installation is attached to this release as well.
Key changes
- Added new "Walk Home" manual command,
walk_home
in Python and CLI APIs: a manual-walk type command that moves the carriage back to the place where the motors were energized. Useful for resetting any changes made by other manual walks. - Add AxiDraw SE/A1 and SE/A2 as default models, available to select in Inkscape-based GUI, Python API, and CLI API.
- Improved model for time duration of raising/lowering pen-lift servo motor, initially motivated by a bug in time calculations (when using custom configured travel endpoints) identified in #118
- Command-line Interface (CLI) API Add Control+C as a software-controlled method to pause a plot in progress, motivated by #75.
- New
connected
variable in Python API that can be polled to report whether the computer is currently connected to the AxiDraw through an open serial connection.
Other bug fixes, improvements, and maintenance:
- Fix an error that was causing layer-based programmatic pauses to not work when plotting in Layers mode.
- The internal "global step counters" are no longer automatically cleared when plotting or updating parameters. Only when first energizing the motors at a given resolution. This makes the QS and HM EBB commands more useful, as the step counters more likely reflect the position where the motors were initially energized, assuming firmware 2.6.2 or newer.
- Updated lxml dependency to v 4.6.5 following a security advisory.
- Documentation updates (CLI API, Python API, Inkscape extensions) for the new and updated features.