Adding the Area Selection feature to the raster-editing mode for this update took a little longer than most features take to implement largely due to the complexity that was involved. Other new features and functionalities have been added that are included in this update, along with the usual bugfixes too.
We've also been working on a number of projects on our CNC router which took up more time than usual just because of the sheer volume of projects, and this further contributed to v1.69b's delay. I thought it would be nice to show some of the projects that we made using PixelCNC over the last few months while v1.69b was in the works:
While working on V-carving projects this last year I had decided at some point that I should rebuild a touch probe that I'd designed and built for heightmapping boards that are to be V-carved. Rather than planing boards flat I've found that it's much quicker to just adapt V-carving cutpaths to a board's existing shape by conforming them to however warped or bowed a board may be. By using a touch-probe to generate a grid of Z-offsets across a workpiece (aka 'heightmapping'), the G-code cutpath coordinates can be displaced to follow the surface of the workpiece.
I use an older (custom) version of grblControl to run my GRBL-based CNC router. grblControl has since been renamed to 'Candle' over the years and Candle/grblControl's heightmapping capabilities have proven handy and easy-to-use, particularly when armed with a (reliably functioning) touch probe. I believe the developer of Candle added the heightmapping feature in there specifically for milling circuit board traces into copper-clad circuit board blanks. With the shallow 2D milling cuts that are involved for removing the thin copper layer where needed, the heightmapping functionality mitigates the variations in thickness and height that can interfere with producing clean circuit board traces. This doesn't require a touch probe like the one that I designed and use, as you can simply connect one electrode of the GRBL controller to the cutter while it's chucked in the spindle and the other electrode to the copper surface of the blank PCB, and GRBL will detect when the two make electrical contact with each other. I built my touch probe specifically to be able to utilize grblControl's heightmapping feature on non-conductive surfaces, such as wood and plastic. Heightmapping works a charm for V-carving wonky boards!
The original touch probe that I had built some years ago began to have reliability issues during this last year as a result of sitting in the cold "workshop" for a few winters. I imagine that condensation on the various electrical contacts had caused a tiny layer of corrosion which hindered electrical conductivity, causing the probe to indicate that it was contacting the workpiece when it actually wasn't. So sometime in November I finally pulled the trigger and set out to fix the problem by refurbishing my touch probe. Instead, I ended up building an entirely new one from scratch. I cut out all new acrylic parts, and sourced better machine screws and cap nuts to make a brand new probe.
Here's the old touch probe disassembled, and the new one mocked-up before the rest of the new parts came:
The lady of the house wanted to make a marker holder that we could use with the CNC router, to effectively transform it into a CNC doodle machine. I chose to make something that was spring-loaded (or rubber-band loaded, rather) which could easily adapt to take markers/pens of any diameter:
The two smaller parts are sandwiched around the two larger parts that clamp around the spindle of the CNC, and the whole thing is bolted together with big washers to allow the smaller pieces to slide as a unit relative to the larger pieces, and hold a marker/pen off to the side under rubber-band tension. There are slots cut into the larger spindle-clamping pieces to allow the smaller parts to slide in-and-out while forming a diamond-shaped hole that scales according to position. In combination with rubber-bands on the sides it can clamp anything from ~1/8" to just over 1" diameter in there. It could go smaller but then the rubber bands would need to be switched out for smaller ones.
I'd like to re-design the marker holder to be able to adapt to any marker/pen size like the existing design as well as have the ability to hold markers at an adjustable angle, for achieving calligraphy type effects. I'd also like the design to remain as something that can be cut from sheet stock on the CNC machine like the existing design. This will be a fun problem to solve :)
As can be seen, it has been a busy few months for us over here! More recently, illness that started after v1.69b went live, and lasted through Christmas, delayed this devlog post from going up. Doh! Well 2023 is upon is, it is a new year, and we can all start anew.
Below are the more prominent changes that are included with the v1.69b PixelCNC update, and what to expect next!
Raster-Editing Area Selection Tool
When editing a raster-layer's contents (click "Edit Raster: Enable" while a raster-layer is selected) the various editing functions can now be confined to a specific area of the layer using the new Area Selection tool that is shown amongst the other raster-editing functions on the right-side of the PixelCNC interface. The raster-editing mode now displays selected areas normally, and unselected areas colored red with a halftone pattern. Selections are not strictly binary "on/off" as selectivity exists as a gradient or on a spectrum of "selected" to "not selected". The amount that an area is selected/unselected is depicted on the canvas surface by varying the density of the red halftone pattern. Having the selection vary on a spectrum allows for selections to be anti-aliased, preventing any "stairstep" edges on selections. The strength, or alpha, of a new selection shape/area that's being applied to the current selection can also be controlled via the Opacity parameter as well.
Listed across the top of the Area Selection interface are the various selection tools provided. The first button on the left side is a Select All button, which clears the selection state to where everything is selected, as far as raster-editing functions are concerned (i.e. they will behave as was the case with previous versions of PixelCNC) though this is not treated as an actual selected area and will gray out the various selection modification functions shown. You cannot invert or feather the selected area if Select All has cleared the selection state.
There are five selection tools alongside the Select All button for selecting areas of the raster-layer being edited. These all allow directly selecting raster-layer areas within the 3D view by clicking/dragging. The last two selection tools: Height Range selection and Contiguous Area selection (aka Magic Wand) will reveal two extra selection options when active. One option specifies the height Z-Range above and below the selected point's Z coordinate on the canvas to include into the new selection area. This can be thought of as a tolerance value.
The second option these two selection tools provide is a toggle named "Solid Selection". This option indicates whether or not to automatically calculate a linear selection opacity gradient along the Z axis, per the Z-Range parameter. Enabling this option will select everything within the specified Z-Range (as a fraction of the raster-layer's Z size) of the selected point's Z on the canvas, equally, at the current opacity indicated by the Opacity parameter. Disabling "Solid Selection" will instead select a linear Z gradient starting at the Z of the selected point and falling off at +/- the Z-Range, and will also be modulated by the Opacity parameter.
The Selection "Mode" option pertains to the boolean operation to perform against the existing raster selection with the new selection areas that are being made using the active selection tool. The options are: Replace Selection, Add to Selection, Remove From Selection, and Intersect With Selection. These are identical to the selection modes in most graphics editing software, such as GIMP or Photoshop. It is important to recognize that the Opacity parameter modulates how newly selected areas will impact the current selection, per the current selection Mode. (i.e. a 75% Opacity selection made in a 100% opacity selected area, using the Remove From Selection mode, will result in 25% selection opacity on the raster-layer.)
Once the raster-layer is selected as desired a selected area can be used to create a new raster-layer from the selected area of the current raster-layer. This is analogous to the path-editing mode's New Layer From Selection function. Below the New Layer From Selection button are some other included functions for modifying the current selection, such as expanding/contracting, feathering (blurring), and inverting the selection.
With a selected area one can also return to the main raster-editing interface by clicking "Done" at the bottom of the Area Selection interface and use any of the raster-editing functions to modify the contents of the raster-layer with these modifications and edits being masked to the selected area. The selected area's opacities will impact how much an edit is applied to the raster-layer, using the selection as an alpha mask to blend the edited raster-layer contents with the un-edited contents.
The only exception is the Circular Tiling raster-editing function, which will ignore any area selection. This is due to the fact that this function modifies the layer's dimensions, and there wasn't a simple intuitive way to handle this. If you wish to circularly tile only what is selected, use the New Layer From Selection to create a new raster-layer from the selected area and perform a Circular Tiling on that layer instead.
Note: There are a few things users might want to be aware of with the new raster-editing area selection tool. They are as follows:
Firstly, raster area selections are computed at the project's rendered canvas resolution. This means that the Canvas Quality setting, set from the CNC/CAM Settings dialog, will affect the resolution of selection maps. This is to keep the raster-editing functions fast when calculating the edit preview.
Secondly, when selecting using the rectangular/elliptical/polygonal selection tools the 2D selection shape is projected onto the bottom-plane of the raster-layer being edited. This is demonstrated in the image above. This can make it appear as though the selection that results does not match the area selected on the screen if the canvas contents are higher than the bottom-plane of the layer's 3D volume, as the selected area is shown across the canvas surface. If this gets in the way of making selections users can simply enable the 2D projection mode by clicking the "3D" button on the button bar at the top of the view, which will toggle orthographic 2D projection and lock the camera above the canvas looking straight down.
Thirdly, the height range and magic wand selection tools will select a raster-layer area according to the canvas' contents as shown in the 3D view, as opposed to according to the raster-layer's contents alone (unless the raster-layer is the only thing contributing to the canvas surface). This allows for selections to be made that match what is visible in the 3D view, rather than selecting only based on the raster-layer's contents themselves, eliminating the need to combine layers into a single raster-layer before being able to select a specific area that results only from their compositing with these two selection tools. Perhaps this should be a user-toggleable option? Let us know!
Cylinder Roundover Cutters
The cylinder tool definition type, which previously was only usable for defining flat end-mill cutters, end-mills with a corner radius, and ballnose cutters, now allows a negative corner radius value to be able to also define roundover cutters too.
These cutters somewhat resemble a typical routing bit and allow creating really interesting projects using only a 2D vector design as a toolpath (e.g. create a paths-layer from an SVG or DXF, or by Z-contouring a loaded image or model, then create a 2D Profile Milling operation that uses the paths-layer as its Contour Input).
Roundover cutters also work with the Medial-Axis Carving operation as well (under Specialty Cuts on the Operation Type dialog), though it can be a little tricky tuning parameters in some situations, but the result can be more interesting than a V-carving (what would that be called, an R-carving?) The image above uses the paths-layer shown on the left, imported from a DXF file, a roundover cutter, and both a Profile Milling operation and a Medial-Axis Carving operation to produce the result shown on the right. Roundover cutters are awesome!
Reset Node Control Point Position
While editing a paths-layer sometimes it can be useful to set a control point's position to its path node's position, to eliminate any cubic curve contribution the node would otherwise add to the path. This can now be accomplished by right-clicking on a node's control point(s) while holding the CTRL key - which enables the path-drawing-and-control-point-editing mode while being held.
Export Simulation Heightmap
The simulation state can now be exported as a heightmap image (while in the Project Simulation mode) just as the canvas can be exported while in the Project Canvas mode. There wasn't any specific need or user requests for this feature, but it was a quick addition that took minutes to include just for fun.
Interest in PixelCNC has been picking up recently, which has been very exciting! YouTuber Joe Spanier recently livestreamed exploring PixelCNC for his first time which provided a goldmine of insight into how people who have experience with conventional CAM software may approach using PixelCNC and its interface - which is geared to be more like graphic design and editing software. Joe mentioned the phrase "Zero to CAM" several times (it's also the name of his livestream series where he checks out different CAM software). We thought that Zero to CAM is a supremely apt term!
"Zero to CAM" is something that we've decided to start focusing on this year. We will be working on adding more built-in help and tutorial functionality to PixelCNC that can guide users through the process of creating different types of projects and accomplishing different things within the canvas editing system itself.
We're always looking for feedback from users! Please feel free to send us your ideas, questions, comments, and concerns at: firstname.lastname@example.org, or just leave a comment below, and have a Happy New Year!