Giter Site home page Giter Site logo

area515 / photonic3d Goto Github PK

View Code? Open in Web Editor NEW
129.0 34.0 115.0 39.94 MB

Control software for resin 3D printers

Home Page: http://photonic3d.com

License: GNU General Public License v3.0

Shell 0.15% CSS 12.42% JavaScript 44.86% Java 15.87% HTML 23.45% Batchfile 0.05% SCSS 1.07% Less 2.13%
javascript raspberry-pi java linux 3d-printing gcode html resin-3d-printers exposure printer windows

photonic3d's Introduction

Photonic3D

Photonic3D is a control server for DLP resin 3D printers with a web-based user interface. It has been designed to run well on a Raspberry Pi, but is cross-platform and the install distribution will also run on Linux, Windows, and MacOS.

The server is capable of printing a variety of formats, including:

  • .cws files created by Creation Workshop
  • STL files, which Photonic3D will slice incrementally at times when the CPU would generally be inactive(exposure and gcode execution)
  • Zip of PNG images, which Photonic3D will scan recursively and print based on alphanumeric ordering (meaning both zero-padded and non-padded numbered PNG files will work correctly)
  • Single GIF, JPEG, or PNG image, which Photonic3D will extrude and optionally print a 3D relief
  • Block of text, which Photonic3D will extrude using a system or user uploaded font
  • SVG file, which Photonic3D will extrude and optionally print a 3D relief

Raspberry Pi Usage

If you have a brand new dedicated Raspberry Pi, there is a flashable Jessie Lite based image that you can use to quickly get started. Download the Raspberry Pi system image and then take a look at the image install docs at photonic3d.com for the installation instructions.

If you have an existing Raspberry Pi, follow the Linux install instructions below.

User Interface Examples

image image

Use with Creation Workshop

Photonic3D can run .cws scene files saved from Creation Workshop which contain PNG files. When printed, these files will obey the GCode and imaging commands inside of the files instead of the slicing profiles configured within Photonic3D. This process is depicted in this YouTube video.

Feature List

  1. Print STL files without performing pre-slice stage.
  2. Load STL files directly from thingiverse or the internet.
  3. Uses common xml Creation Workshop configuration files.
  4. Custom printer mask overlays.
  5. TLS encryption with Basic authentication.
  6. Use of FreeMarker templating in configuration files.
  7. Restful developer API for printer management.
  8. Video Recording and playback of build.
  9. Print Zip/CWS files exported from Creation Workshop.
  10. Execution of custom gcode from GUI.
  11. Managment of multiple printers with a single print host.
  12. Plugin based notification framework.
  13. Sophisticated javascript calculators that compute gradients, exposure time, lift speed and distance.
  14. Notification of Printer events through webSockets.
  15. Simple printer setup for Zip/CWS based printing.
  16. Automatic updates via online installs or manual updates through offline installs
  17. Script(or a native Windows app)to find CWH based printers on the local network with zero network setup. (DLNA/UPNP support)
  18. Capability of building printer configurations with simulated Serial ports and displays.
  19. Two clicks and a password for Linux Wifi management to support a turnkey hardware solution.
  20. Automatic projector model detection through serial (Plug and play for Acer & Viewsonic models).
  21. 3d firmware printer port detection.
  22. Hardware compatibility test suite.
  23. Experiment and override printing options after a print is already in progress.
  24. Take still pictures of the build at the click of a button.
  25. Print material detection framework implemented with a computer vision inspection portal.
  26. Supports Windows, OSX and Linux OSs. (Service support on Linux)
  27. Supports dynamic direct slice-on-the-fly 3d printing of (.mazecube, .stl, .jpg/.png/.gif, .cws/.zip) files.
  28. Automatic uploading of files from removable drives. (USB sticks)

Linux Installation Quickstart

NOTE: When you install this to your linux host/computer, your computer display will be used for the projector/LCD, your computer will send serial to the microcontroller on the printer, and your computer runs a web server to provide a GUI via browsers. If you do not intend to dedicate your computer to the purpose of this software, you might want to find a raspberry pi to use for this software.

If you installed by mistake and want to uninstall, remove the init.d service by executing the following as root and restarting:
sudo update-rc.d -f cwhservice remove

If you are experienced with Linux, you can quickly install Photonic3D with the following commands:

Latest stable:

sudo wget https://github.com/area515/Creation-Workshop-Host/raw/master/host/bin/start.sh
sudo chmod 777 start.sh
sudo ./start.sh

Latest development:

sudo wget https://github.com/WesGilster/Creation-Workshop-Host/raw/master/host/bin/start.sh
sudo chmod 777 start.sh
sudo ./start.sh WesGilster

Latest Kudo3D Fork (or other forks named Photonic3D):

sudo wget https://github.com/Kudo3D/Photonic3D/raw/master/host/bin/start.sh
sudo chmod 777 start.sh
sudo ./start.sh Kudo3D/Photonic3D

Photonic3D will be installed into /opt/cwh and an init script will be added to /etc/init.d to launch the server on boot.

Windows Installation Quickstart

Client Tools

There are also a number of tools designed to run on your client desktop that are bundled with the installation.

The browseprinter tool will help you find the Photonic3D server on your network, in case you have it installed a machine with a dynamic IP address and you don't know what what is.

  • Linux: Run sudo browseprinter.sh at the command line
  • Windows: Run browseprinter.bat

photonic3d's People

Contributors

angela-ko avatar ergobot avatar jmkao avatar kloknibor avatar sobryan avatar wesgilster avatar wgandrew avatar wilbur-shi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

photonic3d's Issues

RadialGradientPaint based on bulb location

Dean from mUVe3d came up with the thought that pixels should be less intense based upon the bulb location. Something like this maybe:
double bulbCenterIntensity = .8;
double outsideBulbIntensity = 0;
RadialGradientPaint paint = new RadialGradientPaint(new Point(bulbX, bulbY), printWidth, new float[]{0, 1}, new Color[]{new Color(0, 0, 0, (int)(255 * coverageIntensity)), new Color(0, 0, 0, outsideBulbIntensity)});

Determining bulbCenterIntensity and outsideBulbIntensity might take some experimentation.

Take periodic still pictures with Raspberry Pi camera

If anyone is interested in having a camera watch their build progress on their Raspberry Pi, buy this:
http://www.adafruit.com/product/1367
and ship it to me.

I'll see what I can do to integrate it into the host. I certainly am not going to guarantee video since I'm a little suspicious that we aren't going to have enough CPU to get this done, we might be able to take a picture every once in a while though...

Crashing upon making a printer

Hi Wes!,

I'm finally able to test properly ;)! but cwh already crashes upan adding a printer... I get a 404 message... logs can be found here : https://www.dropbox.com/sh/cl51eienirb6dh6/AADP1Aa442Xqh_3GTgJnx1ema?dl=0 (yeah yeah I know how to get logs now :P) hope that helpt ;) if you need anything more please ask :)

thanks in advance!

Robin

Ps it was with the new GUI enabled and my mail settings also filled in, fresh install other than that newest raspbian updated upgraded and configured ;)!

Show 3d image for STL with non-watertight regions highlighted in red

The functionality for this has already been developed server side. We just need the following client side changes.

  1. Ask for the STL file from the server
  2. Display the STL in OpenJSCAD
  3. Asychronously ask the server to perform a slicing/non-watertight simulation (Serverside is already built)
  4. Stream the triangles back for all non-watertight regions as the simulation finds them through a websocket (does OpenJSCAD support websockets?)

Camera progress

Hi,

I haven't tested much lately because I'm kinda busy with my study at the moment, but already started with testing the webcam :)? and recieved the new pi ? does this make the slicer you build a bit more usefull?

I hope I can start testing next week ;) if there's anything particullary to test name it and I will test it ;)!

Robin

Downgrade to stable version by directly specifying area515 as a parameter to start.sh

I've recently been using CWH with one of first Draken DLP/SLP printers delivered to a backer (/me) and was encountering lots of "Internal Server Error" problems when trying to manually create printer configurations in /root/3dPrinters/...

Here's the scenario... The printer has 8 physical projector positions that it can be mounted in, ranging from 1 being the closest to the resin VAT and 8 being the furthest. Obviously (or maybe not?), the closer to the VAT, the finer the resolution of the XY but the smaller the build area.

As such, the (Draken developers) provided a set of pre-defined CW Machine profiles (.machine files) for each of the positions... awesome! They also provided a slicing profile (.slicing file). So, to effectively make print resolution selection easier, I wanted to have 8 "printers" in the CWH web interface, from which I can pick the one for the current projector position. To that end, I created the following set of configs:

/root/
├── Machines/
│   ├── 1st_37X37microns.machine
│   ├── 2nd_43X43microns.machine
│   ├── 3rd_50X50microns.machine
│   ├── 4th_61X61microns.machine
│   ├── 5th_70X70microns.machine
│   ├── 6th_75X75microns.machine
│   ├── 7th_82X82microns.machine
│   └── 8th_90X90microns.machine
├── Profiles/
│   └── BasePrintProfile.slicing
└── 3dPrinters/
│   ├── Draken_slot1_37microns.printer
│   ├── Draken_slot2_43microns.printer
│   ├── Draken_slot3_50microns.printer
│   ├── Draken_slot4_61microns.printer
│   ├── Draken_slot5_70microns.printer
│   ├── Draken_slot6_75microns.printer
│   ├── Draken_slot7_82microns.printer
    └── Draken_slot8_90microns.printer

Within each of the above defined *.printer files, the <MachineConfigurationName> value matched one of the *.machine file names and the <SlicingProfileName> value all pointed to the same, single file, BasePrintProfile.slicing.

Unfortunately, I could never get this to work... I always ended up with the "Internal Server Error" message, and looking in log.err, I could see that the requested service URL was raising an exception about service URL not found (I don't remember exactly, and my logs have since been replaced :( )

The only way I could get things to work were if I created one *.slicing file for every *.machine file. All *.slicing files were identical (in fact, I didn't test it, but I suspect symbolic linking them could have worked). So, here is what I ended up with that was the only way I could get things to work:

/root/
├── Machines/
│   ├── 1st_37X37microns.machine
│   ├── 2nd_43X43microns.machine
│   ├── 3rd_50X50microns.machine
│   ├── 4th_61X61microns.machine
│   ├── 5th_70X70microns.machine
│   ├── 6th_75X75microns.machine
│   ├── 7th_82X82microns.machine
│   └── 8th_90X90microns.machine
├── Profiles/
│   ├── 1st_37X37microns.slicing
│   ├── 2nd_43X43microns.slicing
│   ├── 3rd_50X50microns.slicing
│   ├── 4th_61X61microns.slicing
│   ├── 5th_70X70microns.slicing
│   ├── 6th_75X75microns.slicing
│   ├── 7th_82X82microns.slicing
│   └── 8th_90X90microns.slicing
└── 3dPrinters/
│   ├── Draken_slot1_37microns.printer
│   ├── Draken_slot2_43microns.printer
│   ├── Draken_slot3_50microns.printer
│   ├── Draken_slot4_61microns.printer
│   ├── Draken_slot5_70microns.printer
│   ├── Draken_slot6_75microns.printer
│   ├── Draken_slot7_82microns.printer
    └── Draken_slot8_90microns.printer

So this got me looking into the code, and I believe I've found the root cause...

In resinprinter/server/HostProperties.java:366 I believe the call to getMachineConfigName() should instead be a call to getSlicingProfileName(), resulting in the following corrected line of code:

configuration.setSlicingProfile((SlicingProfile)jaxbUnMarshaller.unmarshal(new File(PROFILES_DIR, configuration.*getSlicingProfileName()* + PROFILES_EXTENSION)));

Otherwise, if the intention is to actually ignore the <SlicingProfileName> entry in the *.printer files, we ought to document this someplace.

Testing display not being released problem

When successfully starting a printer, a display on the device will be used. After stopping the printer and creating/starting a new printer on the previously used display, an exception is thrown stating that the previously used display is currently being used.

When successfully starting a printer, a display on the device will be used. After stopping the printer, the display should be released.

Ending job gives confusing "Job not started" message

The gui should show a better message than "Job not started". The "Stop Job" does it's function properly, but upon requerying the status of the jobit sees that the job is no longer available. It just seems annoying.

how to install

Hi,

I've tried to install your software because I would be really intrested! but I can;t get it to work... I tried it with git clone... and I tried to use your networkinstall.sh script (by copying it into my ssh tool) but I can't manage to run start.sh on raspbian.... so what is the correct way to install?

thanks in advance,

kloknibor

Skip build number check if GitHub is not responsive

Today with GitHub under DDoS attack, I'm getting stuck when starting up because the start script is trying to check for a newer build. The request keeps timing out and only occasionally connects. The problem of GitHub begin down may be unusual, but it seems there should either be a two try limit to connect, or an option to override when starting the service.

Testing for Client Authentication

config.properties now has a set of variables that control a simple user based authentication. I'll make the authentication mechanism pluggable once this is fully tested. Anyone what to test? (Build 67)

rpi slient boot - disable boot logging

Task:
On the raspberry pi, disable all text when the raspberry pi boots. Assuming the raspberry pi is using a new image of raspbian.

Background:
The goal is to start the raspberry pi (rpi) silently then start the creation workshop (cw) host.

A default install of raspbian on the rpi needs several modifications to accomplish this. This task is one, among many, to accomplish the above goal. After solving all of the tasks, the solutions will be put into a single script that will run once after a raspbian image is installed.

3D Printer Firmware Detection

Isn't as cool as it sounds. Just detects presence of 3d printing firmware(not the firmware vendor) to distinguish between a serial port that is 3D printer firmware and a serial port that is for a projector.

Implemented and untested in version 0.121.

Make a version that pulls resources from CDN.

At the moment the Raspberry Pi is hosting all resources and that puts quite a load on it. I could easily modify the build such that it you can run a version that downloads resources from a CDN. That way you could modify your config.properties like this:
hostGUI=resourcesCDN

...and it would take quite a bit of load off the Raspberry Pi. Keep in mind, this would force all of your CWH clients to have Internet access... It's a tradeoff, but your Pi could be light and fast.

Show gradient mask creator crosshairs

Now that you can create your own functions. We need to be able to graph those function with the touch of a button so users can see how their functions break down over variable ranges. This should operate at the touch of a button.

rpi silent boot - remove boot logo

Task:
On the raspberry pi, remove the raspberry pi logo when the raspberry pi boots. Assuming the raspberry pi is using a new image of raspbian.

Background:
The goal is to start the raspberry pi (rpi) silently then start the creation workshop (cw) host.

A default install of raspbian on the rpi needs several modifications to accomplish this. This task is one, among many, to accomplish the above goal. After solving all of the tasks, the solutions will be put into a single script that will run once after a raspbian image is installed.

Not properly painting in Java

Technically we aren't properly painting in Java(just need to override the paint method). That means that when the OS is asked to refresh our page, we don't do it. Instead we are painting when we decide it's important (on some parse event).There are a few times where you can notice this issue.

  1. Turning on a projector after the printer has already been started.
  2. Unobscuring the simulation window from behind another window.
  3. Initially displaying the window after a screen saver is stopped.
  4. Moving between multiple displays on some laptops.

I'm not putting much priority into fixing this one. If people have issues, I'll fix it.

rpi silent boot - disable screen saver

Task:
Disable the screen saver on raspberry pi

Background:
The goal is to start the raspberry pi (rpi) silently then start the creation workshop (cw) host.

A default install of raspbian on the rpi needs several modifications to accomplish this. This task is one, among many, to accomplish the above goal. After solving all of the tasks, the solutions will be put into a single script that will run once after a raspbian image is installed.

Random cube maze printing

So now that I've abstracted the 3d printing aids, I'm going to start coming out with some pretty cool print file types. The current one I have in testing is the Maze Cube printer. Upload an xml file with the extension ".cubemaze" with this format:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<minerCube>
    <!-- These parameters don't affect the solution only the size of the cube -->
        <!-- This is the width of your cube wall thickness -->
        <cubeWallThicknessMillis>0.7</cubeWallThicknessMillis>
        <!-- Make this variable a little larger than your marble. -->
        <innerCubeWidthMillis>5</innerCubeWidthMillis>

    <!-- These parameters affect the solution and potentially the size of the cube -->
        <!-- This variable defines the solution of your MinerCuber -->
        <randomSeed>0</randomSeed>
        <!-- Width/Height/Length of your MinerCube cubes -->
        <cubesPerRow>3</cubesPerRow>
        <!-- Use one of the following of: SAME_FACE, OPPOSITE_FACE, ANY_FACE, ADJACENT_FACE, ANY_FACE_OTHER_THAN_ENTER_FACE -->
        <exitPreference>OPPOSITE_FACE</exitPreference>
        <!-- Use ~ 5% of volume -->
        <minimumTurns>3</minimumTurns>
        <maximumTurns>10</maximumTurns>
        <!-- This parameter is pretty self explanatory -->
        <allowTunnelsToCollide>false</allowTunnelsToCollide>
        <!-- 1=100% (1 not does not mean 1 inner cube) 0.0=No dead ends-->
        <deadEndUsageAsAPercentageOfVolumeOfUnusedCubes>0.0</deadEndUsageAsAPercentageOfVolumeOfUnusedCubes>
        <!-- These two parameters should be 1-5 with recommended min/max turns ~= 10-15% volume usage -->
        <minimumTravelDistanceInCubes>1</minimumTravelDistanceInCubes>
        <maximumTravelDistanceInCubes>5</maximumTravelDistanceInCubes>
</minerCube>

and it will build, solve and 3d print a cube maze for you. In simulated printing, it seems to work well enough. I'll try to print something out next week.

Test missing display bug

hi,

today I installed the latest version of creation workshop host but with the new version (0.54) the displays are gone (so there aren't any displays to select in the list) so is it possible that somebody broke this by accident?

thanks in advance,

Robin

3D print anything with abstracted printing

The abstract printing code isn't very pretty but it's going to do the job well enough.
With these abstracted 3d printing aids checked in, I'll should be easy to print .txt, png, jpeg files and such. Just upload and go like the 3d cube maze.

Raspi-config-cwhost.sh script doesn't work

I'm not sure what the state of this script is, but having just yesterday run through the instructions in README.md and wiki/Raspberry-Pi-Manual-Setup-Instructions, I knew nothing of this script until looking for something else in the repo this morning.

I note this because my experience of installing yesterday did not seem to match all the notes... the Raspian boots to the graphical desktop anyway, despite having selected not to in raspi-config... yet, based on the notes in README.md, I expected to be at a non-X console only interface after bootup.

Anyway... having read through this script (raspi-config-cwhost.sh), it looks like it would solve several of the inconsistencies I've noticed, so when I am home later, I will try it out and see how it works.

Just thought that if you all think it IS working, then maybe it ought to be added to the README.md and wiki pages so folks don't miss it like I did ;)

Testing auto-detect serial port

hi,

ergobot helped me a bit farther but I now still have the error that when booting up I get a 500 http error but this was known already.

when I create a new printer and select any display and click start printer I get the following error :
Couldn't find graphicsDevice called:undefined

when I use autodetect printer and start a job I get the following error :
Problem communicating with host printer. (http:404)

or :

Printer not started:Autodetected Printer

and when I try to start the printer again I get the following error :

Display already assigned to:Autodetected Printer(SerialPort:null, Display::0.0)

even after stopping the printer (when it's gives the same printer not started error)

My thought are it is related to the fact that I use a baudrate of 250000 and the other bug will have to with the other bug : #6

the software does turn my screen black ;) guess that's a good thing!
hope this helps

Error printer not started but can't stop any printer

Hi,

When I start a printer and if I press a button before the printer is started completely, it gives an error that the printer isn't started. After this error the printer won't start at all.

Also when I try to restart the printer it gives the error that the display is already assigned to a printer and serial port. And I can't stop the named printer. The only solution is too reboot ;)!

Do you need some more information on this bug? (logs etc?)

maybe an printer started message would help :)!

New Z slicer

I implemented a new z slicer from scratch that is pretty fast. At the moment, it doesn't union and subtract polys. It performs a simple outline slice. I've added a really simple gui with a scrollbar for the slicer here:
org.area515.resinprinter.stl.StlFile

installing error

So when I install the software I get the following error : FATAL: Module g2d_23 not found.
Is this something bad? or unneeded on the raspberry pi?

Need Raspberry Pi documentation

The code references an old version and then fails because files aren't available.

Lines 7,8,12 should be "cwh-0.80.zip" not "cwh-0.54.zip"

Sporadic timeouts from Serial

Some firmware(Marlin) dump this garbage to the SerialPort. In the Marlin code, they call it "ChitChat":

start
echo: External Reset
Marlin 1.0.0
echo: Last Updated: Dec 16 2014 17:38:52 | Author: (none, default config)
Compiled: Dec 16 2014
echo: Free Memory: 4005 PlannerBufferBytes: 1312
echo:Hardcoded Default Settings Loaded
echo:Steps per unit:
echo: M92 X36.36 Y36.36 Z640.00 E640.00
echo:Maximum feedrates (mm/s):
echo: M203 X600.00 Y600.00 Z8.00 E8.00
echo:Maximum Acceleration (mm/s2):
echo: M201 X4000 Y4000 Z4 E4
echo:Acceleration: S=acceleration, T=retract acceleration
echo: M204 S3000.00 T3000.00
echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=
minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s),
E=maximum E jerk (mm/s)
echo: M205 S0.00 T0.00 B20000 X40.00 Z0.40 E0.40
echo:Home offset (mm):
echo: M206 X0.00 Y0.00 Z0.00
echo:PID settings:
echo: M301 P22.20 I1.08 D114.00
echo:SD init fail

How am I supposed to know when it's stopped dumping garbage? I'm sending a gcode, but sometimes the firmware doesn't acknowledge my gcode with an ok. Since I have the timeout set to 2 minutes, people believe that the printer isn't starting. After the timeout, things work fine.

Peel lift speed throttling

Just some notes I thought I'd take down for my idea. I'm not sure the nature of the function, Dean Piper from the mUVe DLP believes it's exponential and came up the factors that will affect peel speed. I'll start off with something linear but make it easily updatable per printer configuration, maybe something like:
y = mx + b
y = lift speed
m = lighted pixel coverage for build platform(%)
x = maximum speed required to peel a full build plate - minimum speed required to peel a single pixel from the build plate
b = minimum speed required to peel any image

Lift Height Constant

I'm assuming lift height is constant and should never be higher than the surface of the resin in the vat to prevent bubbles from forming under the print.

Starting Lift Speed Calculation

The min/max lift speeds are factored by using the time required to allow the print to pull from the bottom of the vat divided by the constant lift height. The lighted build platform area determines theoretical min/max speed:
TODO: need someone to find some empirical data for this
???max=(.01 * potential buildArea in square mm) millimeters per minute
???min=1000 millimeters per minute for a single lighted pixel

These variables are applied to the theoretical min and max as weighted multipliers:

Multiplier 1:

vat coating 10%
These numbers are simply relative and have no meaning. Are there adhesive force measurements for these?
???Silicon=4
???FEP tape=2
???Flexible vat=10

Multiplier 2:

Resin viscosity/pigment composition 90%
I'm thinking about putting a theoretical cap of 1000 on the resins?
Form1 Flexible=?
Makerjuice SubG=12
Makerjuice SubG+=90
Form1 Castable=250-325
Makerjuice Flex=401
Makerjuice SubSF=555
Form1 Clear/White/Grey/Black=850-900

Would anyone like to adjust these numbers based upon experience and empirical evidence?

TODO:
Make some sense out of these numbers and put the full formula together.

GUI reorganization

Current UI sections (bootstrap divs) are functional but do not guide the user due to page placement. Organize UI sections to support intuitive use.

Missing license and copyright information

I'd like to contribute, but, as SW developer by trade, my company requires me to disclose to them any plans to contribute to open source projects as a standard practice of their IP protection. As part of that process, I need to provide any known license and/or copyright information about the projects to to which I'd like to contribute. I can't seen to find any licensing or copyright info in the repo...

Also, I'm assuming the answer is no, but do you require any kind of signed contributor agreement like some projects do (Android, Cordova, WebKit, etc...)?

rpi silent boot - hide the mouse

Task:
On the raspberry pi, hide the mouse after the raspberry pi completes startx. Assuming the raspberry pi is using a new image of raspbian.

Background:
The goal is to start the raspberry pi (rpi) silently then start the creation workshop (cw) host.

A default install of raspbian on the rpi needs several modifications to accomplish this. This task is one, among many, to accomplish the above goal. After solving all of the tasks, the solutions will be put into a single script that will run once after a raspbian image is installed.

Set default printer to start

I poked around the code and issues and didn't see anything that suggested this was even considered before, so treat this as an enhancement request...

I only have one printer, and I run CWH on an RPi2B that is "embedded" in it (mounted in the chassis, and powered by the same switch that powers the printer). So the function is really pretty dedicated to this one device.

While I have multiple "printers" defined (for varying resolutions based on projector position), I would like to have one of them always "started" as part of the CWH initialization process.

I'd be happy with this just being a property in one of the /root/3dPrinters/*.printer files, like <isDefault/>, or, making it a cookie stored in the web interface local storage and a UI checkbox that offers something like "Automatically start the last started/selected printer every time?"

Testing to Rename HTTP401 error to tell the user to clear cookies and attempt another login

I guess it's the new build but I skipped some. I now get an error saying the following directly after signin in : Error Problem communicating with host printer. (http:401)

the printers,displays and ports don't show up and nothing works... what did go wrong? besides the self signed certificate gives errors in google chrome and it says the servers probably tries to steal data because the certificate couldn't be checked... but since its a self signed certificate there's nothing we can do about that, can we?

Robin

Donation by 3Dfacture for the hard work :)

So I'm in contact with 3DFacture while they funded their new printer, they wanna thank you for the hard work and I can lower my pledge if I buy a camera and a raspberry pi 2 for you as a thanks to you guys ;)! Shall I just donate money somewhere or can I Send the components to one of you guys?

Problem communicating with host printer. (http:500)

Hi. I have problem with connecting CW Host to my Ramps 1.4. I get massage "Problem communicating with host printer. (http:500)" the moment enter the Host.
screenshot 2015-06-13 14 13 15
I am using Marlin firmware with baudrate 115200.

Perform an update over the top of a currently running version of CWH

So today I tried to update wesglisters build 69 to build 79 but when I try to reach the server the only thing it says is this :

HTTP ERROR: 500

Problem accessing /index.html. Reason:

Could not initialize class java.nio.file.FileSystems$DefaultFileSystemHolder

Powered by Jetty://

guess the updating turned out wrong, maybe because the old version wasn't closed down properly?
Will try again with a fresh raspbian install ;)

Determine when resin in vat is empty

I ran out of resin on a print that took 6 hours. That's pretty annoying. Integrating the raspberry pi's camera was annoying with video, but was simple with the still camera. Now I'm thinking about putting the still camera to practical use. I'd like to detect the edge of the resin and determine when the resin drops below a certain level, we pause the print, or send some gcode to fill the vat. I'm thinking about placing a transparent sticker with a red circle and determining when the liquid level falls below that circle, we are out of resin. Seems pretty straightforward. I'm thinking the code should be able to plugin from another project that I'm working on. Any interest in this?

Testing for NotificationManager

I've build a plugable NotificationManager. As always, you can make your changes to config.properties.

These are the Implementations:

  1. EmailOnCloseNotification
  2. WebSocketNotification of job progress(No more hitting the refresh button)
  3. WebSocketNotification of printer status

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.