Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered May 30, 2015 · View creator page →

Creator of

Recent community posts

That's a pretty nifty world map!

Alright, I'll make sure the model scaling function is put in there. I am thinking it will be a function that can be used after importing the model, something like "Scale By Geometry" which shows a dialog where a scaling factor can be entered and hitting "Apply" will automatically scale the layer according to its internal vertex positions and the entered scaling factor. Then you can just hit "Fit Canvas to Layers" on your canvas properties to have the canvas volume's dimensions automatically envelop the model afterward - or perhaps add a checkbox on the scale by geometry dialog to just automatically scale the canvas all in one go. I'll have to play around with it a little bit to see what feels right.

I have a handful of other features/functions to add before the next update, along with recording some more capture for videos, but the update shouldn't take more than a few weeks :)


Hi Xalor, glad to hear PixelCNC is working out for you, thanks for your support :)

The reason that PixelCNC auto-fits models to the canvas is due to models being in a variety of scales that are not connected to any kind of real-world units a lot of the time - like you said yourself there can be a lot of files with weird dimensions. Sometimes they are actually modeled or generated to fit real-world units like inches/feet/millimeters/centimeters/meters, etc.. but there's no way to reliably map the randomly scaled models to real-world units because real-world dimensions aren't stored into STL models, just vertex XYZ positions. The models that aren't already scaled to any real-world measurement unit are forever stuck in their random scaling that their creator produced them in and need to be manually scaled for any cutting or printing projects.

It's possible to add an option to PixelCNC for users to import models with a scaling factor as an alternative to auto-fitting to the canvas. i.e. if a model is in centimeters when loading it into a metric project you could use a "10" scaling factor to scale it to PixelCNC's millimeter scaling. If a model is already in millimeters you would just use a scaling factor of "1", as well as for a model that's in inches if your project is in inches. Or, a model that's in feet loaded into a project that's in inches would use a scaling of "12", etc... but in my experience there are just a lot of models out there that aren't in any meaningful scale and the only thing you can do is manually scale them anyway. When loading a model using a scaling factor option you will then need to use the "Fit Canvas to Layers" function from the project's Canvas Properties dialog.

If that feature sounds useful to you I should be able to get it in there for the next update that will be released sometime in June. Let me know what you think, and if you haven't already you might want to subscribe to the Deftware YouTube channel to catch new PixelCNC tutorials and project walkthroughs as they are released:  There's a lot of functionality in PixelCNC that most users are completely unaware of unless they've been following the development log over the years and it will all be demonstrated and explained over the course of a series of videos soon.

Feel free to share a project or two on the forum! :)


Hi Fordy,

PixelCNC does not do any spindle/chuck crash detection (yet) it only restricts the maximum depth below the top of the canvas that a cutter is allowed to go into the canvas volume for a given operation. This is determined by the cutter's "Total Length" parameter. Individual cut passes are limited in depth by the tool definition's "Flute Length" parameter but controlled by the operation's "Cut Depth" parameter. The cut depth operation parameter controls the maximum thickness of a cut for the operation, and cannot be larger than the flute length of the selected cutter. If you want to limit the full depth that the cutter can ever go then make sure "Tool Length Limits Max Depth" is enabled in your CNC/CAM Settings dialog, and set your total length on your cutters to the maximum total depth you don't want the cutter to extend beyond.

To model a bit that has a larger shank I would treat the shank as the chuck/spindle and limit the cutter definition's maximum length to the distance from the tip of the cutter to where the conical extension begins - this will only prevent the cutter from ever going deeper than that distance though. You can also add draft angles to raster-layers on your project's canvas, just figure what the angle is that's needed for the bit to prevent the corner of the flutes from rubbing against the shank.

Right now I've been figuring out how to more intelligently generate rapids between cuts that don't always require retracting to the Rapid Height set for the operation, which will help with deeper projects, allowing the cutter to rapid between cuts if material is detected to already have been removed there, or if it only needs to retract in Z a little bit to clear the workpiece with the material that's already been cut out.

I'm not sure what you're saying is wrong with the parallel carving operation - it does generate cuts that traverse from Y-min to Y-max, but if your "cut depth" is set smaller than the Z Size of your canvas it will generate sets of cuts at "cut depth" increments until "max depth" is achieved. The cut depth parameter doesn't control the depth into the material to cut, it only controls the depth increment from the top of the canvas volume. If you want the cutter to cover the entire project in one pass you can define a cutter that has a long enough flute length, and total length, to reach every spot on the canvas. This, and the "Tool Length Limits Max Depth" will be per-operation options soon, rather than having to "trick" PixelCNC by defining a cutter geometry that is longer than the actual cutter. Just make sure that you're roughing out your workpiece first.

I've noticed the same issue with the precision of the inputs, I had believed that for inches it would be fine rounding to 3 decimal places, and 1 decimal place for millimeters, but I should nudge them up by one more decimal place - I'll make sure that's taken care of for v1.50a.

I would rough out the project using the horizontal milling operation and a larger cutter, then come in with the same roughing cutter to perform a parallel re-roughing, then a parallel carving with a finishing cutter definition that's able to reach the full depth of the canvas (or at least the full depth of the raster-layer or model you're cutting) so that you can set cut-depth and max-depth to do one pass over the entire canvas.

Here's an example project you can use as a template or guide:

Thanks for the feedback, hope this helps!


(1 edit)

Glad to hear it, and thanks for the sale :)

I figure that the best I can do as an independent developer is provide top-notch support for users, especially while I'm still working on producing learning materials - tutorials and walkthroughs that explain everything. I'm just about to release the v1.48a update, which incorporates some fixes, including the one for the INVALID OPERATION error you were seeing in the log file. PixelCNC should let you know that an update is available the next time you launch it after I've pushed the updates to the web.

I'll be sending out a customer-wide email about tutorial videos that are released as I put them up, so keep an eye out for those.

In the meantime feel free to post any questions, even if they're only CNC related and not PixelCNC-specific, or provide any feedback you may have on the software, however big or small. A number of PixelCNC's features are the direct result of user suggestions.

Share your projects here on the forum for others to see! I just did one the other day that I should post, a V-carving on an ebony-stained board with gold-painted cuts. It came out really nice.


EDIT: I did fix the crash that occurs if a user creates an operation that produces too many cutpaths, right now it just outputs to the logfile that the toolpath is being overflowed with cuts. It's a bit of a placeholder that will prevent PixelCNC from crashing for now. I will add in a prompt soon that warns users that their parameters are creating excessive numbers of cuts for v1.49a.

(1 edit)

Ah, it looks like your cut depth is set very very tiny, which is OK for horizontal finishing passes (i.e. horizontal milling operation with a cut stepover of zero) but for a parallel carving operation you'll want something more substantial. It looks like it's overflowing the Intel graphics  chipset with too many cutpath move geometry and crashing it. Try a larger cut depth. If your cutter and machine are rigid enough you should be able to use the entire flute length of your cutter for your cutting depth. For a 1.5mm diameter cutter I would use at least half of the flute length as a cutting depth here.

Another strategy is to use a roughing pass with a larger cutter that has a Leave Stock of a millimeter or two, a stepover about 30-40% of the cutter's diameter, and then come in with a parallel carving operation and the smaller tool for finishing - and you can set your cutting depth to the full depth of the project's canvas (or at least the cutter's flute length).


(2 edits)

Alright, you can download a custom build here:

Go ahead and place the EXE in your existing PixelCNC folder and run it instead of the existing "PixelCNC Trial.exe" file.

There's no guarantee that it will solve the problem but I made some changes that might fix the issue you're seeing. I also included some extra information output to the log file during startup that might help narrow things down, worst-case scenario, so if you're still seeing the INVALID OPERATION in the log file (or the console, just press the tilde '~' key to see the log output while in PixelCNC) then go ahead and pastebin the log file it produced so I can take another look.


EDIT: I did some more digging and I think that this will solve the issue you were seeing! There's an issue with Intel's shader compiler that prevents it from supporting a certain math operation and the custom build above removes it.

EDIT2: If everything works for you as intended I'll get a public v1.47a hotfix update out today.

(2 edits)

After looking at your log file there's an error when compiling a graphics shader. I'll figure out a fix and have something for you to try out ASAP :)

EDIT: In the meantime I'd suggest trying updating your drivers as there may be an issue with the older version you're currently running that's causing problems too:

Hi there, thanks for checking out PixelCNC :)

Could you paste your log file to and reply with the link that it generates so I can take a look?

It sounds like it might be a graphics hardware compatibility issue, but we may be able to adjust some things and get it running properly.


(2 edits)

Hi again. Yes you can blend together the images using different blend modes for their respective layers. What are the dimensions of the MDF you're carving? I'm pretty sure the Shapeoko will be able to handle it, size-wise, as long as you get the 32x33 version.

In PixelCNC I'd start by setting the canvas Z-Fill to the top of the project's canvas volume (click Canvas Properties on the left). From there you can load in your images as raster-layers and depending on whether they are black-on-white or white-on-black you might need to invert them (edit; toggle the invert option on the layer's properties) , and then use either the subtract or minimum blend modes, then scale and position them. The bottom-center layer handle moves the layer along the XY plane when left-click-dragging and it will move the layer vertically when right-click-dragging. For the top-center layer handle the left/right click are reversed. Left-click-drag it to scale the layer vertically.

You can email your PixelCNC project to [removed] and I'll take a look at it for you :)

Hello. I wouldn't mind taking a look but I'm a little unclear about what you need. What exactly do you need to have looked at about the project? Are you looking to have someone confirm it's possible to actually make on a CNC router, or if the G-code will actually run properly? As long as you use the GRBL post-processor (the default one) when exporting it should be fine. If you can provide more details and information about what exactly you need that would help me wrap my head around what to look out for specifically.

Hello there. I'd like to see a logfile that's output after a crash. If you go into PixelCNC's File menu there is a "View Log Files" option that should open up the folder where all of the log files are output. They are named chronologically with the date and time that PixelCNC is started. You should be able to go through them and find one that ends in a crash because it will lack shutdown information at the end of the log file. The last line in the log file after a successful shutdown should say "returning to OS..."

You can copy/paste the contents of a log file that appears to be from a crashed session to and post the resulting link here instead of pasting the log file here on the forum. I should be able to get enough information from the log file to figure out if there's a simple fix for the crashes you're experiencing. Feel free to create more than one pastebin with multiple log files, the more the merrier!


(1 edit)

I don't know for a fact but it basically is just carving circles around the record (or impressioning them in) and offsetting their centers and radii to generate specular vertices. The 3D shape's rotation becomes automatic as the record rotates. It might be something as simple as just positioning the center of each vertice's circular groove where you want it to appear in 2D, which is to say that all of the circles are around the center of the vinyl and then you offset their centers to position their light glints in different places.

So for 4 points that are the corners of a square you would have four circles with matching radii and just offset their centers a bit. If you want a 1" square then you offset each one by 0.5" in the X/Y to represent the four corners. When you light that up you'll have four glints and when you spin the record the four glints will appear to rotate in-place.

EDIT: I'm not sure you need to vary the radii of the circles at all, it would change the apparent depth of the glints but I don't think it's necessary to produce the animated/rotating model effect.

Yes holograms can be pressed into plastic but you'd have to make a negative of the hologram. Holocraft does not generate the animated circular ones like the one in the image above which uses the specular glints of reflected light as a means of animating the light as the record rotates, rather than producing a stereoscopic 3D effect - which is the intention of the holograms Holocraft generates.

The important thing to keep in mind is that the grooves formed by any metal dies pressed into the lacquer will need to have glossy smooth surface that results, to maximize the sharpness of the glinted light so it's not a blur along the groove (which produces a blurry hologram).

Hi Dave.

I just saw your email. The closest functionality that exists right now is the "flip X/Y" options on a layer's properties. This will mirror along the X and/or Y axes. 

There are plans to add ability to rectangle/lasso select and independently manipulate specific areas/sections of raster-layers in the future. Right now the user guide is being updated for v1.44 which will be released on January 1st if there aren't any serious hiccups. :)


(1 edit)

Hi Tellef,

The existing tutorials are all outdated when it comes to using the new canvas system for compositing and designing a project. It functions somewhat like Photoshop, with "layers" that are combined to produce a canvas which toolpaths will generate from. The tutorials that exist are from earlier versions of PixelCNC which allowed only loading a single image or model at a time for toolpathing off of. Now you must setup your project size and resolution and then load your images/models into the canvas. BMPs and SVGs may be in an unusual format that's not supported but I'd like to see these files you're unable to create a layer from. Are you seeing an error? Is a layer being created at all in the layers list on the bottom left of the PixelCNC window?

The contents of a log file which has captured your attempts to load images to create layers in the project canvas should provide plenty of information for me to deduce the cause of the problem you're having. Run PixelCNC, create a layer from a BMP that's not working, then repeat but with an SVG that's also not working. From the File menu then select "View Log Files" and open up the newest log file you see. You can copy and paste the contents of the log file over at and reply with the link so that I can see PixelCNC's diagnostic information that it outputs.

I'd also like to see the BMP and SVG files themselves that aren't working for you. If you'd rather not use pastebin you can email the log file along with the image files that aren't working to

There are currently no new tutorials or videos of the new PixelCNC interface which explain the canvas system and its usage/methodology because focus has been on getting the program from alpha to beta in time for the new year. A decision was made two years ago to hold back on creating learning resources for the time being because they would become obsolete over the course of development and need to be re-done multiple times, which would take away from actual program development time. Now that the first beta version is about to be released (hopefully on January 1st if I can finish this new toolpath type up by then) I will be changing gears and start creating video tutorials, demonstrations, and example projects in the coming weeks as PixelCNC will no longer be going under any major changes or feature additions now that would make tutorials obsolete in the future. This has been a long time coming!

I'm sure we'll be able to get everything all worked out for you, I just need as much information as you can give me in the meantime - that log file will contain just about everything that's needed to figure out the problem as long as it has captured your attempts to load images into the canvas. The image files themselves would be useful too but the log file is the most important at the moment.


Hi there! Did you try the "Load Image as Raster-Layer" in the create layer dialog?

This should open a dialog where you can select different image formats such as BMP/JPG/TGA/PNG/WEBP, as well as SVG vectors.

Hi James, can you send the contents of the log  file that PixelCNC produces after an image-loading failure? You can get to the log files folder from the File menu. I'd suggest running PixelCNC, opening the log files folder, and then re-creating the crash by creating a new raster layer with one of your larger images. Then if you sort the log files by "date modified" you can be sure that the most recent one captured a session where the issue occurred. You should be able to open up the log file and copy-paste its contents over to which will generate a link you can post here so that I can take a look at what PixelCNC is doing. :)


Glad to hear it! I'll be including that post in the next build of PixelCNC that's released :)

Yup, setup your canvas properties - and remember that it's an XYZ volume within which toolpaths are generated, so if you don't need your cuts to be deeper than a certain amount then you generally don't need a Z-size that's larger than that.

Load up any images/models you want to composite on your canvas, you can rotate, size, and scale by selecting the layer and left/right click-drag the little circle handles that appear, or directly edit the layer's properties on the right-side, including how layers blend together - blending from the bottom up so that a layer's blend mode affects how it composites with everything below it (in terms of how they're ordered in the layers list on the left-side of the window).

Setup your tool(s) and then create your operations to generate toolpaths. Remember to consider your operation parameters carefully, there's still a little work to be done to "shield" the user from entering bad values. After you have a toolpath generated you can go into simulation mode and see what your cuts will look like.

Let me know how it goes!


Hi Doug,

Glad to help! Okay here's the post I made that hopefully resolves the issue. It produces G-code that matches that of the working code you sent, so if there's still an issue with the soft limits it likely is a machine origin type issue (zero on your machine doesn't match where you have the origin set in PixelCNC, for example).

Download the post here: RichAuto (Metric).txt If it doesn't download and instead opens up in the browser you should be able to right-click and Save As to save it to the posts folder in your PixelCNC directory.

Let me know how it goes :)


Hi Doug,

Yes I believe you're right about it thinking the coordinates in the G-code program are too big for the machine though it might be that none of the currently included posts are compatible with your machine. It shouldn't take more than a few minutes to get one working if that's the issue. Do you have any G-code that you're able to run on your machine that I could look at as a reference? It doesn't matter what program produced it - just that it runs as expected on your machine. The problem could simply be that none of the existing posts in v1.43a are formatting the G-code to where your controller is able to properly parse out the command blocks and it could be interpreting a non-coordinate value as a coordinate.

You can use to put the contents of a G-code file online and reply with the link it produces for me to see. I'll then put up a post for you to download and try out :)


Hi Dan,

I have created an Easel post that will be included in the v1.44a release soon. You should be able to run your machine using a 3rd party G-code "sender" if it's running GRBL, rather than using Easel. I personally use a custom version of grblControl - which is now known as Candle. I had to modify it to have better support for inches but I believe that Candle now has proper inch support, I should really go check it out and find out for myself. There are a lot of other good free programs out there that should work fine too.

The issue you're having pertains exclusively to Easel and not the Carvey. You should be able to run G-code exported with a Mach3/GRBL post on there just not with Easel unless it's formatted in its specific way (which the new Easel post for PixelCNC ensures). The situation with Easel that you'll want to look out for is the fact that it's a 2.5D CAM solution which means that any kind of relief carving etc probably won't load/simulate correctly but it might still be able to send it properly to the machine. I don't know if this is 100% true, I haven't tried loading 3D toolpaths into Easel yet.

Thanks for the feedback! :)


Hi Doug,

It sounds like the machine isn't homed/zeroed out and thinks it's outside of its physical bounds. Can I ask what machine you're running?


That's great news :D

First I'd suggest setting up your project's 'canvas' which is the area where you can create and design your project as well as the volume within which toolpaths will be able to generate. There are four buttons at the top-left, beneath the menubar, which let you go between the four interface "modes". The default mode is for editing the canvas. In that mode you can click "Canvas Properties" to change the size and resolution. You can always change it later but I like to set it up at the beginning of creating a project.

From there you can click "New Layer" just beneath the "Canvas Properties" button, and either create a new editable blank layer or load an image/vector/model as a layer. Each layer "type" allows for different editing opportunities. Paths-layers don't directly affect the canvas and are for generating layers that do have a physical effect on the canvas. There is a lot more detailed information about everything in the User Guide which you can access via the Help menu.

Let me know if you have any specific questions about any of the buttons and functionality.

Glad to hear you were able to make progress working things out. The log file indicates that you're cooking with gas now on your Nvidia GPU :)

It didn't occur to me you were on a laptop until I looked up your exact CPU so you likely only have the one video output port on there. I had it in my head that you were on a desktop rig with the Nvidia GPU plugged into the motherboard adding video outputs. I've seen instances where people with a decent GPU in their rig using the onboard graphics because they had plugged their monitor into the motherboard instead of their GPU - so I was thinking maybe that's what might've been the situation you were dealing with but it still wouldn't explain why the onboard Intel HD GPU wasn't able to run PixelCNC properly because it should be completely able to run it just fine - albeit a bit slower.

As a new user test-driving PixelCNC please feel free to share any feedback, any issues, ideas, suggestions, etcetera that you have. Everyone's input is valuable. A lot of great suggestions have culminated in what PixelCNC is now today and what it will be with v.144's release soon.

Getting to beta has been the main focus as of recent - which entails implementing the rest of the planned list of features. Once PixelCNC is in beta there will be a bit of a gear-switch taking place and we'll be working on learning materials such as tutorial videos and the such, so keep an eye out over the coming months. Any significant developments will be conveyed via PixelCNC's automatic update system - so as long as you at least run it once in a while you'll be apprised of the latest happenings as updates are released.

Thanks for your interest in PixelCNC!

(3 edits)

Great! Alright I'm seeing exactly what the problem is - PixelCNC isn't utilizing your GTX 1050 but instead the Intel HD 630 and encountering out-of-memory errors while trying to load up the UI text fonts.

I'll have to write some code in there to let the user choose which one to use if there are more than one - for now you should be able to tell Windows to force PixelCNC to use your Nvidia GPU instead of your onboard Intel HD by following the steps in this article:

What's bugging me is that your Intel HD 630 should be plenty capable - it's new enough and supports all of the required functionality but for some reason it won't let PixelCNC allocate any space on it for rendering anything (specifically reporting OUT OF MEMORY every time a texture of any kind and of any size is being created). I'd like to try and figure out what the situation is there but for now you should at least be able to get up and running if you force it to use your other GPU.

EDIT: You also might want to check that your monitor isn't plugged into your onboard graphics. Forcing Windows to use the other GPU won't work unless your monitor is plugged into it - rather than your motherboard. If your monitor has been plugged into your motherboard this whole  time then you haven't been using your GTX 1050 for anything yet. You shouldn't have to force PixelCNC to use the other GPU if your monitor is plugged into the Nvidia one, all programs should automatically use it for hardware rendering.

I'm pretty sure your antivirus software is blocking PixelCNC (which is an "unsigned executable") from accessing its own files though a peek at the complete log file would give more information. I don't think all three are responsible, and that it's only one of them that's the culprit - possibly HitmanPro which is meant to prevent ransomware from accessing and encrypting your files - by simply blocking all unsigned executables from accessing anything. You should be able to add PixelCNC to a whitelist or "allowed" list of programs.

Before you do anything go ahead and paste a logfile to and paste the link it generates here so I can view the log in its entirety. If PixelCNC is able to generate a config file and a log file I can't imagine it wouldn't be able to at least read its font image files but something appears to be preventing it - or preventing it from utilizing the GPU properly.

No, PixelCNC does not yet "install" itself, not until we've reached the beta phase of development. If you ever want to remove it you simply delete the PixelCNC folder and any shortcuts to the EXE you've made.

Well it didn't make an error but it also isn't showing the image. The forum where we can't post if images are in our posts is at:

A user tried to paste a screenshot for a product of mine in the forums and received an error when they tried to post. I tried to paste an image in a reply and received the same error: "body: expected text between 1 and 20480 characters"

Lets see if I can paste an image here and post it: 

The log file might not "fill up" until after PixelCNC has exited - Windows likes to buffer writes to disk and unfortunately when I forced Windows to not buffer writes to the log file Windows 10 would do it very slowly. Try checking the most recent log file after running and closing PixelCNC and there should be more information in there we can examine. You should be able to post screenshots in forum posts just fine, whether by pasting from clipboard or saving the image to disk and uploading it using the little image icon in the forum post toolbar.

I am assuming you extracted all of the files and folders that came in the ZIP file into a folder on your computer. It could potentially be where you unzipped the files to that Windows isn't happy about. Where did you extract all of the files/folders from the downloaded ZIP to on your computer? You could try putting all of them in a folder on your desktop and run it from there. The desktop might be more friendly (or any of the user accounts folders like Documents). Another idea is to try making a PixelCNC folder directly on your C: drive and put all of the files in there to see if it will run then.

Are you running PixelCNC in a Windows emulator of any kind - like WINE or Parallels? PixelCNC's multithreaded GPU utilization is something that apparently isn't supported very well by anything other than native Windows - we're working on getting setup for native Linux/OSX ports after PixelCNC reaches beta in the next few months.

Can you find out for me what GPU driver you're running (via Device Manager, under Display Adapters) under the Driver tab on your GPU's properties. (something's definitely wrong with the forum, I can't post with an image now too, doh!)

The log file should be outputting it, so check if PixelCNC spits out any more information in the log file (it will have hundreds of lines if PixelCNC successfully writes to the log file, which I haven't seen it not do yet). Also, are you running any kind of anti-virus that might be blocking unsigned binaries? That's a thing reported from a few users too.

Hi Mike,

 There may have been an issue with the earlier versions of the automatic update system that encountered a problem while installing a newer version on your computer. If you bought PixelCNC with the account that you're logged into the website with you should be able to download the latest version from the main page - scroll to the bottom of the page for the downloadables that are available.

The link paths works between concentric cuts which differ in horizontal position. It prevents retracting to Z between concentric cut moves that the cutter could make a short horizontal move to move to. Cuts that differ in Z are not linked because it's easy for there to be situations where you don't want stray cuts directly moving from the end of one horizontal move to another one that's at a deeper level.

In the situation where you have a parallel operation before a horizontal milling one, rest-machining only works with the horizontal operation if the parallel operation has left any significant material behind.

 I think what would be ideal for the horizontal finishing operation to have the angle threshold you mentioned. You could use a horizontal operation to rough out the material, with a large step-over, cut depth, and a non-zero leave-stock amount. Then use the horizontal finishing with an angle threshold to prevent cuts from being too far apart (or maybe auto-detect the angle using the cutter geometry and cut-depth?). Lastly, use a parallel operation with rest-machining to carve the remaining flat areas that were left by the first horizontal roughing operation.


  1. Horizontal roughing with a leave stock
  2. Horizontal finishing with steep-only angle threshold
  3. Parallel finishing with rest-machining and distance-sorting enabled, to finish the flatter areas

I'll make sure to add an angle threshold that is gray until step-size is zeroed out before v1.44 is released.

Oh yeah, and cut distance sorting only works with the horizontal milling operation if rest machining is enabled - and there are cuts that are omitted because the material has already been removed by a previous operation. The cut sorting also only works within each Z layer of cuts, so that it doesn't start milling deeper and deeper before higher areas have been removed, which would violate the users' specified cut-depth.

I'm curious to see what you manage to pull off :)   and expect v1.44 in the next few weeks, I have a handful of things left to add and then pretty much all the major stuff will be in there and I can start changing gears to creating learning resources and example/demonstration videos and projects.

Hi Eric,

You could try combining the horizontal milling with a shallow cut depth and the cut step size set to zero. Setting the cut step size to zero triggers a separate mode which only generates paths that adhere to the canvas' geometry, a sort of "horizontal finishing" mode. I think it might be useful to include an angle threshold with this feature. I'll play around with it and see what I can do.

Flat areas will still need special treatment. You could try using rest-machining with a parallel milling operation, enable cut sorting as well to minimize total rapid distance. With rest-machining enabled it will avoid cutting areas already cleared by the horizontal finishing.

Let me know how things work out :)

(1 edit)

The instructions for how to create/edit paths can be found via the question-mark button next to where it says "Edit Paths". There is also a complete table for all the editing controls in the User Guide.

EDIT: Yes, the grid is tied to the units. It tells you what your grid subdivision is set to in the status bar when you increment/decrement the subdivisions using the buttons on the view button bar.

(1 edit)

Create a paths-layer and then enable edit-paths mode.

EDIT: The UI is pretty much staying as-is, it's been under development for 3 years and while there are some things I wish I had in mind earlier during development the plan now is to finish the major features and get to beta sooner rather than later so we're going to go with a built-in help/tutorial/walkthrough mode that hilights what users must do in order to achieve different things. Have you looked at the included User Guide? It documents everything the UI exposes to users and explains a lot. It's updated for each released version.

Here's the steps leading up to the end:

...Then just increase the freshly created raster-layer's "Background Z" to be at the top of the canvas, and invert the layer (both on the right-side of the window when a raster-layer is selected) which results in the original image I uploaded. Then create a new operation just like the original one but when you generate a cut-path it will leave everything else alone and only generate cuts within the area masked off the rest of the canvas. You're just changing the contents of the canvas so that generating a cutpath won't cover the entire thing anymore. You might need to set your minimum cut Z depth to something like 0.001 depending on the operation, so that it doesn't generate cutpaths across the top of the canvas (which it might if min cut depth is set to zero).

There's currently no means of restricting toolpath generation other than with the canvas' volume. You can use a raster-layer to mask off areas of the canvas so that generating a toolpath only occurs in the un-masked area. Create a paths-layer and draw a path around the area you want to mask off, then use the Shapes From Paths function to create a flat shape. Invert the resulting raster-layer and change it's background Z to the top of the project, so you have something like this:

That's an idea. I do have experience writing recursive-descent expression evaluators so it won't be a hugely complicated task to add in there. What does the tab keypress do? In PixelCNC it jumps to the next editbox (which was requested previously by another user).

I think what might be useful for this sort of thing would be a medial-axis carving option that lets the user just manually set a fixed max-depth where the cutpaths don't vary in depth based on the width of the form and the cutter shape - like in the case with V-carving/B-carving. Instead, the cutter follows the medial-axis as with V/B-carving but just treats it like the profiling operation, where the user can toggle between varying cut Z to retain the shape of the form being carved, or if they just want a cutter to follow the medial-axis and specify a maximum radius/distance from the edges of a shape to allow it to travel - which currently is determined by the radius of the cutter itself. Hrmm, just thinking out loud. It would effectively allow the medial-axis carving operation to function like a profiling-along-centerline of the canvas' shapes and forms.

Ok, all systems go.

So the first option involves using the medial-axis operation. You could load the image as a raster-layer and then use the expand/contract function in raster-edit mode to beef it up (disable the "Expand Vertically" toggle on there to keep everything at the same height). Then invert the layer and generate your medial-axis carve off of that. You might need to raise the background Z height of the layer to the top of the canvas, if the canvas is larger than the raster-layer, otherwise the edges  of the layer will have cutpaths generated off them as well. This method requires manipulating the medial-axis operation via the cutter's geometry. You could just tell it to generate with V-bit geometry but actually use a different bit, like a ball-nose cutter or flat endmill.

Alternatively, you could trace the raster-layer to a paths-layer with a bit of a contouring offset so that the inner/outer paths generated are spaced a bit, and it will also resolve any little gaps there might be in the input image. Then you can use the Shapes From Paths with the paths-layer selected, or individual paths in the paths-layer selected while in path editing mode, to generate a flat shape, basically extruding the paths. You can profile off of these using the profiling operation then.

Here's an example project I just made for you to check out:

Profiling Example Project

Hi Eric,

 There's two options, I just tried to reply explaining them but this site hasn't been working very well on my end lately so I'm just testing being able to reply right now. Testing 123...