Skip to content

Home for the engine that powers slicerhub.com

Notifications You must be signed in to change notification settings

kaosat-dev/slicerhub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slicerhub is a framework to power server based ('cloud!') slicing of 3D models for 3D printing. There will be a publicly addressable RESTful API up and running at Slicerhub.com soon. The project is fully open source under the BSD license. Slicerhub allows much lower powered machines to have models sliced on a much more powerful machine all over the web. Imagine having a raspberry pi or other small computer controlling your printer and able to slice large complicated files in the cloud and download the gcode. Or run Slicerhub on your more powerful server at home and keep everything on site.

Currently Slicerhub is in early alpha. The core functionality to power the RESTful API is done and I've stubbed out how I want to build the web addressable API layer which I hope to do in the next few weeks (check out rest_api/slice_entry.py). The biggest chunks left to do are listed below and I welcome comments and help on them!

Major tasks ahead.

0. Get rid of hard coded paths! Move all users, bin paths, writing paths, passwords for testing to a CONFIG file
1. Finish actual bottle.py methods for the service endpoints to handle receiving files and then addressing the Slicerhub internal API layer to write those files and queue up tasks (internal API layer is finished).
2. Write a lightweight client that simply posts jobs and serves gcode files
3. Get the lightweight HTML client up and running on Slicerhub.com so people can send jobs to be sliced over the web
4. Write an authentication layer (have a plan, just need more time) and start allowing applications to address a public queue for slicing. This will allow other developers to make calls against the internal API
5. Build more robust task queues and have a server image dedicated to grabbing tasks and slicing them.
The basic flow of a call is laid out below.


Slicerhub uses bottle.py, mongodb, and rabbit-mq to do what needs done. There is a install_help folder in the root of the repo with a pip-styled requirements.txt and two shell scripts to install mongodb and rabbit-mq.

General documentation on the RESTful API is here and the README on github explains how to install and get the task queue up and running.

https://docs.google.com/document/d/1Ht6sI_kT_7gZLRYHBQ9EmMfS-7OljsGs8b-6GoUeARE/edit?usp=sharing

This has been a labor of love so it isn't pretty and shiny and right now there is a lot of room for improvement. I hope that over the next while I'll be able to keep working on this and that the community will find it useful. I decided to release this now in its functionally but not web-addressable state so I could start getting feedback and help from the community for how to integrate it with other projects. I'm looking at you CoffeSCAD and Octoprint. Keep being awesome!

Ross

Brief intro video to Slicerhub's functionality is located on youtube at 
http://www.youtube.com/watch?v=YUcKLBB-fpY

INSTALL

To get the project running on your local machine (able to run tests at least) there are a couple things you need to do.

First
1. Install all the libraries included in install_help/requirements.txt

pip install -r requirements.txt

pymongo
mongoengine
Celery
nose
requests
celery-with-mongodb

2. Install MongoDB
take a look at install_help/mongo_install.sh
if you like what you see, chmod +x it and fire it off as sudo

3. Install rabbit-mq
take a look at install_help/rabbit-mq_install.sh
Change the user, user_pass, vhost to whatever you want to make sure it sets it up
chmod +x the script and fire it off as sudo.

4. in rest_api/slicebase/celerystalk/celeryconfig.py you need to change some things
1. you need to make sure that your BROKER related variables match what you just set up.

SETUP

RIGHT NOW - WILL CHANGE SOON
You need to change inside of /rest_api/slicebase/slicers/slic3rwrap.py you need to change the path on line 24 to point to where YOU have slicer 0.9.7 installed (the bin folder).

RIGHT NOW - WILL CHANGE SOON
Just a reminder, the slices folder used to actually hold stls and inis and gcode will be relative to the current working directory.

RUN TESTS

1. from the rest_api of the repo fire up ./tools/celery/start_test.sh in one terminal
2. from another terminal (also in rest_api) fire

nosetests /slicebase/tests/

You should see about 15 tests run and your other terminal window running the messaging queue should be going nuts. RIGHT NOW the tests don't clean up after themselves very well but I'm working on that. You'll have lots of files in your slices folder that don't get cleaned up and the testing database on mongodb will just keep getting bigger and bigger.

QUESTIONS - help

I'm often on #reprap in the evenings as savorywatt. I'm also very available through G+ Search for Ross Hendrickson and find the guy who talks about 3D printing stuff all the time.




About

Home for the engine that powers slicerhub.com

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published