Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
7474b88
added key navigation for layers
lehnertu Mar 5, 2019
4312a7c
0.5.0: python3 port, added panning
Spiritdude Apr 12, 2021
3b2678c
0.5.0: smaller font, updating README.md
Spiritdude Apr 12, 2021
fd5f2a0
0.5.0: adding setup.py and proper pyglet version to work
Spiritdude Apr 12, 2021
b3b7370
0.5.0: integrating keys up/down home/end
Spiritdude Apr 12, 2021
51b68e2
...
Spiritdude Apr 12, 2021
a7abc2e
0.5.1: adding bed grid
Spiritdude Apr 12, 2021
4e6ecb9
0.5.1: adding bed grid
Spiritdude Apr 12, 2021
29234a3
...
Spiritdude Apr 12, 2021
c13a76d
0.5.1: better zoom (with panning together)
Spiritdude Apr 12, 2021
122f69d
...
Spiritdude Apr 12, 2021
6519bb8
0.5.2: new color scheme
Spiritdude Apr 12, 2021
aeecb8f
0.5.2: layer plus z shown
Spiritdude Apr 12, 2021
ec03eca
0.5.2: layer plus z shown, new color scheme
Spiritdude Apr 12, 2021
1eb5491
0.5.2: layer plus z shown, new color scheme
Spiritdude Apr 12, 2021
22e1219
...
Spiritdude Apr 12, 2021
aa54925
0.5.2: layer plus z shown, new color scheme
Spiritdude Apr 12, 2021
2a5ac6f
Merge branch 'master' of github.com:Spiritdude/yagv
Spiritdude Apr 12, 2021
91038cc
...
Spiritdude Apr 12, 2021
3aba98e
0.5.2: display window right away (black) right away, then load model
Spiritdude Apr 12, 2021
c158d7a
...
Spiritdude Apr 12, 2021
4c598fa
...
Spiritdude Apr 12, 2021
265b754
0.5.2: adding tests/ with various gcode files from various slicers
Spiritdude Apr 12, 2021
81fd7ed
0.5.2: adding used filament as well
Spiritdude Apr 12, 2021
6c4567c
...
Spiritdude Apr 12, 2021
af717bc
0.5.3: support for gcode TYPE:WALL to color differently
Spiritdude Apr 13, 2021
c444eb1
0.5.3: support for gcode TYPE:WALL from Cura to color differently
Spiritdude Apr 13, 2021
05ac53b
0.5.3: support for gcode TYPE:WALL from Cura to color differently
Spiritdude Apr 13, 2021
fb77d0d
0.5.3: support for gcode TYPE:WALL from Cura to color differently
Spiritdude Apr 13, 2021
1cbcb2a
fixing Makefile (trailing spaces)
Spiritdude Apr 13, 2021
b6760eb
Merge branch 'master' of github.com:Spiritdude/yagv
Spiritdude Apr 13, 2021
6308086
refining motion color
Spiritdude Apr 13, 2021
a3a659f
...
Spiritdude Apr 13, 2021
922d1d8
more links
Spiritdude Apr 14, 2021
d57ed28
...
Spiritdude Apr 14, 2021
0e992d5
...
Spiritdude Apr 14, 2021
8d424ea
0.5.3: recognize wall/shell/perimeter with Slic3r & PrusaSlicer given…
Spiritdude Apr 14, 2021
32daf10
0.5.3: recognize wall/shell/perimeter with Slic3r & PrusaSlicer given…
Spiritdude Apr 14, 2021
39da5d1
0.5.3: additional color for support material
Spiritdude Apr 14, 2021
4abd889
0.5.3: additional color for support material
Spiritdude Apr 14, 2021
9cca9ad
0.5.3: additional color for support material
Spiritdude Apr 14, 2021
4498d75
0.5.3: additional color for support material
Spiritdude Apr 14, 2021
228a025
0.5.3: additional color for support material
Spiritdude Apr 14, 2021
329ecf1
0.5.3: additional color for support material
Spiritdude Apr 14, 2021
412d1bc
0.5.3: fixing panning with rotation
Spiritdude Apr 14, 2021
0ecf925
0.5.3: fixing panning with rotation (sort of)
Spiritdude Apr 14, 2021
ea64b2b
0.5.3: improving panning with rotation (not yet perfect)
Spiritdude Apr 14, 2021
e6acca1
0.5.3: panning, zoom & rotation working together finally
Spiritdude Apr 14, 2021
1360310
new screenshot
Spiritdude Apr 14, 2021
397843b
0.5.3: support for non-planar layers, when ';LAYER:' is present
Spiritdude Apr 14, 2021
7125865
0.5.3: support for non-planar layers, when ';LAYER:' is present
Spiritdude Apr 14, 2021
0794a2c
0.5.3: support for non-planar layers, when ';LAYER:' is present
Spiritdude Apr 14, 2021
5b86496
0.5.3: support for non-planar layers, when ';LAYER:' is present
Spiritdude Apr 14, 2021
c51c099
0.5.3: fixing wall/infill for slic3r and prusa-slicer
Spiritdude Apr 14, 2021
d60ccc7
0.5.3: fixing wall/infill for slic3r and prusa-slicer
Spiritdude Apr 14, 2021
1e936d1
0.5.3: changing mouse buttons to match OpenSCAD: mouse-middle=change …
Spiritdude Apr 15, 2021
04dd51f
0.5.3: changing mouse buttons to match OpenSCAD: mouse-middle=change …
Spiritdude Apr 15, 2021
5b7cbf6
0.5.3: changing mouse buttons to match OpenSCAD: mouse-middle=change …
Spiritdude Apr 15, 2021
d829f03
0.5.3: adding LICENSE
Spiritdude Apr 15, 2021
5e7dfc8
0.5.4: argument parsing: --dark enables dark-mode again, default whit…
Spiritdude May 4, 2021
3c139d3
0.5.4: argument parsing: --dark enables dark-mode again, default whit…
Spiritdude May 4, 2021
891e904
adding --help to display usage
Spiritdude May 4, 2021
9a5c411
adding --help to display usage
Spiritdude May 4, 2021
0680f69
adding --help to display usage
Spiritdude May 4, 2021
b85771e
adding --help to display usage
Spiritdude May 4, 2021
ec497b8
...
Spiritdude May 6, 2021
568c454
...
Spiritdude May 6, 2021
4521686
refined z=.. info on planar / non-planar slices
Spiritdude Nov 28, 2021
c6bcedc
refined z=.. info on planar / non-planar slices
Spiritdude Nov 28, 2021
18ff260
0.5.8: supporting G2/G3 arc extrusions (from ArcWelder)
Spiritdude Jan 28, 2022
3222940
0.5.8: supporting G2/G3 arc extrusions (from ArcWelder)
Spiritdude Jan 28, 2022
77c6f4f
proper G2/G3 support
Spiritdude Jan 29, 2022
fdc986d
update G2/G3 hint
Spiritdude Jan 29, 2022
c7f5bf7
fixing install
Spiritdude May 11, 2022
14572e5
yagv.desktop added
Spiritdude May 11, 2022
16b02c9
yagv.desktop added
Spiritdude May 11, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
0.5.8:
- support added for G2/G3 arc extrusions as used by ArcWelder
- CHANGELOG added

0.5.4:
- adding --help and --dark CLI options

0.5.3:
- significant improvement to support non-planar slices
- parsing type of extrusion (wall/perimeters, support, infill etc), better support for Cura, Slic3r, PrusaSlicer and Mandoline
- new mouse-button layout to match OpenSCAD
- LICENSE added

0.5.2:
- new color scheme (white bg, green extrusion, red active layer), display layer# with z [mm]

0.5.1:
- `setup.py` with proper pyglet version to match code (pre-2.0), drawing bed grid

0.5.0:
- Python3 support
- proper panning


20 changes: 20 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Copyright 2013-2017 Jonathan Winterflood
Copyright 2021 by Rene K. Mueller

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

32 changes: 32 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
APPNAME = yagv
VERSION = 0.5.8
# check setup.py and ./yagv too

all::
@echo "make install deinstall"

install::
python3 setup.py install
sudo mkdir -p /usr/local/share/yagv;
sudo tar cf - icon.png data | (cd /usr/local/share/yagv/; sudo tar xf -)
#cp yagv.desktop ~/.local/share/applications/
sudo cp yagv.desktop /usr/share/applications/

deinstall::

# -- devs only:

edit::
dee4 yagv gcodeParser.py Makefile tests/Makefile README.md setup.py

change::
git commit -am "..."

push::
git push origin master

pull::
git pull

backup::
cd ..; tar cfvz ~/Backup/${APPNAME}-${VERSION}.tar.gz ${APPNAME}; scp ~/Backup/${APPNAME}-${VERSION}.tar.gz backup:Backup/
92 changes: 65 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,76 @@
# yagv - Yet Another Gcode Viewer, v0.4
# yagv - Yet Another Gcode Viewer, v0.5.8

A fast 3D Gcode Viewer for Reprap-style 3D printers, in Python and OpenGL (via pyglet)
A fast 3D Gcode Viewer for Reprap-style 3D printers, in Python and OpenGL/pyglet

Designed in Ubuntu Linux; Expected to work in any Linux, Windows or OS X
![Screenshot](img/screenshot.png)

## Requires:
## Features

* python 2.x (2.7.3 tested)
http://python.org/
* pyglet 1.1+ (1.1.4 tested)
http://www.pyglet.org
* Colors segments according to their type:
* extruding (wall, infill, support if G-code comments are enabled in slicer)
* motion of the head to the next extrusion point
* retracting filament
* restoring filament
* Allows displaying layers independently to examine them (scroll up & down)
* Automagically splits the Gcode into layers
* Automatic scaling to fit the window
* Zoom, panning and rotation (same mouse-button layout as OpenSCAD)
* Supported slicers:
* [Slic3r](https://slic3r.org/) 1.2.9: works
* [PrusaSlicer](https://www.prusa3d.com/prusaslicer/) 2.1.1: works
* [Cura](https://ultimaker.com/software/ultimaker-cura) 4.x: works
* [Mandoline](https://github.com/Spiritdude/mandoline-py) 0.8.x: works
* [Slicer4RTN](https://github.com/Spiritude/Slicer4RTN) 0.4.x: works (non-planar slices)
* Day/Night mode (`--dark`)

## Supported Platforms
- Ubuntu Linux 20.04 LTS [confirmed]
- Expected to work in any Linux, Windows or macOS

## Usage:
## Installation
```
% python3 setup.py install
- OR -
% sudo python3 setup.py install
```

yagv [file.gcode]
* By default, open data/hana_swimsuit_fv_solid_v1.gcode if no file specified
## Usage

## Features:
```
% yagv [file.gcode]

* Colors segments according to their type:
* extruding
* flying the head to the next extrusion point
* retracting filament
* restoring filament
* Allows displaying layers independently to examine them.
* Automagically splits the gcode into layers.
* Automatic scaling to fit the window.
* Zoom and rotation (Panning planned).
% yagv --help
USAGE yagv 0.5.4: [<opts>] file.gcode
options:
--help display this message
--dark enable dark mode
--bed-size=<w>x<h> set bed size (e.g. 200x240)
```
By default, opens `data/hana_swimsuit_fv_solid_v1.gcode` if no file specified

## Issues:
## Issues

* Panning for close inspection not yet supported.
* ~~Zoom & Panning don't work well together, zoom in/out changes focus center~~ resolved in 0.5.3
* Retract/restore detected but invisible (0-length segments).
* Designed with Slic3r output in mind, may not support other slicing programs (suggestions/patches welcome).
* Some gcodes unsupported, in particular:
* G20: Set Units to Inches (usage unknown)
* Arcs (G2 & G3 ?)
* Some GCodes unsupported, in particular:
* G20: Set Units to Inches
* ~~G2 & G3: Arcs~~ resolved in 0.5.8

## Changes
* 0.5.8: support added for G2/G3 arc extrusions as used by ArcWelder, CHANGELOG added
* 0.5.4: better parsing arguments, adding `--dark` mode added
* 0.5.3: better support for Cura, Slic3r, PrusaSlicer and Mandoline distincting perimeter/wall/shell, infill and support extrusion (e.g. `;TYPE:...` Gcode comments); new mouse-button layout to match OpenSCAD
* 0.5.2: new color scheme (white bg, green extrusion, red active layer), display layer# with z [mm]
* 0.5.1: `setup.py` with proper pyglet version to match code (pre-2.0), drawing bed grid
* 0.5.0: ported to Python3, added panning, smaller font

## More Examples
### Support Structure
![Screenshot](img/screenshot-support.png)
Given `--gcode-comments` is enabled for Slic3r and PrusaSlicer.

### Non-Planar Slices
![Screenshot](img/screenshot-nonplanar.png)
Gcode from [Slicer4RTN](https://github.com/Spiritdude/Slicer4RTN), conic/tilted slicer for 4- and 5-axis FDM printers

Empty file added __init__.py
Empty file.
Loading