Octoprint plugin that allows users to generate a print queue, specify a print bed clearning script and run the queue which will
WARNING: Your printer must have a method of clearing the bed automatically, with correct GCODE instructions set up in this plugin's settings page - damage to your printer may occur if this is not done correctly.
- In the OctoPrint UI, go to
Settings
->Plugin Manager
->Get More
- Search for "Continuous Print", and click Install, following any instructions
- If you can't find the plugin, you can also put https://github.com/Zinc-OS/continuousprint/archive/master.zip into the "...from URL" section of the Get More page.
- Restart OctoPrint
That's it! Now let's configure it to work with your printer.
Go to Settings
-> Continuous Print
and ensure the bed cleaning and queue finished scripts are correct for your 3D printer.
You can also enable settings here for compatibility with The Spaghetti Detective for automatic retries when the print starts failing.
- Navigate to the file you wish to add in the Files dialog on the left of the page.
- Add it to the print queue by clicking the
+
button to the right of the file name.- If you want to print more than one, you can click multiple times to add more copies, or set a specific count in the
Continuous Print
tab.
- If you want to print more than one, you can click multiple times to add more copies, or set a specific count in the
The print queue won't start your prints just yet. To run the queue:
- Click the 'Continuous Print` tab (it may be hidden in the extra tabs fold-out on the right)
- Double check the order and count of your prints - set the count and order using the buttons and number box to the right of the queued print, and delete with the red
X
. - Click
Start Managing
.
The plugin will wait until your printer is ready to start a print, then it'll begin with the top of the queue and proceed until the bottom.
Note that when it's time to clear the print bed or finish up, a temporary cp_\*.gcode
file will appear in your local files, and disappear when it completes. This is a change from older "gcode injecting" behavior that is necessary to support at-commands in the clearing and finish scripts.
As the print queue is managed and prints complete, you can see the status of individual prints by clicking the small triangle to the left of any individual queue item.
This opens a sub-panel showing individual print stats and results.
When all prints are finished, the plugin stops managing the queue and waits for you to start it again.
If you need to stop early, click Stop Managing
(Note: any currently running print will continue unless you cancel it)
Click the triple-dot menu for several convenient queue cleanup options. You can also remove individual queue items with the red X
next to the item.
Based on the instructions at https://docs.octoprint.org/en/master/plugins/gettingstarted.html
Install octoprint locally:
git clone https://github.com/OctoPrint/OctoPrint
cd OctoPrint
virtualenv venv
source venv/bin/activate
pip install -e .
In the same terminal as the one where you activated the environment, Install the plugin in dev mode and launch the server:
git clone https://github.com/Zinc-OS/continuousprint.git
cd continuousprint
octoprint dev plugin:install
octoprint serve
You should see "Successfully installed continuousprint" when running the install command, and you can view the page at http://localhost:5000.
Backend unit tests are currently run manually:
python3 continuousprint/print_queue_test.py
python3 continuousprint/driver_test.py
Frontend unit tests require some additional setup (make sure yarn and its dependencies are installed):
cd .../continuousprint
yarn install
yarn run test
This will run all frontend JS test files (continuousprint/static/js/\*.test.js
). You can also yarn run watch-test
to set up a test process which re-runs whenever you save a JS test file.
Users of OctoPi can install a development version directly on their pi as follows:
ssh pi@<your octopi hostname>
and provide your password (the default israspberry
, but for security reasons you should change it withpasswd
when you can)git clone https://github.com/Zinc-OS/continuousprint.git
- Uninstall any existing continuous print installations (see
Settings
->Plugin Manager
in the browser) cd continuousprint && ~/oprint/bin/python3 setup.py install
Note that we're using the bundled version of python3 that comes with octoprint, NOT the system installed python3. If you try the latter, it'll give an error that sounds like octoprint isn't installed.
- The backend (
__init__.py
and dependencies) stores a flattened representation of the print queue and iterates through it from beginning to end. Each item is loaded as a QueueItem (seeprint_queue.py
). - The frontend talks to the backend with the flattened queue, but operates on an inmemory structured version:
- Each flattened queue item is loaded as a
CPQueueItem
(see continuousprint/static/js/continuousprint_queueitem.js) - Sets of the same queue item are aggregated into a
CPQueueSet
(see continuousprint/static/js/continuousprint_queueset.js) - Multiple queuesets are grouped together and run one or more times as a
CPJob
(see continuousprint/static/js/continuousprint_job.js) - For simplicity, each level only understands the level below it - e.g. a Job doesn't care about QueueItems.
- Each flattened queue item is loaded as a
- Remember, you can enable the virtual printer under
Virtual Printer
in OctoPrint settings. - Octoprint currently uses https://fontawesome.com/v5.15/icons/ for icons.
- Drag-and-drop functionality uses SortableJS wrapped with Knockout-SortableJS, customized:
Check these before releasing:
- All buttons under the triple-dot menu work as intended
- Jobs and items can be drag-reordered
- Jobs can't be dragged into items, items can't be dragged outside jobs
- Adding a file from the Files dialog works as intended
- Setting the count for jobs and items behaves as expected
- At-commands work in clearing/finish scripts
- Temporary gcode files are cleaned up after use
- Pausing and resuming the print works
- Cancelling restarts the print
- Print queue can be started and stopped; queue items complete in order
- Stylings look good in light and dark themes
- File integrity checking (resilience to renames/deletions)
- Save/remember and allow re-adding of jobs
- Improved queue history/status with more stats
- Segmented status bars to better indicate run completion
- Client library to support queue management automation
- Bed clearing profiles for specific printers
- Multi-user queue modification with attribution (shows who added which prints, prevents overwriting others' jobs)