**PixelCNC v1.69b - User Guide**
Last Updated: 12/19/22
This guide is meant to help users become oriented with PixelCNC's user interface and familiarized with the various options and parameters that are made available through it. This guide also provides insight into different parameters and settings, usage tips and strategies, and potential pitfalls to watch out for. This guide is not meant to serve as a step-by-step tutorial or walk-through for new users who are inexperienced with the conventions of CNC machining/routing and CAM software in general. Instead, it is provided as a reference to the user interface itself for users who are relatively comfortable learning how to use a new program, and experienced with CAM/CNC concepts and principles.
PixelCNC's interface is designed to streamline the creation of a project into an easily navigated step-by-step process that aims to avoid sacrificing control over how toolpaths are generated. Instead of omitting options and parameters to simplify the interface they are instead organized in an intuitive manner. This reduces PixelCNC's learning curve, making it more approachable for users of all levels of expertise.
Visit our YouTube channel https://youtube.com/@deftware1 to find tutorials and project how-to's. If you have any requests for tutorials or need help using PixelCNC please feel free to send us an email at email@example.com and we'll get you right up to speed!
User Interface Overview
The layout of PixelCNC's interface divides it up into several parts - most of which are accessible to users at any point in time, either directly or via a mouse click or two. The key components of the interface are: the menubar at the top left of the window, the 'Project Mode' buttons situated immediately beneath the menu, a set of 'View' buttons along the top of the 3D view, and a program status bar along the bottom of the window for conveying notifications and information about the program state that may be useful. The status bar includes a 3D coordinate readout for the point on the canvas or simulation that's at the mouse cursor's location, which can be useful for canvas editing and determining cutting parametes for operations.
The 3D view comprises the area behind the 2D user interface where users are able to view and edit their project's canvas, inspect their operations' generated toolpaths and their cutpaths' simulation.
The PixelCNC interface exposes everything that a project consists of in a hierarchical fashion. One or two interface 'panels' can be visible at any given time. There is always at least one panel on the left side of the window and depending on the program state, a panel may also be visible on the right side of the window as well. These panels constitute selected project modes and any other selections the user has made while in one of the different modes. UI panels expose everything to the user that can be interacted with for creating and working on projects. Each mode is intended to allow users to work with one aspect of a project at a time.
These project modes comprise the core of PixelCNC's interface and the intended overall workflow for creating a project. Users start by creating their project's canvas using canvas "layers". Layers can be created by importing existing media from disk, generated from other layers or the canvas, or created from scratch by-hand. Layers can then be composited together on the project's canvas which toolpaths are generated from. Users can then define their cutting tools and their project's CNC operations to generate toolpaths and view them in the simulation mode. A project's operations can be exported using one of the included G-code post-processors, or users can easily tailor one for their specific CNC controller. Anyone who needs help creating a post-processor can email us at firstname.lastname@example.org and we'll work with them to create a usable working post-processor for your machine's CNC controller. This usually takes less than a day.
PixelCNC's mode-centric interface streamlines the workflow into a sort of step-by-step process without confining the user to progressing through the "steps" in a strictly linear fashion. Users can freely switch between modes in any order to make changes, adjustments, or tweak the different parameters of any aspect of a project as needed. This interface design is meant to ensure flexibile control over a project without hindering productivity.
The 'File' menu provides user with commands for working with project files and exporting G-code.
### New Project ###
Discard's the currently open project, which includes the canvas, layers, tools, operations, toolpaths and simulation, and returns PixelCNC to a blank project state. If the user makes changes to the current project after saving it, or opening it from disk, the user will be prompted as to whether or not they wish to discard their changes when creating a new project.
### Open Project ###
Opens an existing PixelCNC ".PNC" project file from the file system. As with creating a new project this too will prompt the user first if they are about to discard unsaved changes to the current project. An Open Project button is also shown on the button bar along the top of the program window.
### Save Project ###
If the currently open project has already been saved, or opened from an existing project file on disk, this can be used to quickly save the current project instead of using the Save Project As function, which requires selecting a file to save to on disk. This menu option is grayed out if the current project has either not been saved yet or no changes have been made to it.
### Save Project As... ###
Opens a prompt that allows the user to choose where to save the current project file.
A project file is a self-contained PixelCNC project file with the ".PNC" filename extension. Project files comprise: canvas layers, defined tools, defined operations, generated toolpaths, and simulation heightmaps. All project data is stored in the project file, independent of any source media that was used to create it. This includes text-layer TrueType/OpenType fonts and model-layer geometry. Project files created using older versions of PixelCNC should be openable using newer versions but they are not backwards compatible - older versions of PixelCNC will not be able to open projects that were created using a newer version, unless the project version itself is the same between them.
!!! : Free Trial
Saving of project files is disabled in the free trial of PixelCNC.
### Export G-code ###
This opens the Export G-code dialog where users can select their G-code export mode and set any other pertinent options before choosing a filepath to save one or more exported ASCII text G-code files to, which can then be sent to a CNC controller to be run on a machine. Only "write-enabled" operations are included in outputted G-code, regardless of the G-code export mode used. Operations have their "write-enabled" flag active by default upon creation. (See the Project Operations Mode section for more information)
The G-code export modes and other options available are as follows:
: This shows the currently selected G-code post-processor. Clicking this button allows users to select a different post-processor to be used. It is critically important that the correct post-processor is used when exporting G-code that's intended to be run on a specific machine as different CNC controllers are compatible with - and expect - different types of G-code. Post-processors (or 'posts') enable CAM software to translate and format generated G-code to conform to the specific dialects that different CNC controllers operate on. Users can access the folder where posts are stored via the File menu by selecting 'View Post-Processors' in the event that a modified post or new one obtained elsewhere is needed. If modifying an existing post users should always make a copy of the post and modify the copy instead. The included posts should never be directly modified! (See the View Post-Processors section)
Open G-code After Export
: PixelCNC will automatically open newly exported G-code files for viewing and/or any additional editing that the user may want to perform by-hand when this option is enabled. G-code files will open using the default established program in the operating system for the G-code file extension used. The operating system may prompt the user asking which program should be used to open exported G-code files. When chosing where to export G-code the post-processor's specified G-code file extension will be used. Users may also chose one of the default file types from the file-path selection dialog, or specify an entirely unique one manually in the file name field.
Export Operations Individually
: Exports each operation as a separate G-code file which can be run independent of other operations. This is useful if users need to make manual tool changes or inspect the workpiece between operations.
Export Operations Per-Tool
: Exports consecutive operations as combined G-code files based on whether or not they have the same tool in common. This is intended for projects that require manual tool changes.
Export Operations Combined
: This option is intended for machines which employ automatic tool-changing capability, or projects whose operations utilize a single cutting tool. Projects with multiple operations employing different cutting tools should use this option if the CNC machine running the resulting G-code features an automatic tool changer and the correct tools occupy the indexes their definitions the user specified their parameters to under Project Tools. It is important that the selected post-processor has the "UseToolChange" parameter enabled in order for tool-change command blocks to be included in exported G-code. Users may need to use an existing post as a base for creating a custom one which includes tool changing. (See the View Post-Processors section)
2D Operation Repetition
: Exported G-code can duplicate operations' toolpaths a specified number of times along the X and Y axes to cut a grid of multiple projects simultaneously. Each repetition is offset by a multiple of the canvas size to where leaving the spacing parameters at zero will duplicate operations with no spacing between repetitions. Repetitions are ordered to travel in a winding S pattern, from left-to-right on odd-numbered rows and right-to-left on even-numbered rows, to prevent what would otherwise be unnecessary rapid moves back to one side of the repetition rows.
The G-code file(s) generated will be formatted in accordance with the selected post-processor. Projects do not need to be created in the units that a user wishes to run on their machine. The measurement units of a project are converted to the units indicated by the selected post. This is useful for users who have a millimeters-only machine but would rather work in inches, or vice-versa.
### View Post-Processors ###
Opens the folder where PixelCNC G-code post-processor files are located to allow users quick access for creating and modifying their posts. Users can create new post-processors if their CNC controller is not compatible with the ones provided by using an existing one as a template for creating their own. It's recommended that the included posts are not directly modified, but instead copied to a new text file within which modifications are made. See the Export G-code section above for more information.
Edits should never be made to the original included post-processors as they may be replaced by a future automatic update and users will lose their changes. If a user modifies one of the included posts and it is subsequently replaced during an automatic update it may export G-code which is not as they intended, potentially leading to adverse outcomes. Always modify a copy and not the original post-processors themselves.
Users can create their own posts for their CNC controller by familiarizing themselves with the controller's G-code specification (usually found on the manufacturer's website) and adapt one of the existing posts accordingly. PixelCNC's post-processor system is meant to be very simple to understand so that anyone can create their own for just about any CNC controller they might encounter. Posts include documentation in the form of comments to help users create their own for different CNC controllers. Alternatively, users can request a post for their specific controller if none of the included posts are compatible. Users who create new posts for different controllers can submit them for inclusion in future PixelCNC releases. To have your post-processor included in a PixelCNC release, or to have one made for your controller, please feel free to email us at: email@example.com
### View Log Files ###
Opens the folder where PixelCNC outputs all of the log files that are generated for debugging purposes. If users encounter problems with PixelCNC they can email their most recently generated log files to firstname.lastname@example.org along with a description of the problem and the steps to reproduce it. Screenshots are also very useful when debugging issues and are also generated to the log files folder, named with a timestamp and the operation number and name.
The 'Config' menu provides users with access to all of PixelCNC's options and settings. From the Config menu the following dialogs and options are accessible:
### Predefined Themes ###
PixelCNC is equipped with built-in interface 'themes' to allow users to quickly modify the coloration and appearance of visual elements such as the UI and the contents of the 3D view. While these colors can be individually customized via their respective dialogs (UI Settings and View Settings), themes enable users to quickly choose an existing color scheme that best suits their personal preference. From there users can then customize PixelCNC's appearance and coloration further, or use the chosen theme as-is.
### UI Settings ###
The UI Settings dialog allows selecting different built-in fonts for the interface's text, and its coloration, as well as the coloration of the user-interface itself. There are also a few toggleable UI options included in the dialog that users can adjust to their preference as well.
: Sets the size that text-layer editing's Character Map dialog will generate and display previews for each character of the currently selected font. This can be reduced if characters are too slow to generate, or increased to improve the clarity and visibility of font characters.
Show Keyboard/Mouse Inputs
: Enable this option to display user inputs onscreen along with a cursor hilight to increase visibility. This option is used for recording tutorials and how-to videos to help viewers understand what inputs are being used.
Most numeric value parameter edit boxes also allow entering mathematic expressions. Expressions are evaluated and the calculated result replaces the expression the user has typed upon pressing enter or the edit box otherwise loses input focus. Expressions can contain simple arithmetic, exponents, math functions, and parentheses.
### View Settings ###
The 'View Settings' dialog contains options and settings for the default coloration, line thicknesses, and scaling factors that are used to render the contents of the 3D view. This dialog also provides some other options for controlling the 3D view and its behavior. Less self-explanatory settings are detailed as follows:
Default (Color) Curves
: These adjust how the two colors chosen for rendering the canvas and simulation are mapped to height values. This is useful when trying to visualize halftones, for instance, where only the very top of the simulated stock material should consist of the top color, while the rest of the material should be the bottom color.
: Controls the pixel-thickness of volume edge lines that are drawn for the canvas and its layers.
: Controls the pixel-thickness of paths-layers' contents as well as that of CNC operations' toolpaths.
: Controls the pixel-thickness of the Z.0 plane's grid lines.
: Adjusts the amount of shading to apply to the canvas and simulation heightmaps.
: Adjusts the shininess or glossiness of the canvas and simulation rendering.
: This setting controls the field-of-view, in degrees, of the 3D viewport when in perspective-projection mode which is toggled via the projection mode button that's situated among the view-buttons at the top of the 3D view, appearing as a birds-eye-view of a grid. This option does not affect the view when in orthographic projection (the default mode).
: Sets the maximum framerate of PixelCNC's interface and 3D view. Decreasing this value can conserve laptop battery life and reduce GPU utilization, at the expense of interface and 3D view responsiveness.
: Sets the maximum amount of available system performance which is used to update PixelCNC's interface and render the 3D view. This has a direct impact on the compute resources that are available for background tasks such as: updating the canvas when manipulating or editing layers, the generation of layers, calculation of toolpaths, and simulation updates.
Fast View Update
: For systems with less powerful graphics hardware this option will draw a simplified version of the project canvas and CNC simulation heightmaps when users manipulate the view camera position/orientation or when modifying the canvas' contents. This is to improve 3D view interaction responsiveness on slower systems. The view will update with a full geometry render automatically when each interaction is concluded.
Swap Camera Buttons
: This swaps the left/right mouse buttons' roles in manipulating the 3D view. The default mouse button configuration designates the left mouse button for panning the 3D view while the right mouse button rotates the view. Rolling the mousewheel will incrementally dolly or zoom the view. Click-dragging the mousewheel as a button allows for immediate dolly/zoom input.
: This will draw smoothed lines for the 3D view's grid, canvas/layer volume boundaries, paths-layer paths, and toolpaths.
GPU View Buffering
: PixelCNC conserves compute resources by only redrawing the 3D view if the contents change or the camera's position/orientation change. This option enables the most recent rendering of the 3D view to be stored on the GPU (where it is produced) using a "FrameBuffer Object". This allows for fast copying of the view to the PixelCNC window when updating the 2D user interface each frame. Less powerful graphics hardware (particularly older Intel graphics) can have issues with framebuffer objects which may result in a variety of undesirable behaviors. If users experience crashes when minimizing the PixelCNC window they should try disabling this option - which will be slower when updating the 3D view but will function much more reliably. Modern graphics hardware is best utilized by keeping this enabled.
: Toggles whether or not rendering of the canvas and simulation uses filtered texturing. When filtering is disabled the individual heightmap pixels will be clearly visible, otherwise they are interpolated to provide a smoother appearance. This does result in severe aliasing when the camera is zoomed far enough from the canvas/simulation heightmaps and generally is best left enabled. Modern hardware generally does not benefit performance-wise from disabling texture filtering.
Boost Layer Contrast
: Applies a Laplacian convolution filter to raster/text layers when rendering their bottom-plane (when the layer is selected) to improve visibility by hilighting areas of heightmap contrast, such as edges and gradients. The contents of a layer are rendered at the bottom plane of the selected layer to improve users' ability to discern what contribution each layer is making to the overall canvas when many layers are composited together. Users running PixelCNC on slower systems may want to disable this to improve the speed at which the layer plane is able to be rendered to the 3D view as the Laplacian convolution for boosting contrast requires an extra compute step.
### CNC/CAM Settings ###
The 'CNC/CAM Settings' dialog exposes settings and options which affect working with a project's canvas and the generation of operations' toolpaths.
Project Measurement Units
: This setting controls the units of measure that new projects will be created with. This does not affect the units of any existing projects - PixelCNC will still load existing projects in the units they were created with. Exported G-code is in the units of measure indicated by the post-processor used, regardless of the project's measurement units due to the automatic conversion between project units and the units of the selected post-processor.
: This controls the resolution of the rendered canvas in the 3D view. This is *not* the same as the "Canvas Resolution" parameter (see the Canvas Properties section) which instead determines the actual pixel-density of the canvas which toolpaths are calculated from. The Canvas Quality setting indicates a fraction of the project's canvas resolution to render the canvas at, independent of the quality of generated toolpaths. Setting this to a value of 1.00 will render the canvas at its native resolution. Users should generally keep this value at its default unless their graphics hardware is extremely underpowered and rendering or updating the canvas during layer edits and compositing a project is slow.
: The canvas is rendered using a vertically stacked set of polygons to allow for fast updates to the rendered view without requiring re-generation of the actual geometry being rendered. This setting dictates the number of polygons actually used to render the canvas. This setting can be reduced to help increase rendering performance while the Canvas Quality setting can be decreased to increase canvas update performance. Neither setting affects toolpath generation - they pertain exclusively to the quality the canvas is rendered and updated at. The Canvas Geometry setting can be increased to reduce the amount of visual artifacts that maybe visible in the canvas rendering. Artifacts are a side-effect of the aforementioned fast render update method used and do not affect actual toolpath generation.
: This option causes layer modifications made within the 3D view to automatically be applied to the layer, rather than requiring the Apply button to be clicked on the right panel.
: Determines the minimum colinearity between line segments that is tolerated when generating toolpaths and contouring the canvas to generate paths-layers. Increasing this value sacrifices contouring smoothness by using fewer vertices which results in coarser contours.
Minimum Segment Length
: The minimum tolerated length for individual line segments when generating toolpaths and paths-layers. This should be kept as low as possible to ensure maximum path/toolpath resolution. In some situations this can be increased without sacrificing a noticeable amount of toolpath resolution but in the case of some CNC operations such as Medial-Axis Carving it's best to keep this as low as possible to minimize the amount of error in generated cutpaths. Paths-layers traced from the canvas, or from raster/model/text layers, will be affected in their overall accuracy, but this setting does not directly affect the minimum distance between path nodes, per se.
Maximum Segment Length
: The maximum tolerated length of individual line segments when generating toolpaths and paths-layer paths. A longer maximum segment length will result in G-code with less feed commands. This can also negatively affect the quality of toolpaths, allowing a greater upper limit to coarseness, and increasing this value will benefit if accompanied by a corresponding decrease in the Paths Simplify setting.
Users should avoid modifying the Simplify and Min/Max Length settings! Toolpath calculation can be highly sensitive to changes made to these parameters, causing undesirable results, poor performance, and other inconvenient behavior. They've been finely tuned to maximize both the quality and calculation time for CNC operations and their toolpaths.
Trochoidal Angle Step
: The trochoidal milling operations generate circular cut arcs that are a series of small linear cut feeds. This setting controls the angular increment for a cut arc's linear moves. The number of linear cuts along an arc is also modulated by the radius of the cut arc, allowing larger radius cuts to employ more individual linear cuts, and vice-versa. This is not a perfectly linearly scaling, otherwise all cuts would be the same length - which is not desirable when very small radii trochoidal cutpaths are generated.
: This is the top speed of the machine that will be running exported G-code, and is used for gauging an operation's runtime. This is in units of the currently open project.
: The acceleration rate of the machine that will be running exported G-code. This is also used for estimating the runtime for an operation's toolpath and is also within the units of the currently open project.
: DXF vector files, when imported, are converted to PixelCNC's internal cubic spline paths. As there is no direct one-to-one conversion for parametrically defined geometry to cubic splines, DXF entities must be approximated. This parameter controls the tolerated error when generating paths from imported geometry. A lower value will result in paths which more closely adhere to the source geometry by producing more path nodes to achieve a closer fitment.
: This parameter serves as a margin-of-error within which separate geometry will be joined together into a continuous path. DXF vector files may comprise lists of separate individual geometry that's not continuous, even though they appear or are intended to be. In the case where continuous geometry is defined using multiple separate entities there is nothing in the DXF format which indicates that the entities are supposed to be connected or joined to form continuous geometry. Deducing whether or not two entities should be connected to form a continuous path requires comparing their end-points to see if they share the same XY coordinates. However, some DXF files may not have exactly matching coordinates between pieces of geometry which are intended to be continuous. This parameter can also be thought of as an auto-healing or auto-welding threshold when importing DXF geometry.
: PixelCNC supports the loading and use of 3D models in a project by internally converting them to a heightmap on-the-fly when compositing them with the project canvas. A 3D model's edges may result in aliasing artifacts when rendered to a heightmap using a single sample per depth value. This parameter controls the number of samples calculated from model geometry to calculate each heightmap value, at the expense of compositing speed.
: Controls the allowed amount of system memory that can be used to store undo/redo canvas edits. Different edits use different amounts of memory. Editing a raster-layer's contents will use more memory than simply moving a layer's position around, for example. The number of undoable events varies depending on the type of edits made. Undo/redo does not apply to creating or editing tool definitions and operations or their parameters, only the project's canvas.
!!! : 32-Bit Memory Limitations
Users running the discontinued 32-bit version of PixelCNC may encounter memory allocation failures during toolpath calculations if Undo/Redo Memory is set too high. It is strongly recommended that users run the 64-bit version instead to avoid memory limitations (64-bit operating system required).
### Simulation Settings ###
This dialog controls the quality of simulated cuts and their rendering. These parameters control the trade-off between simulation fidelity, computation cost, and speed of simulation calculations.
: This controls the absolute dimensions of the CNC simulation's heightmap. Increasing this setting will yield a higher quality simulation while requiring more computation time. Decreasing this setting will produce a more coarse simulation that's less accurate while reducing computation and increasing the rate at which simulation playback can update. Most systems should keep this less than ~2048px as the cut simulation calculations become exponentially slower as this is increased, which could incur long simulation update times that give the appearance of the program hanging or freezing while calculations are performed. Increase this setting by small amounts each time to see how it affects performance (simulation won't update with new setting until 'Done' is clicked).
: Controls the geometric complexity of the rendered simulation. With the default slice-stack rendering method (when Raymarched Rendering is disabled) this setting controls the number of planes used to render the simulation volume. This should not affect the computation time required to calculate a simulation update unless rendering the simulation volume is taxing for the available graphics hardware. If the framerate drops (the Frames Per Second counter is on the right-side of the status bar) while the simulation is running, or when the camera is moving while the simulation is paused, users can try lowering the Geometry setting to reduce the load imposed on the graphics hardware.
When Raymarched Rendering is enabled the Geometry setting determines the resolution of the proxy mesh that serves as the surface from which rays are marched against the simulation heightmap. Increasing the mesh quality will increase the number of triangles being processed by the graphics hardware, which allows the proxy mesh to conform more closely to the simulation heightmap and decrease the distance rays must traverse to reach the underlying heightmap, reducing overall graphics computation. The optimal geometric-granularity/raymarch-distance balance will vary with the graphics hardware that's available.
: Controls the raymarched rendering mode's ray step-size increment. Increasing this will result in coarser and less accurate simulation rendering, while increasing performance and responsiveness when manipulating the 3D view. Older or slower hardware should keep this value higher when using raymarched rendering. This setting has no effect on rendering the simulation if raymarched rendering is disabled.
: This option defaults to being disabled which results in the CNC simulation utilizing the same slice-stack rendering method as the canvas. Raymarched Rendering directly marches rays for each view pixel against the simulation's heightmap to visualize the state of the simulation. This generally produces a more detailed rendering than the default slice-stack rendering method at a higher computation cost. Raymarched rendering can slow down the simulation playback if settings are tuned to maximize render fidelity.
Skip-to-End of Operation
: Toggles whether selecting an operation will set the playback slider at 100% or 0% completion. Users who prefer to first see the finished result of an operation should leave this enabled while those who prefer to see a live simulation when they select an operation should disable this option.
### Project: Auto-Backup ###
This option toggles whether or not projects are periodically saved to a temporary file on disk. These backups are automatically removed when exiting PixelCNC. A crash or system failure that occurs while using PixelCNC will cause a backup to remain on disk and the user will be prompted to recover the project the next time PixelCNC is launched.
The auto-backup functionality itself may interfere with regular use of PixelCNC. Most of these issues have since been resolved but if any users experience seemingly random crashes for no apparent, consistent, or reliably reproducible reason (typically when applying changes to a canvas layer or CNC operation) they should try disabling auto-backup to see if the crashes cease. Please report to us if this is the case by emailing us at: email@example.com
### GPU: Image Convolution ###
PixelCNC makes extensive use of image processing algorithms for canvas editing and when generating and simulating CNC operations. This option toggles whether image processing operations should leverage the system's available graphics processor or the CPU instead. Modern computers, generally those built after 2012, will have a faster GPU than CPU for image processing tasks. If a computer has slower-than-average graphics processing capability, and/or a high number of CPU cores, it is possible that disabling this option will improve PixelCNC's overall performance. In most cases it is best to keep this option enabled.
PixelCNC defaults to utilizing the GPU for image processing operations but will automatically disable this option and fallback to utilizing the CPU if it is detected to be faster. If this option is disabled by default it is because PixelCNC has determined that the system's CPU is more performant than the graphics hardware that is made available to it, for expensive computations. Laptops with both integrated graphics and a dedicated GPU may require users to tell Windows to use the dedicated GPU for PixelCNC as this is a common issue with these laptops when running programs that use available graphics hardware, and default to only allowing programs to use the underpowered integrated graphics unless the user specifies otherwise.
### Log: Debug Info ###
This option toggles whether or not more detailed debugging information is written to the log files PixelCNC produces. Logging extra information can hinder performance and slow down toolpath generation, simulating cuts, and canvas editing. Users should leave this disabled unless otherwise instructed if you are helping us debug an issue you're experiencing.
### Show Console ###
Toggles displaying the debugging console which displays what has been output to the logfile. Log files can be found by clicking "View Log Files" under the File menu. The console's contents can be scrolled via the mousewheel - and holding SHIFT in tandem will scroll larger steps. The console can also be toggled by pressing the F1 key as well. Enable logging debug info for more information to be output during all sorts of calculations. The console likely will not have much use for most people and is left in release builds as more of a novelty for the curious tinkerers and hacker types.
### Clear Tool Library ###
Users can save tool definitions to a persistent library to be re-used with other projects. Saving and loading a definition is performed using the folder and diskette icon buttons on a selected tool index when in the Project Tools mode. Up to 32 tool definitions can be stored to the tool library. This option will clear all tool definitions from the library.
### Default Configuration ###
This enables users to reset their PixelCNC configuration back to program defaults. This is handy if an important setting was changed and forgotten about but has caused problems. This does not affect the user's tool definition library.
The 'Help' menu is where users can access information about PixelCNC and its use.
### User Guide ###
This user guide which serves as a reference for PixelCNC's interface and usage.
### Known Issues ###
A list of the known issues affecting the current version of PixelCNC.
### Version Changes ###
A list of all changes made for each version of PixelCNC.
### Example Projects ###
Opens a downloads page on the Deftware website where example PixelCNC project files can be found for users to look at and learn from.
### YouTube Channel ###
Opens the Deftware YouTube channel where tutorials and walkthroughs for PixelCNC and other software can be found.
### Messageboard ###
Opens the public forum (forum.deftware.org) for users to ask questions, receive support, help others, and show off their PixelCNC projects.
### Visit Site ###
Opens the Deftware website (www.deftware.org) using the system's default browser.
### Check for Updates ###
This option lets users manually update to the latest PixelCNC version if they declined to apply the update when previously prompted. Users will be prompted to update again if a new update version becomes available, regardless of whether or not previous updates have been declined. Users who decline multiple updates will only be required to download and install a single update to be brought up to date with the latest released version of PixelCNC.
!!! WARNING: Auto-Update System
The auto-update system requires further testing across a wide range of system configurations. If users encounter any problems while PixelCNC is installing an update please share information about your computer system and your experience with the auto-update functionality by sending an email to firstname.lastname@example.org
### About PixelCNC ###
Displays information about PixelCNC as well as some version/date and attribution information about 3rd party tools and resources used.
!!! : Free Trial
When running as a free trial PixelCNC will also show Purchase PixelCNC and Activate PixelCNC options in the Help menu. The purchase option takes users to the PixelCNC Product Key page to purchase a unique product key that can be used to activate PixelCNC and remove the free trial mode and its restrictions.
At the top edge of the 3D view is the 'View Toolbar', consisting of some buttons for manipulating various aspects of the 3D view. The view toolbar presents a few buttons for various 3D view related controls and toggles:
### New Project ###
Quick access to the same function that's accessible from the File menu for creating a new empty project.
### Open Project ###
Another quick access to the same function that's accessible from the File menu for loading an existing project file from disk.
### Save Project ###
Opens the Save As file dialog for projects which have not been saved yet (and weren't opened from an existing project file) to allow the user to choose where to save the project file on disk. If the project is already associated with a known project file this button will automatically save the currently open project to that file, without prompting the user to choose where to save. The CTRL+S hotkey combo can also be used to quickly save a project, automatically opening the Save As dialog if the project has no known filepath. Otherwise it will simply save the file to the known filepath if the project has one.
### Export G-Code ###
Opens the G-code exporting dialog, the same as when selected from the File menu. The CTRL+E keyboard shortcut can also be used to open the G-code export dialog.
### Home View ###
The view-homing button is shown with a small home icon. Homing the vew resets the camera position and dolly/zoom to fit the current project within the view at an oblique perspective.
### 2D/3D Mode ###
The 2D/3D mode toggle allows switching between allowing the user full 3D camera control or locking the camera's orientation to a top-down view, and restricting control to panning around the XY plane. This will also disable perspective projection and revert back to an orthogonal projection.
### Orthogonal/Perspective Projection ###
The projected-grid button toggles between orthographic and perspective 3D projection modes. Orthographic projection is helpful for discerning exact proportions without the distortion of a perspective projection. The field-of-view of the perspective projection mode can be adjusted from the View Settings dialog in the Config menu.
### Toolpath Visibility ###
This button toggles the drawing of toolpaths. All operations' toolpaths are rendered unless an operation is selected which will render only that operation's toolpath. Toolpath visibility is automatically re-enabled when an operation is re-calculated.
### Toolpath Occlusion ###
Cycles through three different rendering modes for sections of toolpath which are occluded by canvas/simulation surfaces in the 3D view. Hiding occluded toolpaths can help to make a complex toolpath easier to visualize by obstructing sections which lie beneath geometry (such as before a selected operation's cuts have been performed while in the simulation mode). The occluded toolpath rendering mode applies an alternate rendering style to the obscured sections of rendered toolpaths to visually differentiate between sections that are above and below/behind surfaces. The last mode renders the entirety of a toolpath regardless of where it lies relative to surfaces.
### Show/Hide Grid Plane ###
Toggles rendering of the XY grid in the 3D view. Does not affect Snap-To-Grid's effect when modifying layers or editing their content.
### Snap-to-Grid ###
Toggles snapping to the visible grid when manipulating or editing canvas layers.
### Increase/Decrease Grid Subdivision ###
Controls the grid plane subdivisions.
### Undo/Redo Canvas Changes ###
Undo or redo changes that have been made to the canvas or its layers, and their contents while in their respective editing modes. The keyboard shortcuts for undo and redo are CTRL-Z and CTRL-R, respectively. These UI buttons are disabled when not in PixelCNC's Project Canvas mode, changes made to tools and operations cannot be undone/redone. See the CNC/CAM Settings section for changing the size of the undo/redo memory buffer.
The 3D view is where the project canvas, generated toolpaths, and CNC simulation are displayed per the selected project mode. It comprises an XY plane grid at Z=0 (in machine space) and red/green/blue XYZ axis lines situated with their intersection at the project's machine origin (X0Y0Z0).
The 3D view position and orientation can be panned and rotated by clicking and dragging the mouse buttons in the view area. Scrolling and click-dragging the mouse wheel performs zoom/dolly. The pan/rotate functions of the mouse buttons may be swapped by toggling the "Swap Camera Buttons" option found on the "View Settings" dialog.
There are four project mode icon-buttons at the top-left of the PixelCNC window situated below the menubar. Each mode exposes a different set of options, parameters, commands, and functionality to the user for working with the different aspects of a project. Users first design their project in the "Project Canvas" mode, define their cutting tools with the "Project Tools" mode, define CNC operations that employ the defined tools with the "Project Operations" mode, and preview a simulation of their operations with the "Project Simulation" mode.
While project modes are organized in a logical stepwise fashion users are not required to finish working within one mode before moving to the next. Users can freely navigate between the different project modes as needed except when they're disabled during toolpath calculation and live simulation playback.
Project Canvas Mode
The left-most project mode button resembling a stack of squares within a dashed selection-rectangle allows for creating project's "canvas". A project's canvas is the input that its CNC operations generates their toolpath from. (Some operations support using the cubic spline paths of canvas paths-layers as input for generating toolpaths as well.) The Project Canvas mode is the default project mode when PixelCNC is started, and when a new project is created, or an existing one is opened from the file system.
From the canvas mode users can setup their project's canvas and add/remove/edit "layers" which serve as the contents of the canvas, similar to the layers in a Photoshop image. Layers can be created by importing several media types, generated using built-in layer generation functions, or by hand-crafting them from a blank layer (except model-layers, which can only be loaded from a 3D model file). Layers can be positioned, scaled, rotated, and blended together in different ways. Raster, paths, and text layers all have corresponding editing modes, each with different features and functionalities. While in other project modes the canvas is treated as a fixed composition that cannot be edited while in those modes. Any changes to the canvas or its contents can only be made from the Project Canvas mode.
While in the Project Canvas mode options and functions for working with the canvas and its layers line the left-side of the PixelCNC interface. These are as follows:
### Canvas Properties ###
This activates a UI panel on the right side of the window for specifying the project canvas' parameters.
: The project canvas resolution is specified in pixels-per-inch. This value directly impacts the amount of computation involved when editing the canvas, and its layers, and when generating toolpaths. Users should be conservative with their project's canvas resolution to avoid excessive computation which can impact performance and result in longer wait times for certain functions. 100ppi is the default value and should be acceptable for most medium-to-large projects. Smaller projects such as jewelry engravings will likely need to increase their canvas resolution. The maximum allowed is 1000 pixels/inch.
X/Y/Z Size and Origin
: Here the dimensions of the canvas volume and where within it the machine origin are specified. The vertical Z size of the canvas as specified here ultimately determines the max depth that any generated toolpath will be allowed to cut. Operations cannot produce toolpaths which cut deeper than the Z-size of the canvas, their maximum cutting depth is limited to the Z size of the canvas.
The XYZ Origin values indicate where the machine-origin is relative to the bottom-front-left of the canvas volume. This is the point within the canvas that generated G-code considers as X0Y0Z0 and should match where the physical CNC machine is zeroed out at before running.
Machine Origin Percentages
: These value knobs allow users to also adjust the project's machine-origin as a percentage of the canvas volume's dimensions, rather than entering it manually into the XYZ Origin edit-boxes as absolute values. Modifying the origin percentages automatically updates the XYZ Origin values. These values are percentages of the canvas' size making it simple to set the origin to the center or any of the extents of the canvas volume. Setting these values to 0% will place the machine origin at the bottom front-left corner of the canvas volume. An origin with the XYZ percentages at 100% will put the machine zero at the top rear-right corner of the canvas. The diagrams below illustrate the way that the machine origin changes with different XYZ percentages:
* X,Y,Z = 0%,0%,0% X,Y,Z = 50%,50%,100% X,Y,Z = 100%,50%,0% *
* o-----------o o-----------o o-----------o *
* / /| / /| / /| *
* / / | Z / * / | Z / / | Z *
* / / | / / | / / | *
* o-----------o | o-----------o | o-----------o | *
* | | o | | o | | o *
* | | / | | / | | / *
* | | / Y | | / Y | | * Y *
* | |/ | |/ | |/ *
* *-----------o o-----------o o-----------o *
* X X X *
: The default canvas "background" height which layers are blended with. This is an absolute value with zero corresponding to the bottom of the canvas volume. Buttons are provided on the right-side of the Z-Fill editbox for automatically setting the value to the top or bottom of the canvas volume.
: Sets the colors used to render the canvas. One color corresponds to the top canvas plane and another color corresponds to the bottom canvas plane.
: Controls how the two canvas colors are mapped to height values by "bending" the mapping toward one color or the other.
: Applies any changes made to the project's canvas properties. Changes will not take effect until the button is clicked. Any existing operations will need to have their toolpaths re-calculated.
: Discards any modifications made to the canvas' properties, retaining its existing state as is visible in the 3D view, and closes the Canvas Properties panel.
### Create Layer ###
Opens the Create Layer dialog where new layers can be created from media loaded from disk or as new blank layers. Layers can be created from media such as 2D raster images, 2D vector graphics/geometry, and 3D model geometry.
Functions for generating new layers from existing layers, or the canvas as a whole, are accessible via the left UI pane under Canvas Actions, and under Layer Actions while a layer is selected. Some functions are only accessible along the UI pane on the right side of the interface while a layer's editing mode is enabled.
There are four different canvas layer types, each with a different purpose and usage for creating the compositions that comprise a project's canvas:
+ Raster-Layers: a heightmap either loaded from an image, generated from a paths-layer, copied from a model or text layer, or created from scratch using raster editing functions.
+ Paths-Layers: a set of 2D cubic spline paths for representing shapes, curves, polygons, etc. Paths-layers do not have any direct impact on the canvas the way other layer types do. While they do not directly affect the canvas composition they can be used as input to some operation types for generating toolpaths from, in lieu of the canvas itself being contoured for generating toolpaths. Paths-layers are generally intended to be used as an intermediate 2D vector representation which a variety of different shapes and forms can be generated from as raster-layers. Paths-layers can be loaded from vector-images, traced from raster/model/text layers, or created by hand with the path editing function.
+ Model-Layers: are 3D geometry that can only be loaded from a 3D model file and do not have an editing feature. These function similar to raster-layers with the exception that they can be rotated freely and their geometry can be axis-swapped and mirrored. Model-layers can be duplicated as a raster-layer for editing with raster editing functions.
+ Text-Layers: text content that uses TrueType/TTF and OpenType/OTF fonts found installed to the operating system. Text-layers composite with the canvas just as raster-layers do. Text-layers can be duplicated as a raster-layer for editing with raster editing functions.
!!! : Fit to Canvas Option
Loading an image/vector/model to a layer includes an option on the Create Layer dialog to toggle whether or not the native geometry scaling is used to create the layer, or if the layer is automatically scaled to fit the dimensions of the canvas. Model-layers can independently be scaled by their original native scaling and a scaling factor, such as to convert measurement units. This is the Scale By Geometry function that's accessible under Layer Actions when a model-layer is selected. Raster-layers will automatically size so that the loaded image's pixel density matches the project's canvas when Fit to Canvas is disabled. (e.g. a 1000x1000 pixel image will be sized to 10"x10" if the canvas is set to a resolution of 100ppi)
Below are the file formats that can be loaded as each layer type.
Supported raster-layer file formats:
+ Joint Photo Experts Group (.JPG, .JPEG)
+ Portable Network Graphics (.PNG)
+ Google WebP (.WEBP)
+ Bitmap (.BMP)
+ Targa, Uncompressed (.TGA)
+ Graphics Interchange Format (.GIF)
+ Tagged Image File Format (.TIFF)
+ Support Vector Graphic (.SVG)
Supported paths-layer file formats:
+ Support Vector Graphics (.SVG)
+ Drawing Exchange Format (.DXF)
Supported model-layer file formats:
+ Stereolithography, binary (.STL)
+ Sterelithography, ASCII (.STL)
+ Wavefront Object, binary/ASCII (.OBJ)
!!! : Raster-Layer SVG Support
SVG rasterization is implemented using a minimal SVG-rasterization library which lacks some of SVG's less common features. Users who experience issues with PixelCNC's ability to properly load an SVG as a raster-layer can share their experience with us by sending an email to email@example.com
### Duplicate Layer ###
Creates a copy of the currently selected layer, making the duplicate the selected layer.
### Merge Down Layer (Raster/Paths-Layers) ###
Combines the selected layer with the layer beneath it, provided both layers are of the same type. Raster-layers will blend together using the selected layer's blending mode and the result will composite with the canvas using the lower layer's blending mode. Paths-layers simply combine the selected layer's paths with those of the layer beneath it and the origin and size of the resulting layer will be updated to reflect its new path contents.
### Move Up/Down ###
These buttons will move the currently selected layer up or down within the layers list. Being that this affects the order of the layers it can also affect the actual canvas composition itself. Layers are composited with the canvas from bottom-to-top using their blending mode.
### Fit Canvas to Layers ###
This will automatically size the canvas to contain all of its visible layers. Users can include a margin for the canvas to include around its layers when fitting to them.
### Trace Canvas/Layer to Paths ###
Enables the creation of paths-layers by tracing the canvas or a selected raster/text/model layer at a specified Z-plane within the canvas volume. The contour traced at the specified Z plane can be offset outward or inward by a positive or negative offset distance. An error threshold parameter controls the accuracy and complexity of the paths that are produced. A larger error threshold results in simpler and less accurate paths comprising fewer path nodes. Conversely, a smaller error threshold produces more more path nodes for each path in order to capture shapes and details better. The contouring itself is also affected by the Path Simplify and path Min/Max Segment Length parameters, accessible via the CNC/CAM Settings dialog under the Config menu. These settings also affect the generation of toolpaths and should not be modified from their defaults unless you know what you're doing! The rendered Canvas Quality, also set from the CNC/CAM Settings dialog, does not affect the accuracy/quality of the resulting paths. Traced paths are generated internally from the canvas at its native resolution.
### Copy to Raster Layer ###
Creates a raster-layer from of the canvas composition in its current state. This creates a copy of the canvas composition at its native resolution, and is not affected by the Canvas Quality setting found on the CNC/CAM Settings dialog under the Config menu.
### Export Image ###
Outputs the raw heightmap data of the canvas in its current state to an image file, normalized to where black represents the lowest point on the canvas and white the highest point. Heightmaps can be exported as PNG, JPG, BMP, or TGA image files. It is recommended that JPG is only used if compression artifacts are not going to interfere with the intended purpose of the exported heightmap. JPG images are saved with a compression of 99 on the JPEG image specification's 0-100 compression quality scale.
### Export Mesh ###
Generates a triangle-optimized mesh generated from the canvas in its current state to a model file. Meshes can be exported as either binary Stereolithography (.STL) or ASCII Wavefront Object (.OBJ) model files.
!!! : Free Trial
Exporting the canvas to heightmap images and meshes is disabled in the free trial of PixelCNC.
### Edit Raster: Enable/Disable ###
Enables editing of the selected raster-layer's contents using the included heightmap editing functions. As with all layer editing modes the layer's properties on the right-side of the PixelCNC window are replaced with the interface to the editing functionality for the layer's type. The raster-editing functions available in the raster-editing mode are as follows:
: Raster-editing functions can be confined to a selected area of the active raster-layer. Several selection tools, modes, and functions allow a variety of ways to select virtually any desired area(s) of a raster-layer for the purposes of confining edits to and/or for creating a new raster-layer from. With the Rectangle and Ellipse selection tools holding the CTRL or SHIFT keys enable creating a symmetrical or fixed-aspect selection shape, respectively.
: Exposes the parametric brush shape that the user can actively stroke the raster-layer with in the 3D view. Parameters include brush shape, diameter, value, fade, inertia, quality, and mode. Brush quality controls the fidelity of the brush strokes generated, allowing users to turn down the quality to increase responsiveness and performance on slower systems. A "Follow Canvas Surface" option toggles whether or not the brush is positioned on the canvas surface beneath the cursor's position. Disabling this option instead positions the brush at the point on the bottom of the raster-layer's volume that coincides with the mouse cursor's position in the 3D view.
: Displays an XY graph for manually defining a function to re-map height values. Left-clicking on the graph creates new function vertices which can be dragged to reposition them. Right-clicking vertices removes them. There are also a set of different interpolation functions for controlling the shape of the function between each pair of neighboring vertices.
: Allows applying a 2D (XY) or 3D (XYZ) offset to the raster-layer's surface using a specified radius. The Z-radius parameter can range from zero (an exclusively-horizontal offset) up to the specified horizontal radius, which would equate to a spherical/3D offset. The "Lock Z-Radius" option keeps the Z-radius equal to the horizontal radius. The "Expand Vertically" option allows for a true 3D offset when enabled. Otherwise, the function automatically applies a downward displacement equal to the Z-radius to prevent the contents of the raster-layer from expanding beyond the top of the layer or canvas.
: Allows the addition of a draft angle to a raster-layer to eliminate vertical surfaces. Draft angles may be added that are up to 45 degrees.
: Repeats the layer's contents by a specified number of columns and rows and percentage spacing between repetitions.
: Repeats the layer's contents a specified number of reptitions along a circle of a specified radius. A scaling factor allows scaling repetitions within their slice of the circle to include spacing and an offset parameter enables rotational adjustment around the circle.
: Quantizes the height values of the layer to produce a terraced effect from 3D shapes and surfaces.
!!! : Circular Tiling Selected Areas
Circular Tiling does not abide by any area selections due to the fact that it changes the dimensions of a raster-layer. To generate a Circular Tiling of a selected area you can instead copy the selected area to a new raster-layer and perform the tiling operation on it.
### Raster/Text Along Path(s) ###
Raster-layers and text-layers can be conformed to the paths of a paths-layer to produce a new raster-layer for compositing into the project's canvas. The paths-layer must be after, or below, the selected raster or text layer that is to be conformed to its contents, within the canvas layers list. Several options allow for a variety of interesting and useful effects to be produced. A rough live preview of the raster-layer that will be produced by the function is displayed in the 3D view, updating in response to the user's changes to parameters. The actual generated layer will not exhibit the small distortion artifacts that are present in the live preview shown in the 3D view.
### Edit Paths: Enable/Disable ###
Users can create a new blank paths-layer and construct paths from scratch by hand, load a supported file format as a paths-layer, or generate a paths-layer using the tracing function on the canvas or other layer types. While the paths-editing mode is enabled the XY grid plane is vertically offset to the bottom-plane of the active paths-layer while editing - which is the plane that the layer's paths lie at.
Editing paths involves the use of the left and right mouse buttons in combination with modifier keys held on the keyboard to create and edit paths within the 3D view. There are two selection groups, the paths selection and the nodes selection. Selecting a path reveals the nodes that comprises which can then be selected for editing. Below is a table of the path-layer editing keyboard and mouse inputs:
Keyboard | Mouse | Description
| Left Click | Select/deselect single path or node when clicked and clear any existing selections.
SHIFT | Left Click | Add single path or node to selection when clicked, or add all nodes of a selected path to selection when clicked.
CTRL | Left Click | Create a new node by: starting a new path, continuing a selected path from a selected end node, or inserting a new node on a selected path where clicked.
| Right Click | Delete a selected path or node when clicked. When right-clicking an empty area: deselect selected nodes otherwise deselect selected paths.
SHIFT | Right Click | Delete a selected node when clicked and split the path.
CTRL | Right Click | Reset a control point's position to its node's.
SHIFT | Left Click Drag | Select paths via selection rectangle, or move selected node(s) orthogonally when dragged.
CTRL+SHIFT | Left Click Drag | Select nodes of selected paths via selection rectangle.
| Left Click Drag | Move selected node(s) when dragged.
CTRL | Left Click Drag | Move a control point of a selected node when dragged.
CTRL+ALT | Left Click Drag | Move the control points of a selected node symmetrically when dragged.
CTRL+A | | Select all paths.
CTRL+SHIFT+A | | Select all nodes of all selected paths.
DELETE | | Deletes any selected nodes (splitting paths
While in the paths-editing mode the user may perform a few other actions listed on the right-panel. They are as follows:
New Layer From Selection
: While in the path-editing mode users can use this function to isolate selected paths to their own separate paths-layer.
: The path simplifying function chooses nodes to remove based on how much detail they contribute to their paths - which must be above a user-specified threshold value. The control points of the remaining nodes are adjusted to retain the original shape of the paths as much as possible. This function will simplify all paths of a layer if no paths are selected, otherwise only the selected paths will be simplified.
: Inserts new nodes between each pair of neighboring nodes along each path in a layer. This function will subdivide only selected paths, and if none are selected then it will subdivide all paths of the selected layer.
: Generates a raster-layer by extruding specified "profile" paths along or between paths specified as "rails" to create flowing shapes. Profiles are user-positioned along the chosen rails to indicate where the profile exhibits maximum influence on the cross-section of the swept shape. Both single-rail and double-rail sweeps are possible. Sweeps require at least two profiles to be placed along the rail(s).
To create a swept shape users select the path(s) which will serve as the sweep's rail(s) and click "Use Selection as Rails". Two or more profiles must be added by selecting one or more open paths and clicking "Add Selection to Profiles". A path can be added as a profile more than once along with other paths. The profiles will appear upright at a default position along the chosen rail path(s) in the 3D view. Profile positions on the rail(s) can be adjusted by clicking their entry in the profiles list. Profile position sliders allow for adjusting the position of the selected profile along each rail. The profile's position will update in the 3D view while manipulating the slider.
Single-rail path sweeps simply sweep the profiles along the rail smoothly transitioning between profiles. The size of the profile paths determines the size of the swept shape at each profile's position along the rail.
Double-rail sweeps allow for profiles to be positioned anywhere along each of the two rails allowing fine adjustment of the resulting shape's form. Profiles retain their aspect ratio while scaling by the distance between their endpoints on the rails.
Paths used as profiles must be open (endpoints are not joined) and are interpreted from start-to-end as being left-to-right when swept along/between rail paths. For example:
* profile *
* .-----. *
* | | *
* .---' ^ '---. *
* / / \ *
* (start) o- - - - - / - - - - -* (end) *
* / *
* / rail *
* / *
: This path-editing function allows parametrically defined "supershape" paths to be stamped into a paths-layer to quickly create interesting paths for a project's design. Used in combination with the Shapes From Paths and the Stroke Paths functions a variety of novel 3D forms can be created. Shapes can be directly used as toolpaths by certain operation types that allow using a paths-layer as input, instead of a canvas "waterline" Z height contour.
This path-editing function includes a preview of the 2D shape that will be stamped. The size and orientation for the shapes that are stamped on the layer can also be set.
Shapes can either have a fixed number of polygonal sides, or Continuous Shape can be enabled which will produce a smooth shape. The slider for the number of sides becomes a quality slider for adjusting the number of nodes and the accuracy of the stamped paths.
The auto-center option toggles whether the shape is centered around the cursor according to the extents of its rectangular dimensions. When disabled the shape will be placed by its radial supershape function's center, which isn't necessarily at the center of the shape - particularly with shapes that only have one axis of symmetry (e.g. a raindrop).
There are a number of presets that can be used as-is or as a starting point to create new shapes. The parameters for PixelCNC's supershapes have been boiled down into fewer components from what classical supershapes would use, this is in an effort to reduce the complexity of the parameter space for finding different interesting shapes. The best way to learn what the parameters do is to experiment with them and form an intuition about the relationships that the different parameters have with the resulting shape.
### Stroke Paths (Paths-Layers) ###
Opens a dialog for generating a new raster-layer by applying brush strokes along the paths of the selected paths-layer or any selected paths when path-editing mode is enabled. The brush profile is specified using the same parametric brush as the Manual Brush raster-editing function. A preview of the brush profile and its parameters are displayed on the Stroke Paths dialog.
### Shapes From Paths (Paths-Layer) ###
Opens a dialog for generating a new raster-layer by calculating 3D shapes from the closed paths the selected layer, or from the selected paths of the layer when path-editing mode is enabled. The paths-layer's Z-size dictates the maximum height, or radius, of generated shapes. The Z origin of the paths-layer determines the thickness of the extruded base of the generated shapes.
There are four shape types that can be generated from closed paths:
+ Flat: Creates a simple 2.5D shape by effectively extruding paths to the top of the layer.
+ Chamfered: Generates a shape with beveled edges at a user-specified angle which extends from the paths themselves to the top of the layer.
+ Fillet: Produces a rounded bevel with a fixed-radius equal to the Z size of the layer.
+ Rounded: Produces a rounded bevel with a varying-radius ranging from zero to the Z size of the layer. This shape type "inflates" a path's 2D form like a balloon.
### Edit Text: Enable/Disable ###
Text-layers behave similar to a raster-layer except that they're generated from typed text using a chosen font. TrueType/OpenType fonts installed to the operating system are enumerated on program start to generate the list of fonts that users can select from when editing a text-layer. Each font is listed with a small preview of its appearance and font family-name.
While in text-editing mode the user can type on their keyboard to edit the layer's text. Changes to the text's properties will automatically update the layer's dimensions. Text-layers can be resized after the fact but their resolution will not dynamically update to match the size of the layer for the canvas resolution. The layer will return to a calculated size that matches the canvas resolution if text-editing is enabled after it has being manually scaled.
: The text-editing mode includes a Character Map dialog that can be accessed above the layer's text and font properties on the right side of the PixelCNC window. The character map allows users to easily search for specific characters from the currently selected text-layer font. This is meant as a visual navigation aid for dingbat fonts for finding elements to incorporate into a project's design. The size of characters shown in the character map dialog can be adjusted via the Charmap Size setting in the UI Settings dialog found in the Config menu.
!!! : Project Font Usage
PixelCNC includes any fonts used by text-layers into saved project files to allow working with the project on different systems without requiring that the fonts are installed.
### Copy to Raster-Layer (Text/Model-Layers) ###
Creates a raster-layer duplicate of the currently selected text-layer or model-layer at the canvas' native resolution (set via Canvas Properties). This function allows the content of these layer types to have access to the array of raster-editing functions that are available. The quality that the canvas is actually rendered at in the 3D view, controlled by the Canvas Quality setting in the CNC/CAM Settings dialog, does not affect the resolution of the resulting raster-layer (though it does affect the appearance of the layer in the 3D view, but not how it affects toolpath generation).
### Scale by Geometry (Model-Layers) ###
Automatically sizes a model-layer's dimensions according to the native vertex coordinates that describe the model's geometry. This is useful for sizing a layer according to the actual scale of the model as it was designed. A scaling factor with some auto-calculated values allows for scaling or converting the native size of a model-layer's geometry to different measurement units or scalings (e.g. a model designed in inches being scaled to a metric project, or vice-versa). Math equations can also be input to the scaling factor parameter if none of the auto-calculated scaling factor values will suffice.
If a model file's geometry is already scaled exactly as needed then users can disable the Fit to Canvas option on the Create Layer dialog before selecting Load Geometry as Model-Layer. This will prevent the model-layer from being fit to the canvas when creating the model-layer from the loaded model file, allowing users to skip using the Scale by Geometry function.
### Canvas Layers ###
Displayed at the bottom of the Project Canvas panel on the left side of the interface is a list of the canvas layers that make up the contents of the project's canvas that toolpaths will generate from. Shown on the left side of each layer listed is an icon indicating the layer's type.
A layer can be selected from the layers list or by left-clicking the layer in the 3D view. Only one layer can be selected at a time for editing its contents and modifying its properties. Right-clicking within the 3D view will deselect the currently selected layer as will clicking "Done" on the right-side of the program interface under the layer's properties.
: Projects have eight layer "groups" that layers can be included in for producing different canvas compositions through different combinations of layers. Project Operations can then choose which of the Layer Group compositions to use when generating their toolpath from the canvas. This functionality allows for different compositions to be used by different operations rather than manually going back-and-forth between operations and the canvas to modify it for each operation, which may need a different canvas composition for certain projects. Selecting a layer group number at the top of the Canvas Layers list will show the canvas composition comprising the layers that are included in that group. Layers can be included in, or excluded from, the currently active Layer Group by clicking the diamond icon button that's shown on each layer within the Canvas Layers list.
While the Project Canvas mode is active each layer that's included in the current Layer Group will display its 3D volume with a light gray wireframe box. Selected layers are shown with a highlighted bounding-box that is colored according to the layer's relationship to the canvas volume itself. Green indicates being within the top and bottom planes of the canvas volume while red indicates that the corresponding corners/edges of the layer are not between the top/bottom planes of the canvas.
The selected layer will display several "handles" that are visible in the 3D view. Handles lie at the bottom corners, bottom edges, and at the top and bottom of the XY center of the layer's volume. These can be dragged using the left or right mouse buttons for directly manipulating the layer within the 3D view and the layer's corresponding parameters will update accordingly.
The layer handles and how they can be interacted with are listed in the following table:
Handle | Mouse | Key | Action
Bottom Center | Left | | XY positioning
Bottom Center | Left | SHIFT | XY positioning orthogonally
Bottom Center | Right | | Z positioning
Bottom Center | Right | CTRL | Z positioning, fine adjust
Top Center | Left | | Z sizing
Top Center | Left | CTRL | Z sizing symmetrically
Top Center | Right | | XY positioning
Top Center | Right | SHIFT | XY positioning orthogonally
Corners | Left | | XY sizing
Corners | Left | CTRL | XY sizing symmetrically
Corners | Left | SHIFT | XY sizing retaining aspect ratio
Corners | Left | ALT | XY cropping
Corners | Right | | Z rotation
Corners | Right | SHIFT | Z rotation at 12.5deg increments
Edges | Left | | X or Y sizing
Edges | Left | CTRL | X or Y sizing symmetrically
Edges | Left | SHIFT | X or Y sizing retaining aspect ratio
Edges | Left | ALT | X or Y cropping
Edges | Right | | X or Y tilting
Edges | Right | SHIFT | X or Y tilting at 12.5deg increments
Corners/Edges | Left+Right | | X or Y positioning
Modifier keys can generally be used in combination, e.g. scaling a layer by its corner handle can be done so symmetrically while retaining the layer's aspect ratio by holding both CTRL and SHIFT.
The last row is meant to convey that both edge and corner handles can also be used to position a layer by holding both the left and right mouse buttons simultaneously. When Snap-to-Grid is enabled this will snap the layer handle being dragged to the grid, instead of the layer's origin.
!!! : Layer Auto-Update
From the Config menu on the CNC/CAM Settings dialog is the "Layer Auto-Apply" option. This is enabled by default and results in any modifications to a layer's position, size, or rotation within the 3D view via the layer handles to be automatically applied to the layer, and the canvas composition updated to reflect the changes made to the layer. Disabling this option requires any modifications made to a layer via its handles in the 3D view to be explicitly applied in order to affect the canvas composition. The values shown in the layer's properties panel will update according to changes made within the 3D view but will be discarded if the layer is deselected, or the 'Done' button is clicked without first clicking 'Apply'. This option is provided for users to disable if their computer is not be able to quickly update the rendered contents of the canvas.
### Layer Properties ###
The selected layer's properties are displayed on the right UI panel while a layer is selected. Changes to a layer's properties will not affect the layer until the "Apply" button is pressed.
: The layer's name as listed in the canvas layers list on the left UI panel.
X/Y/Z Size and Origin
: Manual origin and size entry of the layer. The origin of the layer pertains to the bottom center of its volume and is relative to the bottom front left of the canvas volume.
: These will mirror a layer along its X and Y axes, and along the Z axis for model-layers
: This option allows the user to swap the interpretation of light/dark areas of a layer so that black is regarded as indicating high vs white indicating low.
X/Y Tilt (Raster-Layers)
: Applies an angled slope to the layer without modifying the horizontal area that it occupies.
: The angle of the layer around its Z axis. Holding the SHIFT key will increase angle value knob sensitivity for coarse adjustment while CTRL will decrease sensitivity for fine adjustment.
X/Y/Z Angles (Model-Layers)
: Rotates a model along pitch/roll/yaw axes, which can also be accomplished by right-click-dragging the edge and corner handles of a model-layer in the 3D view.
Swap Geometry Axes (Model-Layers)
: For models which do not have their interesting geometry facing along the Z axis users can swap how their axes are interpreted to properly orient the model on the canvas. This can be used in combination with the edge layer handles which allow model-layers to be rotated via right-click-drag, or by directly adjusting the model's XY angles via Layer Properties.
: Allows a layer's contribution to the canvas to be independently smoothed before compositing with the canvas. The pixel radius is in canvas-pixels, not the original pixels of the input image for raster-layers. This ensures that the smoothing radius is uniform between all layers and the canvas, though it does mean that the physical radius of the smoothing will vary with changes to the canvas resolution.
: This allows setting the height of the area outside of a layer's 3D volume, the "background" of the layer, which is also composited with the canvas using the layer's blending mode.
: Layers are blended with the canvas by several different methods according to the blending mode chosen for the layer. It's important to keep in mind that not just the layer's volume is blended with the canvas. The area around the layer is also blended with the canvas along with the layer's contents themselves. The layer's Z-Fill determines the value that will be applied to the canvas using the layer's blend mode. The default blend mode for layers is 'Maximum'.
Layer blend modes are as follows:
+ Additive: sums the layer with the canvas
+ Subtractive: subtracts the layer from the canvas
+ Multiply: modulates the canvas with layer
+ Maximum: yields the highest Z values between the layer and canvas
+ Minimum: yields the lowest Z values between the layer and canvas
+ Difference: yields the absolute difference between the layer and canvas
Remove Bottom (Raster/Text-Layers)
: Prevents canvas composition and generative or editing functions from including the areas of a layer's contents that are co-planar with the layer's bottom plane. This effectively cuts out any shapes and forms within the layer, replacing them with the layer's Z-fill before blending the layer with the canvas during compositing or during generative functions that use the layer as input.
: This will apply changes to the selected layer's properties and update the canvas rendered in the 3D view to reflect those changes. If the layer is deselected before any changes are applied they will be lost. If Canvas Auto-Update is disabled via the Config menu then any changes made to a layer within the 3D view will also need to be manually applied by clicking Apply.
: Deselects the layer, discarding any parameter changes that haven't been applied to the layer. The layer can also be deselected by right-clicking on it. Alternatively, users can simply left-click outside of the canvas away from all layers to deselect any selected layer.
Project Tools Mode
The second project mode button is for the "Project Tools" mode and appears as an icon-button of a wrench. In this mode the project's list of numbered tool indices are shown on the left UI panel. Users can specify tools for up to ten tool indices. For CNC machines equipped with an automatic tool changer each tool number corresponds to the tool index that the defined cutting tool physically occupies.
!!! : Automatic Tool Changing
The G-code output generated by PixelCNC will issue tool-change commands if the post-processor used to export G-code has "UseToolChange" set to a non-zero value. Any other necessary commands such as disabling coolant, turning the spindle off, etc... are also all automatically issued when performing a tool-change if their corresponding "Use" parameters in the post-processor used are also set to a non-zero value. Some CNC controllers that do not support the commands generated will simply ignore them while others may error out when they are encountered while running exported G-code programs. The proper G-code commands for controlling the spindle, coolant, and tool changes must be specified via the pertinent values within the post-processor used for the CNC controller that will be running the G-code.
Clicking a tool slot selects and opens a panel on the right side of the user interface displaying the tool definition's parameters. A diagram visualizing the profile for the tool's parameters is displayed in the center of the interface. Currently there are four cutter types: cylindrical, tapered, v-bit, and tapered ball(nose). The parameters for each cuttere type vary. Some parameters are shared by some tool types and some are unique to a single tool type.
### Tool Library ###
Selecting a tool index will reveal save and load buttons for saving and loading tool definitions to and from the tool library, allowing tool definitions to be re-used across multiple projects. Only the load-tool button will be visible for a selected tool index if it does not yet have a tool definition. Once a tool definition has been entered for the selected tool index, by specifying its name, type, dimensions, and clicking "Apply", the save-to-library button will appear on the tool index for saving the definition to a tool library slot. While in the Project Operations mode, tool definitions previously saved to the tool library can be automatically assigned to an unused tool index by clicking the book icon button next to the operation's Tool parameter. (See the Project Operations Mode section)
Clicking either of the save/load buttons will open the tool library dialog which displays the list of tool definitions stored in the library. There are a total of thirty-two available slots for storing tool definitions to. The tool library is stored in the user's configuration file but is retained if the user defaults their configuration via the Config menu. The tool library can be cleared manually from the Config menu.
Load Library to List
: Users can instantly load the first ten tool definitions stored in the tool library to their project, allowing the same set of tools to be re-used across multiple projects.
Clear Tools List
: Clears all of the tool definitions in the project's tools list, resetting their types back to 'None'.
### Tool Parameters ###
The right UI panel for defining cutting tools appears whenever a tool index is selected. The parameters for defining a tool are as follows:
: A label users can give a tool definition such as "0.25 ballnose" or "90deg v-bit". This is just to make it easy for users to quickly see what tool is in each slot for the current project. This label is also used when listing the tool definitions stored in the tool library.
: The basic tool-shape profile. There are four options: 'cylinder', 'tapered', 'v-bit', and 'tapered ball'. Each type has different parameters required to define a usable cutting profile and can be used to create a range of cutters.
In the case of v-bits you may find that the physical bit's angle is defined by vendors and sellers either as the angle of the tip of the bit or the angle between the flutes and shank of the cutter. You may also know only the flute length or diameter of the bit. PixelCNC offers both tapered and v-bit tool types to help users define their project tools as specified by the manufacturer.
: Toggles between the tool's dimensions being in inches or millimeters. This does not convert tool parameters between measurement units, it only affects how the parameters are interpreted when generating toolpaths and rendering the tool geometry during simulation. This allows for projects to use cutting tools with dimensions in either measurement units, regardless of the units the project was created with.
: The length of the tool from tip to holder/chuck. This restricts the maximum cutting depth below the top plane of the project's canvas volume that toolpaths are allowed to cut to for purposes of preventing the chuck from crashing into the top of the project. The "Ignore Tool Lengths" option on an operation will prevent this behavior.
Flute Length (Cylinder/Tapered/Tapered Ball)
: Specifies the length of the cutting section of the tool. This should always be shorter than or equal to the Total Length parameter. The Flute Length is used to prevent toolpaths from being generated that will attempt to cut deeper than the tool is actually capable of cutting. It is important for users to be sure that the length they specify here is never longer than the physical tool's flute length, otherwise cuts may be generated which are too deep for the physical cutter to manage. The Cut Depth parameter of an operation can be forced to a value larger than its tool's flute length if "Ignore Tool Lengths" is enabled on the operation.
Flute Diameter (Cylinder)
: The cutting diameter of a cylindrical tool's fluted portion.
* | | *
* | | *
* | | *
* |/ / / . *
* + / / /| *
* |/ / / | *
* '+-+-' *
* | | *
* --> <--- Flute Diameter *
* | | *
Corner Radius (Cylinder)
: The corner radius of a cylindrical cutting tool's flutes. PixelCNC allows for cylindrical tools to have a corner-radius which enables specifying any shape cutter ranging from a round-over cutter, to a flat-end mill, to a ball-nose, and everything in-between. A ball-nose end mill will have a corner radius that is half of the tool's diameter. Round-over cutters are specified using a negative corner radius, up to half of the cutter's diameter (using a negative value). PixelCNC will automatically restrict the corner radius of a cylindrical tool to half the cutter's flute diameter.
Tip Diameter (Tapered)
: Tapered cutters tools may be truncated and instead have a flat on the cutter's tip. This parameter specifies the diameter of the flat at the tip of the cutter. A v-bit could be defined using the tapered cutter by setting this parameter to zero, though the V-bit tool type specifies its angle as the angle of the tip of the cutter whereas tapered cutters tend to specify an angle between the shank and flutes (which is geometrically equal to half of the tip angle).
* | | *
* | | *
* | | *
* + / / / / + *
* \/ / / / / *
* \/ / / / *
* \/ / / *
* ++-+ *
* | | *
* --> <--- Tip Diameter *
* | | *
Taper Angle (Tapered)
: The angle that the flutes deviate inward from the shank of the tool. In the instance of a cylindrical cutting tool this would be zero degrees (use cylindrical cutter type for that instead). This is the tapered cutter convention used by McMaster Carr. A 90 degree v-bit would have a taper angle of 45 degrees.
* | | *
* | | *
* | | *
* + / / / / / + *
* \/ / / / / /| *
* \/ / / / / *
* \/ / / / | *
* +++++' *
* / A | *
* <---> *
* / | *
* A = Taper Angle *
Bit Diameter (V-Bit)
: The diameter of the widest point of a v-bit's flutes, indicating the widest cut that the cutter's geometry can manage. This is generally the width of the cutter at the top of the flutes.
* | | *
* | | *
* | | *
* +-----+-+ *
* \ / / *
* | \ / / | *
* \ / *
* | + | *
* --> <--- Bit Diameter *
* | | *
Bit Angle (V-Bit)
: The angle of the tip of a v-bit, between opposing sides of the fluted geometry. This is equal to twice the angle between the shank and the flutes - which is regarded as the taper angle if defining a tapered end mill.
* | | *
* | | *
* | | *
* +-----+-+ *
* \ / / *
* \ / / *
* \ / *
* ' A = Bit Angle *
* / \ *
* / A \ *
* <-----> *
* / \ *
Ball Radius (Tapered Ball)
: The radius of the ball tip of a tapered ballnose cutter. The diameter of the tapered flutes where they meet the hemispherical ball portion of the flutes at a tangent is shown on the tool diagram, instead of the ball radius. This is a measurement that can be disregarded.
: The angle in degrees from horizontal that a tool should enter a cut at for operations that use the ramping or helical engagement types. Not all operations allow for ramping and/or helical engagement cuts.
: After specifying a cutting tool's parameters its definition is saved to the selected tool index by pressing the 'Apply' button. Any changes made to an existing tool definition must also be applied by pressing Apply, including name changes. Once a definition is created for a tool index it can then be saved to the tool library by clicking the disk icon button on the tool index.
Project Operations Mode
The third project mode is for creating operations and generating their toolpaths and it's button icon appears as an end-mill making chips fly. Its user interface layout and behavior is similar to that of the Project Tools mode, displaying a list of operations on the left side of the interface and operation parameters on the right.
Initially, a new project will have no operations and the New Operation button is all that's visible. Clicking the New Operation button will open the Operation Type dialog, which organizes operation types into separate categories. The categories are as follows:
Group | Description
3D Contouring | Conforms the cutter's path and geometry to the canvas. These are 2D patterns which are the XY paths the tool will follow as it traverses the shape of the canvas. These also will cut multiple levels at a specified cutting depth increment down to the canvas, or a specified maximum cutting depth.
2D/2.5D Milling | Produces toolpaths that are a series of horizontal cuts at incrementing depths down to a specified maximum cutting depth.
Specialty Cuts | These are not easily classified as they operate on the canvas as more of an image rather than a 3D form, such as for creating stippled halftones and V-carvings.
Selecting an operation type or clicking an existing operation from the operations list below the New Operation button will bring up the 'Operation Parameters' panel on the right side of the user interface. The various parameters can be set on this panel and a toolpath generated by clicking Apply. Depending on the type of operation, its parameters, the canvas resolution and complexity, and system's computing power, the time it takes to generate an operation's toolpath can range from seconds in the average case to minutes in the worst case. Once the Apply button has been clicked the operation is also added to the list of operations on the left-side of the window.
### Operation Buttons ###
When an operation is selected while in Project Operations mode buttons are shown on it within the operations list to move it up/down for re-ordering the project's operations. Buttons are also shown on operations while in this project mode for different purposes, they're as follows:
+ Include/Exclude: Toggles the operation's inclusion in exported G-code and the project's CNC simulation. This is useful if the user wishes to disable an operation without actually removing it from the project, such as to test an alternative operation to use instead, and/or to view the simulation without the excluded operation(s) affecting it.
+ Show/Hide Toolpath: Toggles rendering of an operation's toolpath for use in situations where the density of toolpaths being rendered makes it difficult to see clearly. An operation's toolpath visibility is automatically re-enabled (if disabled) when a new toolpath is generated for it.
+ Remove Operation: Deletes the operation from the project entirely. This can also be achieved by setting an operation's type to "none" in the Operation Parameters panel.
Operation parameters are specified via the right-panel that appears when an operation is selected, or while defining a new operation. Some parameters are shared by all operation types while some parameters are shared by only a few, and some only pertain to a single operation type. Different operation types behave differently - they do not all generate cuts that simply conform to the canvas surface. The parameters that are exposed by the Operation Parameters panel are as follows:
### Name ###
A label for ease-of-use when working with operations. When the user clicks an empty operation slot it will automatically create a simple default operation name, "operation#", where # is which operation slot the operation is being created in.
### Type ###
Opens a dialog listing the available operation types. Here's a table of PixelCNC's currently supported operation types and their individual descriptions:
Operation | Description
Parallel Carving | Toolpath consists of parallel line cuts at a specified angle which follow the contours of the canvas along the Z axis.
Chevron Carving | Similar to parallel contouring toolpaths except using zig-zag chevron cut motions instead of plain straight lines.
Spiral Carving | Starting at the center of the project canvas and spiraling outwards to contour the canvas in the Z axis.
Labyrinth Carving | Toolpath follows a randomly generated maze which contours the canvas along the Z axis, producing a novel pattern texture with tapered and rounded project tools.
Conformal Carving | Perturbed parallel toolpaths, displaced according to an image's light/dark areas.
Tessellated Carving | Concentric tessellated shape cuts which conform to the canvas to produce interesting textures or halftones.
Paths Carving | Transforms a paths-layer's paths into cutpaths for 2D milling or 3D carving along the shape of the canvas.
2.5D Offset Milling | (AKA Horizontal Milling) Removes material at Cut Depth increments within canvas Z-plane contours generated at each cutting plane.
2D Offset Milling | (AKA Pocket Milling) Similar to the 2D Profile Milling operation, mills area of a 2D contour generated from a specified canvas Z-plane or paths-layer down to a specified Max Depth.
2.5D Trochoidal Milling | (AKA Trochoidal Milling) Remove material at Cut Depth increments using trochoidal/circular cutpaths within canvas Z-plane contours generated at each cutting plane.
2D Trochoidal Milling | Similar to 2D Offset Milling but using trochoidal cuts to mill the area of a 2D contour generated from a specified canvas Z-plane or paths-layer down to a specified Max Depth.
2D Profile Milling | Carve along the boundary between light/dark areas of an image at a user-specified offset inward/outward from the boundary that's established by the outline threshold value delineating light/dark areas.
Medial-Axis Carving | Both 'V-carving' and 'B-carving' of shapes contoured from the canvas at a specified Z plane, generating 3D cutpaths from a given tool's geometry and the shape of contours.
Standard Stippling | Depict light/dark areas through collections of v-bit or ball-nose stippling 'pecks'. The canvas determines how stipples are situated and how much the image contrast affects depth of the stipple cuts.
Dithered Stippling | Uses error-diffusion to position stipples and determine their diameter for conveying contrast.
### Tool ###
Popdown menu for selecting a tool index to use. The selected tool index's definition affects the toolpath that will be generated by an operation and the tool geometry rendered for the simulation mode. The tool selection also determines what tool index an automatic tool changer will index to before the operation begins cutting, only if the post-processor used to export G-code includes a non-zero "UseToolChange" value.
Load From Library
: A tool definition can be automatically loaded to the project's tools list from the Tool Library by clicking the bookstack icon on the right of the operation's Tool parameter, which will open the tool library. Selecting a tool definition from the library will load the definition to the tool index already being used by the operation, if no other operation is using that tool index, or loaded to a different unused tool index automatically which the operation will then use.
### Layer Group ###
Selects which canvas Layer Group to generate toolpaths from. Selecting a Layer Group will show its canvas composition in the 3D view just as when a group is selected while in the Project Canvas mode. This allows projects to have multiple compositions using its canvas layers that different types of toolpaths can be generated from. An example of a project that might use multiple layer groups would be an inlay. One group would be for the female design to cut out while a second group would be for cutting the mirrored male version of the design that will be inlaid into the results of the first group being cut.
### Speed ###
The spindle/tool rotation speed, in rotations per minute or "RPM". Operation feeds/speeds are beyond the scope of this guide, and users should do their own research if they are unsure as to what these values should be. Spindle commands are omitted from exported G-code if the "UseSpindle" variable is set to zero in the post-processor used.
### Feed ###
Sets the feeding rate the machine will move the cutter along generated cut paths at, in either inches per minute or millimeters per minute, depending on the current project's measurement units (as set via the CNC/CAM Settings dialog before creating a new project).
Users should know what they're doing when figuring their speeds and feeds and should not assume that the default values will not break something! Feed rates that are too low will result in the cutting edges of the tool rubbing more than cutting and wear them down much more quickly while also producing more heat. If you are cutting wood/plastic and it's burning/melting your feed rate is either too low or your spindle speed is too high. Feed rates that are too high could result in the tool breaking or chipping due to flutes taking too large a bite. Good feed rates can be calculated using feed and speed calculators designed for your style macahine and workpiece material, or determined through experience with trial-and-error.
### Engage ###
The feed rate to use when engaging the workpiece and entering into a cut path. This is the feed rate at which plunge, ramp, or helical entry cuts will be traversed leading into a cut path and are almost always a lower value than the cutting feed rate.
### Coolant ###
Popdown menu for selecting the coolant mode for the operation. The coolant mode command is issued after performing a tool change (if one is needed). Available coolant modes are 'Off', 'Mist', and 'Flood'. Coolant commands are omitted from exported G-code if the "UseCoolant" variable is set to zero in the post-processor used.
### Dir(ection) ###
The direction of cut that PixelCNC should generate toolpaths for. Not all operations are affected or affected the same way by this setting, but for the ones that are users should set it according to their machine's capabilities and what sort of result they desire. For less-rigid machines conventional milling can do a better job of preventing machine flex, where the tool will be cutting against the motion of the machine. Climb milling tends to produce a better finish on rigid machines but may result in more machine flex on less rigid machines and cause the cutter to deviate from the cutpath as a result.
### Entry ###
This allows alternative cut engage types beyond the basic 'plunge' entry cut. Not all operations allow for ramp or helical engage cuts to be generated. Those that do allow for engage cuts other than plunging will be generated according to the designated cutting tool's ramp angle set in its definition. This parameter controls the depth below the top of the canvas that the operation's cuts should begin at. For 2D milling operations this dictates the Z depth to begin the entry cut at, down to the Z of the first layer of cuts. Subsequent layers of cuts will begin their entry cut move just above the previous layer. For 3D carving operations this parameter dictates the depth that cuts should begin at, with the first layer of cuts being from Min Depth to Min Depth + Cut Depth below the top of the canvas.
### Cut Depth ###
The depth of a cut or layer of cuts for each cutting pass. This is limited to the flute length of the tool selected for the operation unless Ignore Tool Lengths is enabled on an operation. Multiple layers of cuts are generated until the Max Depth is reached. Cuts begin at the specified Min Depth, where zero indicates the top-surface of the canvas. e.g. a Min Depth of 0.1" and Cut Depth of 0.15" will result in the first layer of cuts being at 0.25" below the top of the canvas. A subsequent layer of cuts will be at 0.4", then 0.55", etc..
### Min Depth ###
This is the minimum depth below the top surface of a project that cuts will begin at, not counting the Cut Depth itself. It can be thought of as a depth to offset generating cuts at. The first layer of cuts for an operation's toolpath are generated between Min Depth and Min Depth + Cut Depth below the top surface of the canvas. For 2D milling type operations the Min Depth parameter indicates where below the top of the canvas to begin the entry cut. Each subsequent layer of cuts increments this range by Cut Depth. Any section of a toolpath that is closer to the canvas top surface will be clipped/removed and the toolpath will be broken into separate cuts linked by a rapid at the specified Radid Height above the top of the canvas volume.
### Max Depth ###
The absolute maximum depth the operation should cut to beneath the top plane of the canvas volume, regardless of number of cut passes that are required to reach it. This is limited to the Z size of the project's canvas. Most operations will generate a toolpath which cuts in 'Cut Depth' increments down to and including this depth value.
### Stepover ###
Depending on the operation, this usually indicates the cut step-over for the cuts that the tool will take - how far apart individual cuts should be, which determines the amount of material that the tool will be removing from the work piece. A toggle button for switching between entering the parameter as a physical dimension or as percentage of the cutting tool's diameter is also provided. A rule of thumb is 25% to 50% of the cutting tool's diameter for most roughing operations, but different materials, cutters, machines, and projects will require different step sizes depending on whether the operation is intended as a roughing, re-roughing, or finishing operation.
### Rapid Height ###
Between individual cut paths the tool will rapid up to this height above the top plane of the canvas volume before rapiding to the first XY coordinate of the next entry cut. Negative values can be used to lower the plane that the cutter will rapid between cuts at. It is important to make sure this does not cause an operation to crash the cutter through the workpiece. Keeping this parameter at the lowest possible value will minimize the total travel time spent retracting the tool up and feeding back down between cuts. Some situations may occur where clamps or other parts of the CNC machine lie in the path of rapids between cuts. Extreme care should be taken when examining a toolpath generated by any CAM program to ensure that rapids will not crash into any fixturing or other obstructions on or around the workpiece. A proper rapiding Z height should be established to prevent such situations or any obstructions should be removed or reconfigured so as to no longer pose a risk of causing the CNC machine to crash. Splitting one operation into multiple, using Min Depth to ensure each sub-operation cuts deeper than the one before, can be used with a negative Rapid Height to reduce total runtime for deep projects.
Clamps and other fixturing can lead to a project's operations requiring a large Rapid Height to ensure that the cutting tool has enough Z clearance to accomodate them. Double-sided foam tape found at most stores can eliminate the need for clamps when carving woods and plastics, allowing for a much lower rapid height and therefore faster runtimes that avoid spending a lot of time feeding down into cuts. A small rapid height can also be used if the canvas volume is kept within the positions that clamps/work-holding are to be placed at.
### Leave Stock ###
Specifies a minimum amount of material to leave behind for operations which produce cut paths for bringing the canvas' form out of a workpiece. This is effectively a distance from the canvas' contours that cutter geometry will be kept at by generated cutpaths. The leave stock parameter is useful for projects that involve at least a roughing pass and a finishing pass by enabling a roughing pass to leave behind an amount of material for the finishing pass to come back and clean up. This helps to prevent spots where the forces exerted on the cutter vary due to passing in and out of material, ensuring that it will be cutting material the entire time.
### 2D Milling and Medial-Axis Carving: Offset ###
Offsets the paths produced from the canvas when contoured at the specified Contour Z plane, or a selected paths-layer. A positive Offset value moves the resulting cut paths away from canvas surfaces, or inward for paths, while a negative offset moves contours inside of canvas surfaces - and outside of paths in a paths-layer. 2D Offset and 2D Trochoidal Milling automatically take the cutting tool's diameter into account to keep the cutter within the pocket contours. 2D Profile Milling, however, generates cuts that center the tool along the contours. A button will appear on the Offset parameter for automatically setting this value to the radius of the cutting tool to cut inside of contours instead of along them.
### Ignore Tool Lengths ###
Tells the toolpath calculation to not limit Cut Depth to the selected tool's Flute Length and prevents Max Depth from being limited to the tool's Total Length. Use with caution!
### Parallel/Chevron/Conformal Carving: Cut Angle ###
For operations which include this parameter the angle of cutpaths can be rotated to any orientation. Zero degrees is a -X to +X cutpath while -90 degrees would be from -Y to +Y and +90 degrees from +Y to -Y (for a Conventional milling direction).
### Chevron Carving: Width/Height ###
These two values dictate the dimensions of the chevron operation's zig-zag pattern. Smaller values will create more zig-zags with different angles depending on the aspect ratio implied by the specified width/height values.
### Spiral Carving: X/Y ###
Sets the center of the generated spiral relative to the center of the canvas.
### Spiral Carving: Radius ###
Sets the maximum radius of the generated spiral.
### Labyrinth Carving: Variance ###
The labyrinth operation's maze generation can be adjusted with this value to produce more or less wandering/squiggling and regularity.
### Labyrinth Carving: Horizontal/Vertical ###
These two toggles control whether or not the labyrinth operations's unicursal maze generation algorithm should aim for mirroring the maze symmetrically along the X and/or Y axes - where 'vertical' does not refer to the Z axis, but instead the near/far Y axis.
### Labyrinth Carving: 90 degrees / 180 degrees ###
These two symmetrical toggles pertain to rotational symmetry with maze generation. The algorithm currently is limited to merely attempting to maintain symmetry, per the rules of maze generation, so these options are hit-and-miss. Adjusting the step size and variance can produce better results with the symmetry toggles.
### Conformal Carving: Perturb Amount ###
The amount of displacement that cut paths should undergo per the project's canvas.
### Conformal Carving: Perturb Smoothing ###
A smoothing radius for the perturbed cut paths, to help reduce noisy/erratic looking toolpaths. This will produce more gradually convoluted cut paths.
### Tessellated Carving: Cutpath Shape ###
Specifies which of the available shape types to tessellate and generate concentric cutpaths with.
### Tessellated Carving: Cols/Rows ###
The number of repetitions to produce along the X and Y axes when tessellating the chosen shape.
### Tessellated Carving: Cuts ###
The number of concentric cuts to produce within each shape. This is in lieu of a cut stepover parameter because the aspect ratio of the shapes produced can vary and a consistent stepover is not possible.
### Tessellated Carving: Gap ###
Shapes can be uniformly spaced by a physical distance, regardless of the number of columns, rows or cuts. The gap distance is not the actual spacing that will be left between neighboring shapes but instead the distance between the outer-most cuts of neighboring shapes in the tessellation pattern. The actual distance between the resulting cuts is equal to the amount of separation minus the cutter diameter.
### Tessellated Carving: Remove Partials ###
Shapes that straddle the canvas edges result in a partial cut shape. Users can toggle omission of these shapes from the generated toolpath by enabling this option.
### Paths Carving: Paths-Layer ###
Which paths-layer to use the paths from for creating cutpaths. Does not require that paths are closed shapes (like with other operations). This operation is explicitly for directly translating paths into cutpaths, and does not do proper profile milling (i.e. cutting along inside/outside of paths) or any kind of pocketing.
### Paths Carving: Follow Canvas ###
Paths carving can generate cuts which traverse paths at a fixed Z-plane, at cut-depth increments until the maximum cutting depth specified is reached, or at cut-depth increments that bottom out along the canvas surface, as with other carving operations (such as: Parallel, Spiral, Chevron, etc).
### Paths Carving: Tool Offset ###
Enforces cutpaths which do not allow the cutter's geometry to penetrate the surface of the canvas when Follow Canvas is enabled. When this option is disabled the cutpaths generated will move the center tip of the cutter across the canvas surface, which means that deep narrow areas too narrow for the cutter will still be entered by the cutter. Enabling this option will offset the generated toolpaths by the cutter's geometry so that the cutter's geometry conforms to the canvas surface, which is the case with all other carving operations (i.e. Parallel, Spiral, Chevron, etc) as these operations are intended to reproduce the shape and form form of the canvas with the chosen cutter's geometry. Paths Carving offers more flexibility in that users can disable this option and force the cutter to perfectly traverse the canvas in spite of how it may affect the final carved result as compared to the canvas.
### 2D Milling and Medial-Axis Carving: Contour (Source) ###
These operation types allow for using either a 2D "waterline" tracing of the canvas (at a specified Z-plane height) or a specified canvas paths-layer and its paths as input from which cutpaths are calculated. When using a paths-layer as contour input to an operation the paths are treated like pocket contours by default (i.e. cut's the inside of paths, instead of the outside) unless the Invert option is enabled which will treat the area outside of path shapes as a pocket and the paths as solid/islands.
Nested paths (i.e. concentric circles) will produce an alternation between pocket/island for each successive path. e.g. two concentric circles, with Invert disabled, will create a donut-shaped pocket. With the Invert option enabled they would instead create a donut-shaped island with a pocket outside the outer circle and a pocket inside the inner circle.
Paths that are used as contour input to these operations generally should not be touching or crossing the canvas edges. If the Invert option is used then they should have enough room around them for the cutting tool to pass between paths and the edges of the canvas. This may require increasing the canvas size in some situations, if the paths are too large.
PixelCNC's design and implementation are built upon a foundation that was largely intended for generating toolpaths from image designs and creating relief carvings. Hence, the quality of generated cutpaths when using a paths-layer as contour input is affected by the project's Canvas Resolution, as paths-layers are internally rasterized at the canvas' resolution to perform contouring. For instances where users require that a path is followed as exactly as possible by a cutter the Paths Carving operation found in the 3D Contouring operation type category is optimal, and will generate cuts for non-closed paths as well - but does not employ any cut offsetting (i.e. profile along inside/outside of a path). The 2D milling operation types, and Medial-Axis carving, allow for more advanced cutpath generation using a paths-layer as contour input, which will be affected by a project's canvas resolution.
### 2D Milling and Medial-Axis Carving: Contour Z ###
This parameter is available if the contour source parameter is set to Trace Canvas. This value specifies the Z-plane which will delineate the contours from the canvas that are used for generating cutpaths. This must be set to a Z plane within the canvas volume that intersects features in the canvas, and not lie above or below where contours will actually be produced. Otherwise there will be no cutpaths that result when generating toolpaths. The value is a height above the bottom-plane of the canvas volume, regardless of where the machine origin or Z-zero are set to.
### 2.5D Offset Milling Operation ###
(AKA Horizontal Milling) This milling operation is useful for fast removal of greater amounts of material, or for producing really interesting terraced results from heightmap designs. Using a tapered v-bit can also create really hypnotic and novel patterns. The two parameters that are important with offset milling are the step size and cut depth parameters. The step size shouldn't be larger than the radius of the tool being used and a good cut depth for roughing is usually somewhere around the diameter of the tool itself. Users should explore different values here as each machine is different. Ishould be kept in mind that using tiny values could cause the computer to run out of memory! This of course depends on the size and complexity of the project itself.
Offset toolpath generation is more complicated than generating 3D carving toolpaths due to the complex cut-path sorting and ordering that is involved, both ensuring that material is removed in the proper order and reducing time spent 'cutting air' as the tool retracts and moves to a new cut.
### 2.5D Offset Milling: Stepover ###
(AKA Horizontal Milling) This milling operation is useful for removing large amounts of material using offset contoured horizontal cuts, such as for roughing out a relief carving or 3D shape. It can also be useful to perform a surface/finishing pass using after a previous operation roughs out the majority of the material. Setting the cut stepover to zero for a 2.5D milling operation the toolpath generation algorithm will enable the Horizontal Finishing mode which skips generating the material removal toolpaths and only generate the contouring cuts that conform to the canvas. This is useful for creating a better finish on areas of the project that are less horizontal, such as the steeper sides of pockets and islands.
### 2.5D Offset Milling: Minimum Finish Angle ###
When creating a horizontal finishing operation (by setting the stepover parameter to zero) the cutpaths generated can be restricted to areas of a minimum surface steepness to prevent extraneous cuts across flatter areas, adhering only to more-vertical areas of the canvas.
### 2.5D Offset Milling: Ignore Perimeter ###
When cut stepover is set to zero for enabling horizontal finishing this option allows omitting cuts which are generated along the canvas edges, due to the canvas being treated like a pocket.
### 2D/2.5D Offset Milling: Smoothing ###
This parameter can help reduce dramatic changes in direction, sharp corners, etc.. on internal cuts that hog out material, by softening the shape of the interior cutpaths that are generated. This can result in the actual distance between neighboring cuts deviating from the specified cut Stepover, mostly causing areas of cuts to become spaced further apart. It is recommended that the cut stepover distance be decreased when using this parameter.
### 2D Profile Milling: Outline Mode ###
The outline mode option for the profiling operation will ignore any nested contours that result from the chosen contour source. The option is accompanied by a toggle for selecting whether the operation should only generate cutpaths for the outer-most pocket contours or outer-most island contours. The outline mode option is useful for cutting out a project after it has been carved. Users may wish to include tabs when cutting out a project to ensure the workpiece doesn't move into the cutter once the entirety of the outline contour has been traversed.
### 2D Profile Milling: Cut Width ###
Successive profiling cuts can be generated which approach the final contour (plus offset) cuts by using a non-zero cut width. This does not indicate the width of the actual resulting profile cuts themselves, but instead corresponds to the distance between the inner-most and outer-most profiling cuts that are produced. Cuts are generated at 'stepover' increments starting with the most-distant from the contour+offset and progress to the inner-most at the contour+offset. The width of the channel produced by a given cut width is equal to the cut width parameter plus the cutter's diameter. If tabbing is used with a nonzero Cut Width then outer cuts will only be generated down to the tab height specified, and only the inner-most cut along the contour+offset will cut to the full depth.
### 2D Profile Milling: Tab Spacing/Length/Height ###
The cut paths generated by the profiling operation can have tabs incorporated into them in order to hold the workpiece in place while being cut-out. Tabs are placed at the max-depth of the operation, regardless of the project Z depth, so it's recommended to use a max-depth that matches the canvas' Z size. The tab parameters allow specifying the distance between tabs, the length of each tab, and the height that each tab extends up from the operation's max cutting depth. If any of the tab parameters are set to zero then tabs are not included into the generated profiling cut paths.
### Medial-Axis Carving Operation ###
The two uses of medial-axis carving are V-carving and B-carving. Medial-axis carving entails carving along a toolpath that follows the 'medial axis' of a given shape or form into the top surface of a project. The medial-axis can be thought of as the geometric skeleton of a shape. While following this skeleton the v-bit or ballnose tool is moved deeper or shallower along the Z-axis in order for the tool to produce a cut with the width of the original shape/form at each point along its median. The end result is that simple black/white designs can be used to produce a variety of works that still feature some interesting depth variance.
The medial-axis carving operation is sensitive to the quality and smoothness of the canvas that depicts the shapes and forms to be carved. An image that has only exactly white or black pixels will not be able to convey shapes very smoothly. They will have jagged aliased edges and "stair-steps" due to being represented by pixels. Designs intended to be used as input to medial-axis carving operations should be anti-aliased - edges should consist of smooth gradients blending from black to white across at least a few pixels. This is due to the tracing algorithm which follows the boundary exactly between black and white. Users can also employ the "smooth" parameter on the layers of their canvas to reduce discontinuity artifacts in their V-carving/B-carving cutpaths.
### Medial-Axis Carving: Depth Offset ###
This parameter specifies a distance below the project's top-surface to offset generated cut paths down to, along the Z axis. This occurs *after* the min/max cut depth parameters are applied and cuts are not affected by them after applying the offset. It effectively behaves as though the top-surface of the project were being temporarily offset to a lower position, such as when an area has already been milled out to a certain depth and a V-carving is needed on the lower surface. Make sure your cutter has enough room around it!
### Standard Stippling: Advection ###
Stipples can be advected with a positive or negative scale factor. Stipples initialize in a regular grid that can then be shifted toward or away from each other depending on the advection value and the height of the canvas at their location. Advection causes stipples to adjust their position in order to attempt to enforce a specific distance between themselves and their neighboring stipples according to the height of the canvas at their location, each iteration. The advection parameter controls the total number of iterations to perform stipple displacement.
If the user prefers a fixed grid then advection should be kept at zero. A positive advection value will result in stipples displacing to become more dense in lower areas and more sparse in higher areas of the canvas. Conversely, a negative advection value will invert advection and stipple sizing - causing higher areas to be denser and lower areas to be more sparse in stipple densities. This also inverts the effect of the Size Contrast value, so that higher canvas areas will result in larger diameter stipples and vice-versa. This is for situations where users may want light stipples on a dark background.
### Standard Stippling: Minimum Size ###
Multiple stipple styles can be achieved by using advection with a fixed stipple size, by setting minimum size to a small value and the "Modulate Size" parameter to zero (to ensure no size change with varying depths across the canvas). This results in stipples conveying contrast purely through their density and distribution across the project as produced via advection.
It's suggested that users ensure stipples are not too close together. Stipples should each have at least a tiny bit of top-surface surrounding them, regardless of density, and not intersecting their neighbor stipples. However, this is purely up to user preference, and is only a suggestion.
### Standard Stippling: Modulate Size ###
This controls how much the canvas depths modulate the size of the stipples. It is in addition to the specified minimum stipple size. Advection values greater than or equal to zero will modulate stipple sizes to be larger with lower areas of the canvas while negative advection values cause higher canvas areas to produce larger stipples. This functionality is meant to allow users to create black stipples on white surfaces or vice-versa.
!!! : Stipple Size vs Cut Depth
Both stippling operations allow entering stipples as sizes because the necessary cutting depth to achieve a stipple size varies with each cutter profile. There can be a non-linear relationship between a stipple's size and the cutting depth required to achieve it, such as with a ballnose cutter.
### Dithered Stippling: Threshold ###
Controls the light/dark threshold which spawns stipples across the canvas. A higher threshold will spawn more stipples.
### Dithered Stippling: Lighten ###
Decreases the density of stipples by increasing the average margin size between their neighboring stipples. This affects the local area around a stipple by reducing the probability that another stipple will be placed near it.
### Dithered Stippling: Darken ###
Increases the density of stipples by increasing the probability that new stipples will be placed wherever none have not yet been placed. This parameter is best kept at a lower value while instead tuning the Threshold and Lighten values to achieve the desired stipple density, patterns, and contrast. For the best results: if the desired stipple density and distribution is too sparse this parameter should be increased as a final resort, but otherwise should be kept at a lower value in most cases.
### Dithered Stippling: Min/Max Dia(meter) ###
Indicates the minimum and maximum possible stipple diameters. Whether the cutting tool is a v-bit or ballnose this controls only the diameter of the stipple, as opposed to the cutting depth. The depth at which the chosen cutter much reach to achieve a given diameter for each stipple is automatically calculated while generating the current operation's toolpath. The diameter of the stipple chosen from the range indicated is calculated from the depth of the canvas where the stipple is placed. The canvas is automatically contrasted so that the highest and darkest points correspond to the least and most dense stipple areas.
!!! : Canvas Z Size & Max Stipple Diameter
The canvas Z-size must be deep enough to accommodate the necessary cutting depth to be able to produce stipples at the maximum diameter specified. For instance, a 90 degree V-bit produces a stipple with a diameter equal to twice the cutting depth, therefore cutting 0.25" stipples requires being able to cut 0.125" deep.
### Cutpath Options ###
These options will modify the default toolpath that's generated by each operation's toolpath-generation algorithm.
: Link cuts is useful for reducing and/or eliminating unnecessary retraction of the cutter to the operation's specified safe Z height by instead directly transitioning the cutting tool from the end of one cut to the beginning of the next, if it is close enough to not warrant a rapid. This is especially useful for 2D/2.5D milling type operations, as well as parallel/chevron contouring operations that have a mixed cutting direction specified to where the tool will effectively zig-zag back and forth across the workpiece, without needing to retract and rapid between cuts. Cuts are only linked, and thus skip a safe Z retraction + rapid move, if they're within roughly twice the stepover distance specified for the operation, though this varies depending on the actual operation type. Link cuts does not apply to some operations (i.e. stippling, medial-axis/paths carving).
: The distance sort option will attempt to reduce the total sum distance spent traveling between cuts with rapid moves by sorting cuts based on the chosen cut direction - choosing the next nearest cut instead of whichever cut the selected operation's algorithm happened to generate or contour next in the sequence. This is in an effort to reduce total operation runtime. The toolpath generation algorithms themselves generally operate within a narrow scope that does not incorporate any concept of minimizing total run-time for an operation, only generating a toolpath that will make cuts in a mechanically sound order (i.e. top-to-bottom, inside-to-outside, etc) but not that reduces runtime. This option acts as a secondary pass over the generated cut paths to shuffle them to occur in a more economical way.
: Rest-machining entails truncating a generated toolpath's cut paths against the simulated cuts of all previous operations which do not have their exclusion option enabled. (See the Operation Buttons section) This can be useful, especially in combination with the distance-sort option, for preventing an operation from cutting areas of the canvas which previous operations have already removed material from. The rest machining option should only be utilized when the operation would otherwise waste a lot of time cutting air with the toolpath that it generates - due to one or more prior operations removing material beforehand (such as a horizontal roughing operation before a horizontal re-roughing operation).
: Prevents the removal of material outside of the canvas sides by preventing cutpaths from approaching the canvas edges beyond the radius of the selected cutting tool for the operation. This option does not apply to all operations.
: This treats the canvas itself like a pocket, allowing contours to be generated along the inside bounds. This option replaces the Confine Cuts option for some operations.
### Apply ###
The apply button gathers the user's specified operation parameters and uses them to generate a toolpath for the selected operation. During this time PixelCNC may render temporary contour polylines as a visual indication of progress for more complicated operations.
### Done ###
This button simply deselects the active operation. When no operation is selected while in the Project Operations mode the 3D view will render all of the project's operations' toolpaths. This is unless any of them have their individual toolpath visibilities toggled off or toolpath rendering is disabled via the toggle on the View Toolbar. (See the View Toolbar section)
Project Simulation Mode
The simulation renders a calculated approximation of the cuts each operation will produce when run on a 3-axis CNC router or mill. This project mode's button appears as a film playback icon. In this mode operations are listed on the left-side of the window, just as with the Project Operations mode. The resolution and fidelity of the simulation can be controlled via the "Simulation Settings" dialog, accessed through the Config menu. The rendering method for the simulation can also be switched between two available methods: the default "slice-stack" rendering method which the canvas is also rendered with by default, and "raymarched rendering" which employs a rendering technique known as "parallax occlusion mapping". (See the Simulation Settings section)
Selecting an operation will automatically update the 3D view to display the simulated cumulative result of all operations leading up to the selected operation - including the selected operation if "Skip-to-End of Operation" is enabled via the Simulation Settings dialog via the Config menu. Any operations which are "excluded" via the 'include/exclude' option being toggled off (paperclip button on an operation's slot when selected in the Project Operations mode, see the Project Operations Mode section), will not be included when simulating a project's operations.
### Export Heightmap ###
Above the list of project operations that can be simulated on the left-side of the PixelCNC window is a button for exporting the current simulation heightmap as an image.
### Operation Simulation ###
Basic information about the currently selected operation is displayed on the right side of the PixelCNC window along with playback controls for driving the simulation. Pressing the skip-back/rewind button will reverse the simulation state to the beginning of the selected operation - with the progress slider at zero percent. In this state the simulation will show the result of all operations prior to the selected operation which are not excluded from the project (via toggling the 'include operation' chainlink icon button in Operations mode). Pressing the play button will then perform a live simulation that progresses through all the cut paths of the operation as though being run on a CNC.
!!! : Rapid Moves and Cut Linking
The simulation does not currently simulate rapid moves. The virtual cutter jumps from the end of one cut path to the beginning of another, without traversing the space in between. This is also the situation with linking cuts that occur between cutpaths, even though an actual feed command will be generated in exported G-code.
: Allows the user to see and control what percentage of the operation the simulation displays as completed. Simulated cuts always include all preceeding operations' cuts, with the exception of those that have their exclude toggle enabled. The progress slider can also be used for scrubbing through an operation, rather than viewing a live simulation.
: A positionable timeline and live playback buttons allow controlling the simulation playback state.
: This controls the length each simulation update traverses of an operation's cutpaths. A larger simulation speed value will result in longer sections of the toolpath being simulated. Larger speed values may begin to tax a system's compute capabilities and reduce the rate that the live simulation is able to update at.
: Toggles whether or not the currently simulated operation's cutting tool geometry is drawn in the rendered simulation.
: Toggles whether or not the camera follows the cutter position as the simulation updates during live playback.
: Sets the colors used to render the simulation heightmap. One color corresponds to the top plane of the simulation volume and another color corresponds to the bottom plane of the simulation volume.
: Controls how the two simulation colors are mapped to height values by "bending" the mapping toward one color or the other.
: Deselects the currently selected operation. Once an operation is unselected the 3D view will resume drawing all toolpaths from all operations - unless toolpath drawing is toggled off for any operations or via the view toggle button at the top of the 3D view area.