**PixelCNC v1.61b - User Guide** http://www.deftware.org support@deftware.org Last Updated: 5/1/22 Introduction ============ 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 a new program and its usage. 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://www.youtube.com/channel/UCMG4-1aHezxoFKaAa4_vu-w 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 support@deftware.org. 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 support@deftware.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. File Menu --------- 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. ### Save Project As... ### Saves the current project into a self-contained PixelCNC project file with the ".PNC" extension. A project file comprises: 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 fonts and model-layer geometry. !!! : 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 section for more information) !!! : Free Trial Exporting G-code from the free trial version of PixelCNC only outputs the first ~8000 feed coordinates of each operation in a project. The G-code export modes and other options available are as follows: 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) Post-Processor : 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. 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. !!! WARNING 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 by familiarizing themselves with their CNC controller's G-code specifications, which can usually be 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 please feel free to email it to us at: support@deftware.org ### 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 support@deftware.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. Config Menu ----------- 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, themes enable users to choose a color scheme that best suits their personal preference much more quickly. 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. 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. !!! Tip 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 coloration, sizes, and scaling to be 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: Color Curves : These adjust how the two colors chosen for the canvas and simulation rendering are mapped to the 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. Boundaries Thickness : Controls the pixel-thickness of volume edge lines that are drawn for the canvas and its layers. Paths Thickness : Controls the pixel-thickness of paths-layers' contents as well as that of CNC operations' toolpaths. Grid Thickness : Controls the pixel-thickness of the Z.0 plane's grid lines. Shade Contrast : Adjusts the shading contrast of both the canvas and simulation rendering. Shade Glossiness : Adjusts the shininess of both the canvas and simulation rendering. Perspective FOV : 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). Framerate : Sets the maximum framerate of PixelCNC's interface and 3D view. Decreasing this value can conserve battery life and GPU utilization at the expense of responsiveness. CPU Budget : 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 when manipulating the view position or when modifying the canvas' contents. This is to improve 3D view interaction responsiveness on slower systems. 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. Anti-Aliasing : This will draw smoothed lines for the 3D view's grid, canvas/layer boundaries, paths-layers, and toolpaths. FBO Redraw : 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. Less powerful graphics hardware (particularly 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. Texture Filtering : 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. Boost Layer Contrast : Applies a Laplacian convolution filter to raster/text layers when rendering their bottom plane to improve visibility by hilighting areas of 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. 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. ### 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. Resolution : 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 speed. Geometry : 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 is taxing for the 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 this value 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, allowing the proxy mesh to conform more closely to the simulation heightmap and decreasing the total distance that rays must traverse to reach the underlying heightmap and reducing overall graphics computation. The optimal geometric-granularity/raymarch-distance balance will vary with the graphics hardware that's available. Raymarch Coarseness : Controls the raymarched rendering mode's ray step size increment. Increasing this will result in coarser simulation rendering and increase performance. Older or slower hardware should keep this value higher if using raymarched rendering. This setting has no effect on rendering the simulation if raymarched rendering is disabled. Raymarched Rendering : 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 favor fidelity over performance. 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. ### 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. Canvas Quality : 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. Canvas Geometry : 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. Layer Auto-Apply : 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. Toolpaths/Paths Simplify : 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 might benefit from a decrease in the Paths Simplify setting. !!! WARNING 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 linear moves. 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 so that larger radius cuts will employ more cuts and vice-versa, though this is not a perfectly linearly scaling otherwise all cuts would be the same length (would would result in horrible cuts for small-radii arcs). Rapid Speed : This is the top speed of the machine that will be running the exported G-code, and is used for gauging runtime for an operation's toolpath. This is in units of the currently open project. Rapid Accel : The acceleration rate of the machine that will be running the exported G-code. This is also used for estimating the runtime for an operation's toolpath. Also within the units of the currently open project. DXF Tolerance : 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. DXF Auto-Join : 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. Model-Layer Samples : 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. Undo/Redo Memory : 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 editing tool definitions and operation parameters. !!! : 32-Bit Memory Limitations Users running a 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, which requires a 64-bit operating system. ### 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: support@deftware.org ### 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. Modern computers, generally those built after 2010, will have a faster GPU than CPU for image processing tasks. If a computer has slower than average graphics processing capability and 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. !!! Tip 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. ### 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. ### 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. Help Menu --------- 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. ### Visit Website ### Opens the Deftware website (www.deftware.org) using the system's default browser. ### Messageboard ### Opens the public forum (forum.deftware.org) for users to ask questions, receive support, help others, and show off their PixelCNC projects. ### YouTube Channel ### Opens the Deftware YouTube channel where tutorials and walkthroughs for PixelCNC and other software can be found. ### 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 support@deftware.org ### About PixelCNC ### Displays information about PixelCNC as well as some version/date and attribution information about 3rd party tools and resources used. View Toolbar ------------ 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: ### 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. ### 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. The keyboard shortcuts for undo and redo are CTRL-Z and CTRL-R, respectively. These UI buttons are disabled when not in 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. 3D View ------- 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 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. Project Modes ============= 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". The project canvas is the input that an operation generates its toolpath from. It is the default project mode when PixelCNC is run and when a new project is created or an existing one is opened from the file system. From this mode users can setup their canvas and add/remove "layers" which serve as the contents of the canvas. 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. Layers can be positioned, scaled, rotated, and blended together. 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. 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 application window. These are as follows: ### Canvas Properties ### This activates a UI panel on the right side of the window for specifying the project canvas' parameters. Canvas Resolution : 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 500 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 * ******************************************************************************* Z-Fill : 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. Apply : 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. Done : 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 while a layer's editing mode is enabled along the right UI pane. There are four different canvas layer types each with a different purpose and usage: + 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. 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 support@deftware.org ### 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. ### 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 specified positive or negative offset distance value. 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 accurate paths which use 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 length parameters accessed 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! ### Copy to Raster Layer ### Creates a raster-layer from of the canvas composition in its current state. ### 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. ### Edit Raster: Enable/Disable ### Enables editing of the selected raster-layer's contents using the included heightmap editing functions. The raster-editing functions available in this editing mode are as follows: Manual Brush : 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. Adjust Levels : 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. Expand/Contract : 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. Draft Angle : 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. Column/Row Tiling : Repeats the layer's contents by a specified number of columns and rows and percentage spacing between repetitions. Circular Tiling : 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. Quantize : Quantizes the height values of the layer to produce a terraced effect from 3D shapes and surfaces. ### 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. 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. All paths-layers can be edited using the path-editing mode. The XY grid plane is vertically offset to the bottom-plane of the active paths-layer while editing - the plane 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. 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: Selection to New Layer : While in the path-editing mode users can use this function to isolate selected paths to their own separate paths-layer. Simplify Paths : 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. Subdivide Paths : 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. Sweep Paths : 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 * * / * * * ************************************************ ### 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 if text-editing is enabled after it has being manually scaled. 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. This allows the content of these layer types to have access to the array of raster-editing functionality that's available in PixelCNC. ### 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. ### Canvas Layers ### Displayed at the bottom of the Project Canvas panel on the left side of the interface is a scrollable list of the layers that make up the canvas content. Shown on the left side of each layer listed is an icon indicating the layer's type. Layer Groups : Projects have eight layer "groups" that layers can be included in for producing different canvas compositions. Project Operations can then choose which Layer Group 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. 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. 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 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. !!! : 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. 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 panel of the user interface. Changes to a layer's properties will not affect the layer until the "Apply" button is pressed. Name : 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. Mirror X/Y/Z : These will mirror a layer along its X and Y axes, and along the Z axis for model-layers Invert (Raster/Text-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. Rotation (Non-Model-Layers) : 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. Smooth (Non-Paths-Layers) : 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. Z-Fill (Non-Paths-Layers) : This allows setting the height of the outer area or "background" of the layer, which is also composited with the canvas using the layer's blending mode. Blend (Non-Paths-Layers) : 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. Apply : 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. Done : 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 ------------- 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 so that tool definitions can 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 slot allowing the definition to be saved to the tool library. Once a tool is is in the library it can be loaded to the project's tools list manually, while in the Project Tools mode, or automatically assigned to an unused tool index if chosen from the library for a project CNC operation by clicking the bookstack button next to an operation's Tool parameter. 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: Name : 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. Type : 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. Inches/Metric : 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. Total Length : 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 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. PixelCNC will automatically restrict the corner radius of a cylindrical tool to this amount. 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. Ramp Angle : 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. Apply : 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 ------------------ 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 there are a few buttons made visible on it within the list. These buttons (from left-to-right) are: + Move Up: Swap the operation with the operation before it. + Move Down: Swap the operation with the operation after 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. + 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. + 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 ### Chooses which Layer Group number 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. ### 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). !!! Warning 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' 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. Entry cuts begin at 0.04" or 1mm above the specified Min Depth below the top of the canvas, or above the previous layer of cuts. Multiple layers of cuts will be generated if Cut Depth is smaller than the difference between Min Depth and Max Depth. ### 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. ### Min Depth ### This is the minimum depth below the top surface of a project that cuts will be at. The first layer of cuts are generated between Min Depth and Min Depth + Cut Depth. 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. !!! Tip 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 Offset/Trochoidal/Profile Milling and Medial-Axis Carving: Offset ### Offsets the paths produced from the canvas when contoured at the specified Contour Z plane or a 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. ### Paths Carving: Follow Canvas ### Paths carving can generate cuts which traverse a fixed Z at cut-depth increments until the maximum cutting depth specified is reached, or at cut-depth increments limited to 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 to penetrate the surface of the canvas. 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, 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 Offset/Trochoidal/Profile Milling and Medial-Axis Carving: Contour Source ### These operations allow for using either a Contour Z plane to generate a "waterline" 2D contouring of the canvas or a canvas paths-layer's (closed/circuitous) paths as input instead to cutpath calculation routines. ### 2D Offset/Trochoidal/Profile Milling and Medial-Axis Carving: Contour Z ### This value establishes the Z-plane delineating the canvas contour that's used by the operation 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, or no cutpaths will result when generating an operation's toolpath. ### 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. !!! Tip Offset toolpath generation is more complicated than generating contouring 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 spread across flatter areas. ### 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 cuts 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 contours contained within the outer-most contours for the specified threshold level. This is useful for cutting out a project after it has been carved. It is useful 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. If outline mode is enabled a second option will appear which allows specifying whether the profiling operation should outline the outer-most pockets or the outer-most islands. ### 2D Profile Milling: Cut Width ### Successive profiling cuts can be generated which approach the inner-most cut by using a non-zero cut width parameter. This does not indicate the width of the actual resulting profile cuts 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 canvas and progressing to the inner-most at the canvas surface. The width of the channel produced by a given cut width is equal to the cut width plus the cutter's diameter. ### 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 shift generated cut paths down to along the Z axis. This occurs *after* the min/max cut depth parameters are applied, and is therefore not affected by them. It behaves as though the top-surface of the project were being temporarily offset to a lower position. ### 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 eachother depending on the advection value and the brightness of the project image 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. 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 dark areas and more sparse in lighter areas. Conversely, a negative advection value will invert both cause lighter areas to be dense, darker areas sparse, and invert the effect of the Size Contrast value, so that lighter image areas will result in larger diameter stipples. ### 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 "Modulate Size" 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. 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. ### 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 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. ### Dithered Stippling: Min/Max Dia(meter) ### Indicates the minimum and maximum possible stipple diameter. 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 requisite cutting depth for the maximum stipple diameter specified. For instance, a 90 degree V-bit produces a stipple with a diameter equal to twice the cutting depth. For a cutter as such, a toolpath that can cut a maximum stipple size of 0.25" the canvas must be at least 0.125" deep. ### Cutpath Options ### These options will modify the default toolpath that's generated by each operation's toolpath-generation algorithm. Link Cuts : 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). Distance Sort : 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 : 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). Confine Cuts : 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. Include Edges : 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 ------------------ The simulation renders a calculated approximation of the cuts each operation will produce when run on a CNC router or mill. This project mode's button appears as a film playback icon. Operations are listed on the left-side of the window, as is the case 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 section), will not be included when simulating a project's operations. 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 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. ### Progress Slider ### 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. ### Playback Controls ### Allows controlling the simulation playback state. Play/Pause : Toggles whether or not the live simulation is playing at the set speed. This button can also be controlled via keyboard spacebar to toggle between playing and pausing the simulation playback. Rewind/Stop : When the simulation is not playing this will skip to the beginning of the operation - the cumulative result of all preceding operations (which have their 'include' toggle enabled). If the simulation is playing this button will instead appear as a stop button and will pause the simulation and then appear again with the rewind icon. Pressing it again will result in resetting the operation cut progress back to 0%. Step-Backward & Step-Forward : These double-arrow buttons steps the simulation backward/forward by an increment proportionate to the current simulation speed value. The left and right arrow keys on the keyboard can also be used to step forward and backward through the simulation. Skip-to-End : Opposite of the Skip-to-Start button, this will automatically skip to the end of the operation. ### Speed ### 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. ### Draw Tool ### Toggles whether or not the currently simulated operation's cutting tool geometry is drawn in the rendered simulation. ### Follow Tool ### Toggles whether or not the camera follows the cutter position. ### Done ### Deselects the currently selected operation, leaving the current simulation state visible in the 3D view undisturbed. However, 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.