v1.44a - Paths Carving, Tessellated Carving, Raster Tiling, Raster Tilt Angles, Profiling Cut Width, etc..

v1.44a is a rather large update! Remaining updates to be released will be much smaller as there's simply not much left to do other than fix bugs and add a few features. The original aim was to knock out everything that's left on the todo list so that this could've been the first beta release but with how unpredictable things can be it didn't work out that way. One of the major things left to add is an adaptive/trochoidal cutpath option for the horizontal milling and pocket milling operation types. That's going to have to wait a few months because I have made a decision to still follow through on the other things that the first beta release entailed, specifically producing video content for users and would-be users to learn how to use PixelCNC's various features and functionality. That also includes some walkthroughs that demonstrate how to create different projects completely from scratch using only PixelCNC and a CNC router.

Here are the changes v1.44a includes:

  • added "pathscut" operation for generating cutpaths directly from a paths-layer
  • added "tessellate" operation for generating cutpaths using tiling shapes
  • added cut-width to profiling operation to perform multiple stepover-spaced cuts
  • added raster-editing function for generating 2D column/row arrays of layer
  • added raster-editing function for generating circular arrays of layer
  • added ability to tilt raster-layers along their X+Y axes for ramp/gradient by right-click-dragging their edge-handles, or changing angles via layer-properties
  • added operation toolpath extent to center-of-tool or radius-of-tool for operations where relevant, referred to as "confine cuts" in operation parameters
  • added simple preview of raster-along-paths to 3D view
  • added button to Project Tools mode to copy tool library to project's tool list
  • added ability to perform raster-along-paths directly from text-layers without first requiring creating a raster-layer from a text-layer
  • added visualization of spiral operation's origin-offset to 3d view
  • added axis and machine origin labels to 3d view
  • added name of selected font to UI when editing text-layers
  • added multi-threading to raster-layer brush-stroke generation to increase responsiveness when manually brushing
  • added path-editing selection state to undo/redo event buffering; path-editing mode would previously be simply disabled if user undoes path-edits
  • added paths-simplify and paths-subdivide functions to undo/redo event buffering enabling undo/redo to reverse or reapply their changes to a paths-layer
  • added support for loading ASCII Stereolithography/STL models; existing STL support worked only for binary (non-ASCII) model files
  • added support for loading ASCII Wavefront OBJ models
  • added automatic opening of this changes list after a new update has installed
  • added console output view toggled using the tilde '~' key for users to gather information and details for debugging issues
  • added option to toggle texture-filtered rendering of the canvas and simulation
  • added cutting angle-threshold to horizontal milling operation's finishing mode (cut stepover set to zero) to generate cuts only where a canvas steepness is met
  • added contouring offset to medial-axis carving operation to expand/contract cuts
  • added drawing of cutting tool's circumferance in simulation mode to ensure visibility when viewing simulation from above or in 2D view mode
  • added tool type icons to project tools list
  • added automatic cleanup of zero-length paths (i.e. single-node paths)
  • added automatic balancing of CPU/GPU utilization during intensive computation
  • added display of selected operation's total cutpaths length to simulation mode
  • added display of selected operation's type to simulation mode
  • added display of selected operation's cutting tool's icon
  • added mixed cutting direction to pocket-milling operation (previously defaulted to a conventional cutting direction when 'mixed' was selected)
  • added path geometry optimization pass to raster/text along-paths function to prevent extremely long calculation times from occurring
  • improved quality of raster-along-paths and path-sweeps around corners
  • improved visibility of text-selection when in text-layer editing mode
  • improved clickable size of path-nodes when in path-layer editing mode to prevent false-positives while creating/selecting nodes
  • improved stability/reliability of text-layer rendering
  • improved miscellaneous aspects of UI visibility and usability
  • improved chevron toolpath generation on planar surfaces
  • improved timing when automatically backing up projects
  • improved performance of paths-layer rendering
  • improved accuracy of mouse-click path-selection
  • changed default toolpath render mode from "hide occluded" to "always draw"
  • changed logging of debug information to be automatically disabled upon launch
  • changed "new project" behavior to default canvas resolution to 100 pixels/inch
  • changed paths-layer colors when layer is selected, not selected, and if the selected layer is set to "hidden"
  • changed creation of raster-layer from model/text layers to apply source layer's smoothing to the resulting raster-layer
  • changed layer's Z-sizing handle to be hidden if too close to the layer's origin handle, such as when in 2D mode or if the view camera is angled downward
  • changed names of operation parameters to follow more conventional terminology
  • changed profiling operation to no longer allow rest-machining
  • changed paths-layer rendering's quality to be affected by canvas quality setting
  • changed New Operation behavior to automatically open operation type dialog first
  • changed horizontal finishing to not allow for rest-machining
  • changed top-center layer handle's left/right click-drag functions, left-click-drag now scales vertically, right-click-drag moves horizontally
  • fixed sweep paths not blending between profiles at their locations
  • fixed canvas Z size affecting toolpath resolution during cutpath generation
  • fixed square layer resulting when loading rectangular layer media with same aspect ratio as canvas
  • fixed cropping of model-layers
  • fixed crash when subdividing/simplifying paths with many nodes
  • fixed bug causing gaps in raster-along-paths when the generated heightmap contacts the far Y-axis edge of the raster-layer
  • fixed "expand/contract" and "draft angle" raster-editing functions not reverting the canvas if raster-editing is disabled without applying them
  • fixed bug causing simulation size/origin to not update when canvas size/origin are changed on a project that was loaded at launch
  • fixed chevron operation's cutpaths failing to be centered on canvas
  • fixed bug in contouring procedure that resulting in stray cut paths
  • fixed grid behavior when defaulting configuration in metric mode
  • fixed medial-carve cutting depth capping to flute-length of cylinder tool types instead of the cutter's corner-radius
  • fixed bug when undoing linear brush strokes placed via holding SHIFT key that resulted in last stroke being stuck on canvas through many undo levels
  • fixed bug causing undo of "selection to new layer" when path-editing causing the removal of the wrong layer from the project canvas
  • fixed bug when parsing values in "E notation" from text-strings
  • fixed bug in layer smoothing causing inconsistent results at different layer angles
  • fixed bug when switching between inches/metric causing default project dimensions and path min/max length parameters to become corrupted
  • fixed bug preventing autobackup when changes are made to a layer's properties
  • fixed mouse camera manipulation being interrupted when cursor touches UI
  • fixed bug in profiling operation's toolpath generation when tabbing is used with ramping entry cut mode
  • fixed deleting selected paths/nodes via delete keypress not being undoable when deletion via right-click was
  • fixed fit-canvas-to-layers not updating canvas' dimensions in canvas properties
  • fixed issues with ramping entry cuts for non-horizontal cutpaths
  • fixed bug when selecting different fonts for a text-layer which caused fonts to cache multiple times, accumulating until an overflow-induced crash
  • fixed bug causing loaded project's simulation heightmaps to be regenerated instead of using those that are stored in the project file
  • fixed mousewheel scrolling missing wheel clicks at lower framerates
  • fixed export G-code automatic sequence numbering, posts no longer need to incorporate CNC_SEQUENCE into their command blocks
  • fixed right-click deletion of graph vertices not updating canvas when using adjust levels raster-layer editing function
  • fixed shapes-from-paths, stroke-paths, and sweep-paths not using paths-layer's Z origin to add height to generated raster-layer

Paths Carving

PixelCNC now allows for paths-layers to be directly converted into toolpaths using the new Paths Carving operation. Paths-layers can be hand-drawn, generated by tracing other layers or the canvas as a whole at a specified Z-plane (i.e. 'waterline' tracing), or imported from SVG and DXF vector files. The generated cutpaths can either cut to a specified uniform depth or conform to the canvas' shape.

Tessellated Carving

Another new operation generates a set of concentric cuts from a repeating pattern using a specified shape. Users specify a number of columns and rows along with a number of concentric cuts that should be generated for each shape. A separation parameter indicates the desired distance between the outer-most cuts of two neighboring shapes in the pattern.

There are half a dozen different shapes/patterns to choose as of this release: quads, triangles, diamonds, diamonds2, hexagons, and circles (probably should rename it to 'ellipses', doh!)

The "Remove Partials" option tells PixelCNC to omit cuts which are hanging off the sides of the canvas.

Raster-Layer 2D/Circular Tiling

Raster-layers have two new editing functions which allow repeating a layer's contents by a specified number of columns/rows or circularly. The circular tiling function has a few more parameters and options than the cols/rows function. Equivalent parameters will be added to the 2D tiling function in the next update.

Raster-Layer Tilting

Raster-layers can now be tilted along their X and Y axes to produce a sloping effect. This is not the same as rotating the layer like it's a model as the layer's 2D footprint on the canvas does not change. The tilt angle of a raster-layer can be adjusted in the layer's properties or by right-click dragging the edge handles of the layer in the 3D view, just as with rotating the layer around the Z axis can be performed by right-click dragging the corner handles.

Profiling Cut Width

The profiling operation can now generate multiple successive cuts approaching contoured forms using the new "Cut Width" parameter.

The cut width parameter does not control the actual width of the area milled out by the cuts, but instead only sets the distance between the outer-most and inner-most cuts, which is filled with incremental cuts at the specified cut stepover size starting from the outer-most and progressing to the inner-most. To calculate the total width that will result from a given cut width simply add the cut width value to the cutter's diameter.

Horizontal Finishing Minimum Angle

The horizontal milling operation can be used for horizontal finishing by setting the cut stepover to zero which produces only cuts that profile the canvas at 'cut depth' Z increments down to 'max depth' below the top of the canvas. The problem was that areas with less of a slope would result in cuts that are spread out. This can be seen in the image below which shows a horizontal finishing toolpath with the minimum angle at zero degrees:

For several of the carving operations a corresponding maximum-angle parameter will be added in a future release which instead limits cuts to shallower areas of the canvas.

Confine Cuts

Some operations will confine their generated cutpaths from the edges of the canvas at a distance equal to the radius of the cutter. This can be disabled by disabling "confine cuts" on the operations which offer the ability to toggle it. Some operations are not affected by it because their cutpaths are unusual (i.e. stippling).

Note: There was a bit of confusion when naming and implementing the confine cuts option which has caused the effect that the toggle has to be backwards from the intended behavior. When Confine Cus is disabled the cuts will be confined from the edges of the canvas by the cutter's radius. When it appears enabled the center of the cutter will be able to approach the edges of the canvas. The behavior should be the other way around! *Facepalm* The next update will have the logic reversed so that an operation which currently has it enabled will show it as disabled, and vice-versa. The behavior of the operation's toolpath generation will remain as it was with v1.44a without users reversing the state of the option for their projects after updating to a fixed release.

Raster/Text Along Paths Preview

The raster-along-paths function has been expanded to support text-along-paths and now displays a preview of the function in the 3D view. The preview is a low-fidelity approximation but it does the job of giving the user an idea of what the generated layer will be like. There's also a new parameter for controlling the lateral positioning along the paths called "Position Offset".

Copy Tool Library to Project

This new function will automatically fill a project's tool definitions using the first ten definitions stored in the user's tool library. The user will be prompted first with a warning about any existing tool definitions being overwritten. This function allows users to quickly re-use tools across multiple projects without having to manually load each one to the project's tools from the library one at a time.

Path-Editing State Undo/Redo Buffering

Prior to v1.44a PixelCNC would completely leave the path-editing mode when the user undoes or redoes a path-editing action. This is no longer the case. PixelCNC now properly maintains the path-editing state, which includes which paths and nodes are selected, and whether or not path-editing mode is active. This should make it much quicker and easier when editing paths while employing the undo/redo functions.

ASCII Models Support

Finally! PixelCNC is no longer limited to importing model-layers from binary Stereolithography/*.STL model files. ASCII *.STL models can now be loaded as well as Wavefront *.OBJ models, which are generally ASCII as well. There is apparently a binary variant of the Wavefront OBJ format and it tends to not be used often. There may still exist certain ASCII model files of the *.STL or *.OBJ format which are situated in an unusual way and fail to load properly. If users come across any model files like this please report them via the PixelCNC forum at forum.deftware.org

What's Next?

Aside from bugfixes and new features such as adaptive/trochoidal milling, path/raster editing functions, and miscellaneous improvements, the main focus now will be producing tutorial videos for helping users learn how to use PixelCNC to the fullest. There will be a set of smaller tutorials which cover specific aspects and functionality. These will be a few minutes in length and serve as bite-sized tidbits of information for users to quickly find and learn what it is they're curious to learn about. There will also be complete project walkthroughs which demonstrate in a stepwise fashion the creation of a project from beginning to end, including some basic machine setup and techniques for processing a workpiece after cutting.

There will also be some promotional materials which are meant for marketing purposes, along with a new store page! Itch.io served PixelCNC well in its early days when it was first released two years ago but has significantly outgrown the many limitations of the platform. We'll be moving to Shopify where we can also sell physical items and have much more control to customize the store and product pages.

Another PixelCNC update probably won't be out for a few months, and when it does come it will certainly be smaller in scope - as will all future updates. The focus now is on expanding resources for users now that many of the features and functionality are implemented.

Thanks for reading!


PixelCNC v1.44a (64-bit).zip 3 MB
Jan 09, 2021
PixelCNC v1.44a (32-bit).zip 2 MB
Jan 09, 2021
PixelCNC v1.44a Trial (64-bit).zip 3 MB
Jan 09, 2021
PixelCNC v1.44a Trial (32-bit).zip 2 MB
Jan 09, 2021

Leave a comment

Log in with itch.io to leave a comment.