v1.37a - Text Layers, Raster-Editing, Trace Canvas/Layers to Paths, Stroke Paths to Raster-Layer, etc...

v1.37a not only took a lot longer to get out than I had hoped but also comes with a changelist that's right up there in size with v1.34a - which was the biggest update ever. I was planning on adding mostly just support for text-layers and also raster editing, and  while those remain the important things included in the update a lot of other little changes and additions have been made as well, far more than I had imagined would be the case. The big time sink over the last two weeks, however, was chasing down bugs that decided to pop up left and right each time I was preparing to package builds.

Here's  the changes.txt for v1.37a:

  • improved overall canvas render quality and updating speed for both slice-stack and triangle-mesh rendering modes by removing a texture generation step
  • added text-layers using TrueType/OpenType fonts installed on the system
  • added raster-editing mode for raster-layers (needs further optimization)
  • added new raster-from-paths type: stroke-paths, using same brush definition parameters as the raster-edit mode
  • added ability to crop raster/model/text layers by holding ALT key when scaling
  • added trace canvas or selected raster/model/text layer to generate paths-layers
  • added ability to create a new paths-layer from a set of selected paths
  • added ability to create blank raster-layers
  • added "canvas value" property enabling user to set default value of canvas which layers will be composited with
  • added automatic numbering of duplicate layer names
  • added mouse-wheel scrolling of canvas-layers list without requiring use of scrollbar (scrollbar appears when layers list extends beyond program window height)
  • added option in simulation settings to toggle whether or not the simulation mode will skip to the end-result of operations when they're selected
  • added "draw tool" and "follow tool" options to simulation playback
  • fixed simulation rendering lagging behind the drawn tool position
  • fixed bug in horizontal milling toolpath generation algorithm which could produce an error or result in improper ordering of milling cutpaths
  • fixed stipple operation bug
  • fixed simulation crash caused when accessing depthmap after starting update
  • increased maximum pixels/inch for both canvas and simulation to better accomodate projects of a much smaller scale, such as smaller engravings
  • improved distance-transform algorithm responsible for generating shapes from paths and for generating toolpaths for pocketing/horizontal milling operations
  •  added ui left/right panel size adjustments to UI settings dialog
  • increased session time limit on free trial builds
  • improved worker-thread performance by changing 60hz job execution rate to 1000hz
  • raster-layers now draw a blue "shadow" of their area-of-effect on the canvas for increased visibility of their canvas-position regardless of vertical offset
  • added trashcan icon button on the project operations list for removing the currently selected operation
  • changed project file version to 16
  • added new behavior when program window loses focus
  • removed smoothing from canvas properties: users should resort to using the smooth parameter for individual layers instead
  • removed downscale factor from canvas properties: users should use the canvas pixels/inch parameter for controlling the resolution of the canvas that is used for generating toolpaths instead
  • removed ability to scroll caret left/right in UI textboxes with mousewheel
  • removed console window from public release builds
  • fixed messages not appearing if errors occur during program initialization
  • fixed simulation playback not generating simulated cuts for longer cutpath motions in smaller projects
  • fixed horizontal/pocketing operations ignoring specified cut engage mode for "sibling" cutpaths causing unwanted plunge cuts
  • fixed multiple horizontal milling toolpath generation bugs
  • fixed bug in toolpath generation when minimum cut is set to zero, causing toolpaths to generate which created cut feeds between actual cut paths along the top-surface of the project
  • optimized simulation update calculation by reducing redundant area updates
  • fixed post-processor bug when using square-brackets as comment start/end delimiters posts can now have square-brackets in their G-code by specifying them using the escape sequences "\[" and "\]"
  • fixed -X/Z and -Y/Z axes swap modes for model-layers
  • fixed flip X/Y/Z model-layer toggles not being reflected in the smaller RGB model-orientation-axes drawn at the 3D model's geometric center
  • fixed slice-stack simulation rendering method not updating simulation position to match loaded project's origin offset
  • fixed unwanted frame of camera motion when user manipulates contents of 3d view caused by camera input system sampling mouse input before project edit logic
  • fixed canvas-sized layer produced when creating raster-layer from selected paths: now produces raster-layer that encompasses only the area of the selected paths
  • fixed pressing delete key while editing layer name prompting layer deletion
  • fixed import of SVG vector as raster-layer not fitting properly with some images
  • fixed configuration version not being updated, which caused loss of tool library and may have caused program crashes for some users
  • fixed abundant "mdl_drawshaded" log prints when updating viewport
  • fixed simulation speed scaling in metric mode being too fast


TrueType/OpenType fonts installed to the system are enumerated upon initialization and can be used for creating what is the equivalent of a raster-layer (except that it cannot be edited as one via the new raster-editing mode). Text-layers can be modified by selecting "Edit Text-Layer" on the left side of the window. 

While in text editing mode users can scroll through the list of fonts that was found installed on the system to select which one they want their text to be rendered with. The point-size (relatively speaking) of the text can also be adjusted. The means of setting the size may change in the future, I'm not convinced using a horizontal slider is the way to go on that just yet but it's definitely appealing to be able to quickly scale the text with real-time feedback.

In their current form, text-layers are very simple and rather limited. One of the additional features is to allow users to plot text along a path or otherwise have the individual characters situated in different ways beyond straightforward left-to-right text, which will enable much more elaborate designs to be created.

Raster-Layer Editing Mode

Raster-layers can now be edited manually. This is currently in a bit of a crude form that has plenty of room for being expanded upon and refined. Regardless, the core systems are all in place now and ready to be fleshed out over the coming months. Also, included with raster-editing mode is the ability to create blank raster-layers as well which was something that was already planned but not added because it would've had no use or purpose being that there was not yet any way to edit their contents at the time.

Similar to the image editing program GIMP (and probably Photoshop too), holding the SHIFT key will allow for drawing line segments with individual clicks:

Stroke Paths

A new means of generating raster-layers from paths-layers is the Stroke Paths function, which can be found among the other raster-from-paths options:

The brush specification follows that of the raster-editing mode. As raster-editing brush definitions are expanded upon the stroke-paths brushes will see the same enhancements and additional features and brush types.

Layer Cropping

Raster and model layers can now both be cropped to a rectangular area by holding down the ALT key while downscaling a layer:

What's Next?

There are still several things planned for implementation over the coming months. For one, an undo/redo system is highly necessary - which will allow the user to revert any changes they've made to a layer, both its properties and content. With all of the compositing and layer editing modes in play it can be easy to make a change that's harder to revert manually than the original change itself - like if you accidentally delete a node or path while in path-editing mode, or make a brush stroke that was unintended (ouch!) Without an undo/redo system, however crude or limited, working with any program becomes geometrically more challenging.

Additionally, more advanced text-layer capabilities such as being able to have text follow paths with character orientations set to a specific angle or angled to follow the path.  I'd really like to flesh out the text-layer functionality to be much more involved and capable, possibly over the course of two or three updates in a piecemeal fashion.

Another planned piece of functionality involves generating raster-layer shapes from paths in more ways than the existing means. Aside from the new stroke-paths function the rest of the raster-from-paths functions operate exclusively on closed paths that are not open-ended. Generating a wider variety of raster-layer shapes entails your typical single/double rail sweeps and the like, pretty bog-standard stuff.

Then there's all the other little things (and then some) such as support for DXF formats, exporting layers back out in different formats, exporting toolpaths in various formats besides G-code, etcetera. The sky's the limit! Well, that's not true, in actuality time is the limit. I can only pump out so many lines of code in a given period of time!

I'm always open to suggestions so please feel free to report any ideas you may have on the forums - or just leave a comment here on the devlog posts that I make for each released build. Anything you think would make PixelCNC easier to use, or a feature that you'd like to have, and especially bug reports! I can't find all the bugs and write all the code because I can't come up with every single possible use case that users can so it's imperative that bugs discovered are reported - ideally with enough information to actually recreate and examine the bug on my end.

Thanks for reading and stay tuned!


PixelCNC v1.37a (64-bit).zip 2 MB
Sep 20, 2019
PixelCNC v1.37a (32-bit).zip 2 MB
Sep 20, 2019
PixelCNC v1.37a Trial (64-bit).zip 2 MB
Sep 20, 2019
PixelCNC v1.37a Trial (32-bit).zip 2 MB
Sep 20, 2019

Get PixelCNC: Fast/Easy CAM for Signs, Engravings, Art, and More!

Buy Now$199.95 USD or more

Leave a comment

Log in with itch.io to leave a comment.