Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

paintbrush doesn't dip #182

Closed
dmoola opened this issue Nov 19, 2014 · 20 comments
Closed

paintbrush doesn't dip #182

dmoola opened this issue Nov 19, 2014 · 20 comments

Comments

@dmoola
Copy link

dmoola commented Nov 19, 2014

I just put my machine together and loaded the software. I'm finding it washes the brush and paints at the correct height, but it won't dip into the paint wells. it simply circles above and then moves on to paint (with no paint)

@docprofsky
Copy link
Collaborator

In the settings menu if you click on the "Basic Setup" tab and move the "Wash Position" slider does the brush move? Have you changed any of the brush position settings? In the "Printing Style" menu what is the "Printing Mode" set to?
You should try:

  1. Set the printing mode to "Default (Brush, Water & Paint)".
  2. Change the "Wash Position".
  3. If 1 and 2 do not work then try resetting the settings to the defaults.

@dmoola
Copy link
Author

dmoola commented Nov 19, 2014

I originally played with these settings to see if that has helped but have reset to defaults since.

Mode is default (brush water paint).

Changing the wash position didn’t help

It seems to be missing the call to color dip and doesn't lower the brush at all when over the paint. I am downloading the code and digging through but it’ll take me a while to see if I can find where this is handled.

@oskay
Copy link
Contributor

oskay commented Nov 19, 2014

What OS are you using, and are you using the latest version (0.9.1)?

@dmoola
Copy link
Author

dmoola commented Nov 20, 2014

0.9.1 on Win 8

@dmoola
Copy link
Author

dmoola commented Nov 20, 2014

I also just tried on a win 7 machine, same results. I'm finding it drags the brush across the paper as well throughout much of the print.

@dmoola
Copy link
Author

dmoola commented Nov 20, 2014

Here's a video to hopefully clarify.

https://www.youtube.com/watch?v=-2ciReVJKhA&list=UUrk8a2nzDStcYiX6ITEU14g

You can also see in the video I was able to paint a rectangle. I did this by going to http://localhost:4343 and running through the commands. Every command appears to work fine if I run them manually, it's just the commands coming from robopaint that seem to have issues.

@docprofsky
Copy link
Collaborator

If you use the cncserver interface (steps below) does the problem still occur?
To get to the cncserver interface open RoboPaint and go to http://127.0.0.1:4242, this will bring up the local cncserver interface. Try using the buttons on this page to control the WaterColorBot and see if it still has the problem.

@oskay
Copy link
Contributor

oskay commented Nov 20, 2014

@docprofsky I can't imagine that this would produce a different result.

@dmoola
Copy link
Author

dmoola commented Nov 20, 2014

Yes, as I mentioned with the rectangle comment above. All buttons on the cncserver page work properly. I easily controlled it to make a quick rectangle on the page with no issues and I checked the other buttons as well.

This seems to be an issue with robopaint (i'm assuming).

@oskay
Copy link
Contributor

oskay commented Nov 20, 2014

@dmoola Would you be willing to try a previous version of RoboPaint (e.g., 0.0.9.0b) to check if that version is behaving for you?
https://github.com/evil-mad/robopaint/releases/tag/v0.9.0-2014.10.25

There are also older versions (e.g., 0.7.5), that do work reasonably well, but lack the newest Scratch/Snap support:
https://github.com/evil-mad/robopaint/releases/tag/v0.7.5-2014.03.08

@dmoola
Copy link
Author

dmoola commented Nov 21, 2014

0.9.0 appears to be working!

@oskay
Copy link
Contributor

oskay commented Nov 21, 2014

OK, great-- that should tide you over while we look into this further. :) I've temporarily marked 0.9.1 as "pre-release" until we determine how serious this is.

@dmoola
Copy link
Author

dmoola commented Nov 21, 2014

Thank you for helping me out. It's always frustrating when something doesn't work as expected.

I am interested in helping develop the product. I'm a .Net developer so I need to get the environment set up. Unfortunately I'm not that familiar with this type of app so it'll take me a bit to get up to speed. Any suggestions on setting up visual studio for this project would be appreciated.

@rogerfachini
Copy link
Collaborator

Hi dmoola, robopaint is written in JavaScript, I would look into how well VS supports js and html editing. Most of us here use Netbeans, it has great integration with NW and github. I can look further into setting up vs when I get home from school.

@dmoola
Copy link
Author

dmoola commented Nov 21, 2014

Thanks for the info, I'll download netbeans and give that a try instead.

@techninja techninja added this to the 0.9.2 milestone Nov 21, 2014
@dmoola
Copy link
Author

dmoola commented Nov 22, 2014

0.9.0b
On Nov 21, 2014 4:15 PM, "Schuyler St. Leger" notifications@github.com
wrote:

Are you using 0.9.0 or 0.9.0(b)?


Reply to this email directly or view it on GitHub
#182 (comment).

@docprofsky
Copy link
Collaborator

If you use Manual Mode to make the WaterColorBot dip the brush does it still not lower the brush?
To enable Manual Mode open settings then click on "Advanced" and check "Manual Paint".

@techninja
Copy link
Contributor

Finally had a moment, have confirmed this issue (of sorts) on mine, will investigate and soon have a fix.

@techninja
Copy link
Contributor

You guys are going to laugh.. or kill me, one or the other. Hold tight, this will be good, I promise.

Soo. As we all know, RoboPaint is built on top of CNCServer. This abstraction helps in tons of ways , not to mention keeping us from putting all the eggs in one basket. The one "drawback" we have is that we use a ReSTful API to talk back and forth between the projects. This is great for remote connections and organizing a clean API (not to mention for writing open applications that use the same base operations to do different things),but when you're sending LOTS of data from one part of the "same program" to another, there's a bit of overhead.

Part of some recent updates pushed in ff78bd7 were to close the gap and not only split up large buffer sends through the streaming API into remove/add/bulk, but to use the same object references in memory, bypassing the API when we have the server locally (which isn't always the case). This drastically speeds up buffer referencing and general data streaming.. but it has one caveat intrinsic to the language. Can you see it?

   // CNCServer Buffer Change events (for pause, update, or resume)
  function bufferUpdateEvent(b){
    // Because this is connected to code outside its window, need to kill it
    // if we're still running once it's been closed.
    if (!console) {window.removeListeners(); return;}

    // What KIND of buffer update is this?
    switch (b.type) {
      case 'complete':
        cncserver.state.buffer = b.buffer;
      case 'vars':
        // Break out important buffer states into something with wider scope
        cncserver.state.process.busy = b.bufferRunning;
        cncserver.state.process.paused = b.bufferPaused;
        break;
      case 'add':
        cncserver.state.buffer.unshift(b.item);
        cncserver.state.process.max++
        break;
      case 'remove':
        cncserver.state.buffer.pop();
        break;
    }

The complete event is called right at the beginning of the connection, or whenever the buffer is cleared (whenever you change modes). This makes sure whatever client that's connected has a completely synced buffer set. But guess what? Because these are direct references to the same object, every time we add/remove to our "separate" object, we're adding it to the same object. Now that I write it it seems pretty silly. Basically all the code above is meant for a remote server to try and keep its client buffer object updated.. which is totally not needed for a local memory reference.

This needs some rethinking, but it's not the end of the world difficult. Balancing buffer management remote vs localized should be as seamless as possible and will be cleaned up significantly in the next commit to master. In the mean time, I've taken down the binaries on the 0.9.1 and will likely roll a 0.9.1b, or just wait till 0.9.2 release date and push the release then.

What did we all learn here? Set an object = object, you will still only have one real object, just two references to it!

@techninja
Copy link
Contributor

@dmoola Let us know if there's anything missing from our documentation to help you get setup to contribute to the project. It's a big goal of mine to ensure that everyone has what they need to contribute back to the project, or just get more info so they can hack it. Netbeans is not a requirement, but it works well for our use cases (and many others as well). I believe VS has a number of HTML5 application tools that might work reasonably well, though your run configuration might end up being different than others.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants