Awesome
Universal G-Code Sender is a Java based, cross platform G-Code sender, compatible with GRBL, TinyG, g2core and Smoothieware.
Webpage: https://universalgcodesender.com/ <br/> Discussion forum: https://github.com/winder/Universal-G-Code-Sender/discussions <br/> Discord chat: https://discord.com/invite/4DYywtyGYK <br/> Translations: https://translate.universalgcodesender.com/ <br/>
Technical details:
- JSSC or JSerialComm for serial communication
- JogAmp for OpenGL
- Netbeans Platform
- JTS for geometric transformations
- Batik for reading SVG
Downloads
Below you will find the latest release of UGS.<br/> For older releases please visit the releases page.
UGS Platform<br>
The next generation, feature packed variant based on the Netbeans Platform.<br>
Unpack and start the program bin/ugsplatform
Latest release (v2.1.9) | Nightly build |
---|---|
Windows 64-bit | Windows 64-bit |
Mac OSX | Mac OSX |
Mac OSX ARM64 | Mac OSX ARM64 |
Linux 64-bit | Linux 64-bit |
Linux ARM | Linux ARM |
Linux ARM64 | Linux ARM64 |
All platforms | All platforms |
UGS Classic<br> A clean and lightweight variant of UGS (requires Java 17). <br> Unpack and start the program by double clicking the jar file. On some platforms you may need to run the included start script. <br>
Latest release (v2.1.8) | Nightly build |
---|---|
All platforms | All platforms |
Screenshots
UGS Platform
UGS Platform main window
Customizable panel layout
Menu actions with customizable keybindings
Menu with plugins
One of many plugins
Basic gcode editor
Vector graphics designer for generating GCode toolpaths
UGS Classic
UGS Classic main window
UGS Classic with visualizer
Development
<details><summary>Show details on how to compile the software</summary> <p>For development we use Maven and Java 17 for compiling.
Compiling and starting the application
UGS Classic:
mvn install
mvn exec:java -Dexec.mainClass="com.willwinder.universalgcodesender.MainWindow" -pl ugs-core
UGS Platform:
mvn install
mvn nbm:run-platform -pl ugs-platform/application
Execute all tests
mvn test
Building the self-executing JAR
mvn install
mvn package -pl ugs-classic
Build a UniversalGcodeSender.zip release file
mvn package -pl ugs-classic assembly:assembly
Develop via IntelliJ
If you are more used to IntelliJ, you can also build, run and debug it there.
- Run
mvn nbm:run-platform -pl ugs-platform/application
once via terminal to build everything - Import the Source,
File
->New
->Project from existing Sources
- Setup a new "Run Configuration",
Java Application
, with following settings:- Main Class:
org.netbeans.Main
- VM Options:
- Main Class:
-Dpolyglot.engine.WarnInterpreterOnly=false
-Dnetbeans.user=$ProjectFileDir$/ugs-platform/application/target/userdir
-Dnetbeans.home=$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform
-Dnetbeans.logger.console=true
-Dnetbeans.indexing.noFileRefresh=true
-Dnetbeans.moduleitem.dontverifyclassloader=true
-Dnetbeans.dirs=$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ugsplatform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ide:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/extra:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/java
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.lang.ref=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.security=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED
--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED
--add-opens=java.desktop/javax.swing=ALL-UNNAMED
--add-opens=java.desktop/java.awt=ALL-UNNAMED
--add-opens=java.desktop/java.awt.event=ALL-UNNAMED
--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.plaf.synth=ALL-UNNAMED
--add-opens=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED
--add-opens=java.desktop/sun.awt.shell=ALL-UNNAMED
--add-opens=java.desktop/sun.awt.im=ALL-UNNAMED
--add-exports=java.desktop/sun.awt=ALL-UNNAMED
--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED
--add-exports=java.desktop/com.sun.beans.editors=ALL-UNNAMED
--add-exports=java.desktop/sun.swing=ALL-UNNAMED
--add-exports=java.desktop/sun.awt.im=ALL-UNNAMED
--add-exports=java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED
- Program arguments:
--branding ugsplatform
- Working dir:
$ProjectFileDir$
- Use classpath of module:
ugs-platform-app
- There is a runConfiguration in the repository, which should be available after importing the project