All Projects → aligator → GoSlice

aligator / GoSlice

Licence: Apache-2.0 license
This is an experimental slicer for 3d printing written in Go also usable as modular slicing lib.

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to GoSlice

Safe stl
A safe version of STL
Stars: ✭ 17 (-75.36%)
Mutual labels:  stl
LipSync
An open-source mouth operated sip and puff joystick that enables people with limited hand function emulate a mouse on their computer and/or smartphone.
Stars: ✭ 27 (-60.87%)
Mutual labels:  stl
Print3r
Command line interface (CLI) for 3d printing
Stars: ✭ 41 (-40.58%)
Mutual labels:  stl
BackportCpp
Library of backported modern C++ types to work with C++11
Stars: ✭ 53 (-23.19%)
Mutual labels:  stl
android-3d-model-viewer
Android app to load 3D models in obj, stl, dae & gltf format using pure OpenGL ES 2.0. Published on Play Store https://play.google.com/store/apps/details?id=org.andresoviedo.dddmodel2
Stars: ✭ 150 (+117.39%)
Mutual labels:  stl
MKS WIFI upgrade with BeePrint web interface
Firmware for MKS WiFi module from Makerbase with BeePrint Web Interface, tested with Flying Bear Ghost 5/Ghost 4/Reborn
Stars: ✭ 35 (-49.28%)
Mutual labels:  stl
USmallFlat
Ubpa small flat containers based on C++20
Stars: ✭ 20 (-71.01%)
Mutual labels:  stl
slicer
Fast 3D mesh slicer written in Go.
Stars: ✭ 55 (-20.29%)
Mutual labels:  slicer
krabzcam
Web-application for converting SVG paths to g-code
Stars: ✭ 43 (-37.68%)
Mutual labels:  gcode-generation
learning-cpp
Contains c/c++, java, operating system, data structure and algorithm, database, network communication, and related books
Stars: ✭ 35 (-49.28%)
Mutual labels:  stl
CVIP
C/C++/Golang/Linux...知识整理
Stars: ✭ 62 (-10.14%)
Mutual labels:  stl
cstl
STL style library with red-black tree implementation in C
Stars: ✭ 34 (-50.72%)
Mutual labels:  stl
stl-part-viewer
A lit-element web component that uses Three.js to display an STL model file.
Stars: ✭ 19 (-72.46%)
Mutual labels:  stl
dicom2stl
Python script to extract a STL surface from a DICOM image series.
Stars: ✭ 151 (+118.84%)
Mutual labels:  stl
ToolpathGenerator
Automating Toolpath Planing and Generation for 3-Axis CNC
Stars: ✭ 26 (-62.32%)
Mutual labels:  stl
HxSTLParser
Basic STL loader for SceneKit
Stars: ✭ 23 (-66.67%)
Mutual labels:  stl
klipper-voron-V2
Generic Klipper configuration for a CoreXY printers like Voron v2.4, Trident, V0 and co
Stars: ✭ 126 (+82.61%)
Mutual labels:  gcode-generation
COMPETITVE-PROGRAMMING
Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications. This repo contains the Detailed Explanation and implementation of Various Coding problems on various platforms in C++
Stars: ✭ 60 (-13.04%)
Mutual labels:  stl
DrawingBotV3
DrawingBotV3 is a software for creating line drawings from Images
Stars: ✭ 161 (+133.33%)
Mutual labels:  gcode-generation
vasaro
Vasaro let you create 3d printable vases in a snap.
Stars: ✭ 30 (-56.52%)
Mutual labels:  stl

test

sliced Gopher logo

GoSlice

This is a very experimental slicer for 3d printing. It is currently in a very early stage, but it can already slice models:

Supported features:

  • perimeters
  • simple linear infill
  • rotated infill
  • top / bottom layer
  • simple temperature control
  • simple speed control
  • simple retraction on crossing perimeters
  • several options to customize slicing output
  • simple support generation
  • brim and skirt
  • custom start- / end-GCode

sliced Gopher logo

For users

Use CLI

Provides a basic command line interface. Just run with --help and see the description bellow.

Arch Linux / Manjaro: AUR

yay -S goslice

All others:

Download the latest release matching your platform from here:
https://github.com/aligator/GoSlice/releases

Unpack the executable and run it in the commandline.
Linux / Mac:

./goslice /path/to/stl/file.stl

Windows:

goslice.exe /path/to/stl/file.stl

If you need the usage of all possible flags, run it with the --help flag:

./goslice --help

Note that some flags exist as --initial-... also which applies to the first layer only. The non-initial apply to all other layers, but not the first one.

Use WebAssembly CLI + GCode viewer

I created an experimental WebAssembly version. Just go to aligator.dev and type

goslice https://cdn.thingiverse.com/assets/7d/fc/6e/33/fe/3DBenchy.stl

It accepts any stl file as link. After slicing it opens a gcode viewer and provides a download link for the gcode in the terminal.
Note that the webassebly version is much slower than native.

Use Web UI (by tobychui)

tobychui created a web frontend for GoSlice:
SlicerA (also compatible with ArOZ)

For developers

Compile

Just running GoSlice:

go run ./cmd/goslice /path/to/stl/file.stl

To get help for all possible flags take a look at /data/option.go or just run:

go run ./cmd/goslice --help

Distribute

Ideally you should have make installed:

make

The resulting binary will be in the .target folder.

If you do not have make, you can still run the build command manually, but it is not recommended:

go build -ldflags "-X=main.Version=$(git describe --tags) -X=main.Build=$(git rev-parse --short HEAD)" -o .target ./cmd/goslice

How does it work

see here

Use as lib

You want to

  • Create a slicer but do not want to do everything of it?
  • Extend GoSlice functionality? (Please consider Pull Requests if you created a nice addition :-)
  • Create a new, user-friendly frontend?

-> Then you can do it with GoSlice!

To do this you can copy the goslice/slicer.go/NewGoSlice function and just pass to GoSlice what you want.
You can add new logic by implementing one of the various handler interfaces used by it.
If you need even more control, you can even copy and modify the whole goslice/slicer.go file which allows you to control how the steps are called after each other.
You can find an example here where I used that to make GoSlice runnable as Webassembly.

Handler Interfaces:
Here some brief explanation of the interfaces. For more detailed information just look into the code...
(And take a look at the docs where I explained some aspects a bit deeper.)

  • Reader handler.ModelReader Is used to read a mesh file. GoSlice provides an implementation for stl files.

  • Optimizer handler.ModelOptimizer Is responsible for

    1. checking the model
    2. optimizing it by e.g. removing doubles
    3. calculating some additional information, like the touching vertices etc. which is needed for the next step. The implementation of GoSlice is currently very basic and may have problems with some models.
  • Slicer handler.ModelSlicer
    Creates the slices (e.g. layers) out of the model. It then tries to combine all lines to several polygons per each layer. The implementation of GoSlice is again very basic, but it works.

  • Modifiers []handler.LayerModifier
    This is the most interesting part: Modifiers are called after each other and Calculate things like perimeters, infill, support, ... They add this information as "Attributes" which is basically just a map of interface{}. GoSlice already provides several basic modifiers.

  • Generator handler.GCodeGenerator
    The generator then generates the final gcode based on the data the modifiers added. The implementation of GoSlice is basically a collection of Renderer which often just match one modifier. You can provide your own, additional Renderers or even replace existing ones.

  • Writer handler.GCodeWriter
    This is the last part, and it basically just writes the gcode to somewhere. You could for example provide a writer which directly sends the gcode to OctoPrint. The default implementation just writes it to a gcode file.

Contribution

You are welcome to help.
Just look for open issues and pick one, create new issues or create new pull requests.

For debugging of the GCode I suggest you to use Cura to open the resulting GCode. Cura can open it without any problem and I try to add the markings into the GCode which Cura understands (e.g. mark what is infill, perimeter, etc.).

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].