LaserCut
LaserCut is an experimental, "Swiss Army Knife" type of program for creating 2D designs. It can combine primitive shapes using constructive geometry and then send them to a laser cutter for vector cutting and engraving
Install / Use
/learn @wholder/LaserCutREADME
If you just want to try out the program, you don't need to download and compile the source code, as I try to maintain a pre-built, executable JAR file in the out/artifacts/LaserCut_jar folder from which you can download and run LaserCut as long as you have Java installed on your system. On a Mac, simply double click the LaserCut.jar file to run it once you've downloaded it, although you'll probably have to right click and select "Open" the first time you run LaserCut due to the Mac OS X security check and the fact that I'm currently unable to digitally sign the JAR file. You should also be able to double click and run using Windows, but some versions of Windows may require you to enable this ability first. LaserCut also seems to work fine on Linux Mint 18.2 (KDE Edition) using Java 10.0.2, but I had to fiddle with permissions to get serial I/O working for the Mini Laser and Mini CNC features.
Requirements
The current code and runnable Jar file requires a 64 bit version of Java 8, or later. Click Here to download and install the latest version of Java from Oracle. I wrote LaserCut on a Mac Pro using the Community version of IntelliJ IDEA from JetBrains and macOs is the only environment where I have extensively tested and used LaserCut . However, as the code is nearly 100% Java, it should also run on MS Windows and Linux systems. One exception is JSSC (Java Simple Serial Connector), which contains low-level, native drivers and is only needed to talk to certain output devices, such as GRBL-based laser cutters. Feel free to report any issues you discover. I'll do my best, when time permits, to investigate them, but I cannot guarantee fixes, timely or otherwise.
Issue with Java Serilization
LaserCut files saved under Java 8 will be incompatible with laster versions of java due to changes with how files are serialized. Future places involves switching to some form of alternate serialization, such as JSON files.
Issue with JSSC 2.8.0 and Java 9, or later on 64 bit Windows 10
The issue with a JSSC's jSSC-2.8_x86_64.dll driver when using Java 9, or later on 64 bit Windows 10 seems to be resolved using Java 10.0.1+10 and Windows 10 Home, Version 1803, Build 17134.165. As of 7/17/2018 I have successfully run LaserCut's MiniLaser feature using JSSC 2.8.0 (built in) to communicate with GRBL 1.1.
Important Note
LaserCut uses the Java Language's reflection and object serialization features to store and load design files. This means that future versions of LaserCut may introduce changes that make LaserCut unable to read design files saved by older versions. I'm trying to code in a way that avoid this, but I can make no guarantees about future compatability with older, saved files.
Basic Features
- Create and place simple 2D vector shapes such as rectangles, rounded rectangles, ovals, circles, n-sided polygons and text outlines
- Create and place Reference Point objects which are display-only objects you can use as reference points or group with other shapes to provide a common origin point.
- Specify position and dimensions in inches (default), centimeters or millimeters
- Enable a grid placement for more precise positioning
- Create and place cutouts for various sizes of Nema Stepper Motors
- Group and ungroup shapes
- Click and drag to select a set of shapes
- Shift click and drag to add to set of selected shapes
- Click and drag to reposition shapes on the cutting surface in order to make the best use of your materials
- Move (translate) 2D shapes and groups of 2D shapes to precise positions using parametric input
- Rotate grouped shapes around the location of one of the grouped shapes
- Align the position of a shape, or a group of shapes to the position of another shape
- Edit shape parameters and set to either cut, or engrave the vector outline of the shape
- Uses Java's geom package to perform 2D, constructive geometry-like operations on shapes, such as:
- Add/Merge one or more simple 2D shapes to another shape to create a new shape
- Subtract/Remove one or more shapes from another shape to get a new shape
- Zoom and Pan support
- Generate Spur Gears of various sizes and parameters
- All shapes can be set to be cut or engraved by the laser cutter
- Send jobs to an Eplilog™ Zing™ over an Ethernet connection (USB not supported)
- Send jobs to a GRBL-based laser cutter with support for jogging position of laser head (experimental)
- Path Optimzation laser cuts nested shapes, such as holes, before the shapes they are nested inside
- Import vector outlines from an SVG files (beta)
- Import vector outlines from a DXF files (beta)
- Import drill holes and outlines from a Gerber file (experimental)
- Export designs to SVG vector files (beta)
- Export vector designs to PDF files (experimental)
- Export vector designs to DXF files
- Export vector designs to EPS files
- Freeform drawing of shapes (Beta) using Catmull-Rom Splines and then automatically convert them into Bézier Curve-based shapes.
- Raster images which can be engraved on Zing or used as tracing templates for spline shapes. Also supports full rotation of raster images as well as control over DPI of of engraved images.
Selecting the Output Device
To select the current output device, choose "Preferences" in the "File" menu then select the device and the press "Save". LaserCut will remember this selection the next time the program is launched. Note: you can only have one Output Device active at any one time.
<p align="center"><img src="https://github.com/wholder/LaserCut/blob/master/images/Preferences%20Dialog.png"></p>Currently supported Output Devices devices include:
- Epilog™ Zing (requires Ethernet connection, as USB is not supprted)
- Mini Laser (small, Chinese-made laser engraver updated to run GRBL 1.1)
- Micro Laser (small engraver built from DVD/CD stepper assembiles and updated to run GRBL 1.1)
- Mini CNC (small, Chinese-made CNC Mill updated to run GRBL 1.1)
- Silhouette™ Craft Cutters (tested with Cameo™ 3 and Curio™ models, but should work with others)
- Cricut™ Mini Craft Cutter (running new TeensyCNC2 firmware)
Jog Controls
GRBL-based devices, such as the Mini Laser also have a Jog control panel for moving the laser head around and selecting the origin.
<p align="center"><img src="https://github.com/wholder/LaserCut/blob/master/images/Jog%20Dialog.png"></p> Note: the slider is used to set the feed rate used by the Jog controls (lower settings move slower)Custom Device Settings
You can use the Output Device's Settings menu to configure speed and power settings, as well as other options. For example, this is the Settings menu for the Mini Laser:
<p align="center"><img src="https://github.com/wholder/LaserCut/blob/master/images/Mini%20Laser%20Settings.png"></p> The function of the different fields is, as follows:- Use Path Planner - if enabled, LaserCut tries to optimize the order of cuts so that interior paths, such as cutouts, or holes are cut before enclosing paths. This help prevent miscutting caused by the work items shifting around on the cutting bed.
- Guide Beam Power - If non zero, the laser is turned on at this setting whenever you ue the Jog menu to move the cutting head. Note: for safety, use the lowest setting that displays a visible beam (Warning do not use if the cutting laser's beam wavelength is not visible, such as with Infrared Lasers, as this creates an invisible eye safety hazard)
- Dynamic Laser - This a feature of GRBL 1.1. If enabled, it will automatically adjust laser power based on the current speed relative to the programmed rate. Note: enabled by default when engraving.
- Cut Power - Sets the laser power used for shapes set to be cut (vs engraved)
- Cut Speed - Sets the feed rate (in inches/minute) used for shapes set to be cut (vs engraved)
- Engrave Power - Sets the laser power used for shapes set to be engraved (vs cut)
- Engrave Speed - Sets the feed rate (in inches/minute) used for shapes set
Related Skills
clearshot
Structured screenshot analysis for UI implementation and critique. Analyzes every UI screenshot with a 5×5 spatial grid, full element inventory, and design system extraction — facts and taste together, every time. Escalates to full implementation blueprint when building. Trigger on any digital interface image file (png, jpg, gif, webp — websites, apps, dashboards, mockups, wireframes) or commands like 'analyse this screenshot,' 'rebuild this,' 'match this design,' 'clone this.' Skip for non-UI images (photos, memes, charts) unless the user explicitly wants to build a UI from them. Does NOT trigger on HTML source code, CSS, SVGs, or any code pasted as text.
openpencil
2.0kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
HappyColorBlend
HappyColorBlendVibe Project Guidelines Project Overview HappyColorBlendVibe is a Figma plugin for color palette generation with advanced tint/shade blending capabilities. It allows designers to
Flyaro-waffle-app
Waffle Delight - Full Stack MERN Application Rules & Documentation Project Overview A comprehensive waffle delivery application built with MERN stack featuring premium UI/UX, admin management, a
