Git Product home page Git Product logo

polyslice's Introduction

About

Polyslice is an FDM slicer designed specifically for three.js and inspired by the discussion on this three.js issue. The idea is to be able to go straight from a mesh in a three.js scene to a machine usable G-code, thus eliminating the need for intermediary file formats and 3rd party slicing software.

Currently, if you want to print something you have designed in three.js you need to first export it to an STL or OBJ file, slice that file with another software like Cura and then transfer the resulting G-code to your 3D printer. Ideally, you should be able to use a three.js plugin to slice the meshes in your scene and send the G-code directly to your 3D printer via Web Serial API.

With this approach the design, slicing and printing process becomes much more seamless! No download or installation is required, the entire process can happen without leaving a web browser. Intermediary file formats become obsolete and G-codes become invisible for the average user.

Tools

To assist in designing and testing this slicer I developed a simple mini app called 'Web G-code Sender' for experimenting with G-code and writing/reading printer data via Web Serial API. I recommend taking a look at it if you want to learn G-code or how to remotely control a 3D printer from a web browser.

polyslice's People

Contributors

jgphilpott avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

polyslice's Issues

Response data comes in small/short chunks making it hard to read

Description:

With some machines, the response data comes in small/short chunks making it hard to read in the output log. See this comment by @moof-moof for more detail.

Reproduction:

The ability to reproduce this issue will depend on what machine you are using but in general, follow these steps:

  • Connect to the device.
  • Send some sample G-code commands.
  • Observe the output log.

Expected Behavior:

The output contains longer more readable text.

Screenshots:

See here.

Environment:

Please include the following information:

  • Device: Custom 2D CNC machine with an Arduino Uno
  • Firmware: GRBL
  • OS: Linux Ubuntu 20.04
  • Browser: Chrome
  • Version: 124.0.6367.60

Extra:

Add any other information about the problem here.

Add G-code streaming feature upon file upload

Is your feature request related to a problem? Please describe:

Yes. For some firmware types, such as Marlin, file uploads don't work as expected. I observed that when I send an entire G-code file at once only the first 8 commands actually get executed. After some research I discovered that this is because the Marlin firmware will only queue 8 commands at a time, the rest of the commands get discarded because they arrive before the printer has had time to run the commands it has already received. I believe the queue limit can be increased but doing so has a negative impact on the printers overall performance because it uses up memory so I don't want that to be the solution. For more detail read this comment on issue #2.

Describe the solution you'd like to see:

It would be great to develop a streaming function that will send the commands one at a time, only sending the next one after the previous one has been executed.

Describe alternatives you've considered:

N/A

Additional Information:

This can be done by proceeding the file with a M111 S1 command.

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.