Tools for CNC Programmers

HomeNCPlot v2StickFont v2Purchase OnlineNCPlot ResellersNCPlot ForumsCNC ResourcesFree Tools


Thank you for trying NCPlot!

Click here to download NCPlot

You may download and try NCPlot free for 15 days.  After this trial period has expired, the software will stop functioning and you must purchase a license key to continue using it.

The minimum system requirements for NCPlot are:

Pentium® 133 Mhz Processor or better

Windows® 2000, XP, Vista, Windows® 7 or Windows® 8 (32 and 64 bit OS supported)


800 x 600 screen resolution (1024 x 768 or higher is recommended)

256 Colors (24 or 32 bit color is recommended)

For a printable version of the NCPlot help file, you can download the NCPlot Manual in PDF format.

Disclaimer: We accept no liability for damage caused by the use or misuse of NCPlot. Of course NCPlot can help you verify G-Code, but it is only as good as the person interpreting the tool path display. If you have any kind of problem with NCPlot, please report it by email or post a message on the NCPlot Forum.

The current NCPlot version is 2.34:

NCPlot v2.34 Release Notes
October 2, 2016

Bug Fixes

Some error messages were not displaying the correct message information.

The DXF export tool was incorrectly shifting arc entities.



NCPlot v2.33 Release Notes
April 17, 2016

Configuration Changes

The wildcard search character has been changed from the asterisk "*" to the question mark "?" in the interpreter customize list. The configurations that are included in NCPlot have been updated to the new search character, but if you have customized configurations then the wildcard characters will need to be updated manually.

A new configuration page has been added called "Macro B Settings". This page contains settings that allow you to configure NCPlot settings related to macro functions.

Bug Fixes

When the "K" or "Q" addresses were used in an M98 block their values were incorrectly being adjusted by the coordinate resolution setting. If the coordinate resolution setting was not "1.0" then this caused the "K" "Q" values to be incorrect.

Fixed a bug in the run time estimation calculations for lathe. This bug only affected linear feed moves while constant surface speed was active. The calculated move time was too low for moves where the spindle RPM was being clamped at either maximum or minimum RPM during the entire move.

In certain cases the "Replace" tool will skip the next match after a replacement is made. This is fixed.

When manually adding system variables to the variable display window the maximum allowed variable number to add was fixed at 50000, this has been changed to the maximum variable number specified on the macro settings page.


Changed the behavior for saving files. Now when a file is saved the file being overwritten will be moved to the recycle bin before the file is saved. This will allow you to recover older versions of the file.

Updated the behavior for messages created by setting the system variable #3006. You now have the option of cancelling program execution when the message is displayed.

Changed the behavior for the program line highlighting. Whenever a line in a program is selected the program display will update so that the selected line is near the center of the program window whenever possible. This makes it much easier to see upcoming program blocks when stepping or animating through a program.

Improved handling of system variables on the variable display window. You can now add a range of variables when the 'Add System Variable' pop up menu item is clicked. Enter the start and the end variable numbers separated by a dash like so: "5041-5044". You can now also remove more than one system variable at a time by selecting all variables to be removed and either pressing 'Del' or clicking the 'Remove System Variable' popup menu item.

Improved handling of breakpoint expressions. When an expression is typed into the 'Break Expr' box and 'enter' is pressed the entered expression is added to the breakpoint list. Clicking the arrow at the right side of the box will show the current list of break points.

New Features

Added a new tool to the "Tools" menu called "Repost". This tool will convert the active viewport graphic into G-Code. This works solely from the graphic and produces simple 3 axis code.

The DXF export tool now supports exporting rotary axis motion. If your backplot includes rotary axis motion then the saved DXF will now accurately represent the viewport graphics.

Added support for named macro variables. The macro statement "SETVN" has been added and uses this format:
The value following "SETVN" is the number of the first variable to set.

Added new features to the variable display window:
It now includes a column for variable names.
The right-click popup menu has 3 new selections. They are "Edit Variable Value", "Edit Variable Name" and "Delete Named Variable".

Added new features to the find dialog:

Find and replace now supports using wildcard characters. The wildcard "?" will match any number of characters and can be used multiple times in a single search term.

There is a new button for "Find All" which will expand the find dialog to show search results. Every program line with a match for the find text will be added to the search results. Clicking a line in the results box will select the corresponding line in the edit file.



NCPlot v2.32 Release Notes
December 28, 2014

Bug Fixes

The G69 coordinate rotation command was not resetting the commanded angle back to zero, this is fixed.

Fixed a bug in the G65 subprogram call. This bug ocurred when the machine type was set to lathe and a "T" value was included in the G65 block. In this case any "D" or "H" values that were also included in the block were being passed as zero instead of the commanded value.

Closed LWPOLYLINE entities were not being read correctly when importing a DXF file, this is fixed.



NCPlot v2.31 Release Notes
May 5, 2014

Bug Fixes

Fixed a problem with the two line lathe canned cycles incorrectly giving an error message. This was caused by the system variable #4009 not being updated when a canned cycle was cancelled by a group 1 code.

Some Group 00 G-Codes were incorrectly being treated as motion blocks, this is fixed.

When a "T" address was passed with a value of zero from a G65 block, the actual value being passed was the last commanded "T" code instead of the value in the G65 block.

Fixed a bug in the DXF importer. If the last vertex in a polyline included a bulge value, it was added to the drawing as a line segment instead of an arc.

The program expand tool would not output literal blocks after the first one. Blocks in the format ("Literal") will now output the text between double quotes as-is.

If G92 was commanded while G68 was active then the first motion block after the G92 was not being rotated, this is fixed.

A few of the scripting commands were giving errors when an optional parameter was omitted, this is fixed. The affected commands were: NCPMirror, NCPRotate and NCPShift.


The machine configuration setting "I/J/K values are modal" no longer requires the setting "Absolute Arc Centers" to also be on. These two settings can now be turned on or off independently.

The machine configuration toolbar button now also has the dropdown list of configurations. Clicking the button still opens the machine configuration window, but the button now includes the dropdown arrow that when clicked shows the list of available configurations.

The scripts toolbar button now opens a file browse dialog where you can select a script file to execute. A dropdown arrow has also been added to the button which shows the list of available scripts.

On the variable display window the "Eval Block" now shows the block after any customizations have been applied to it. If you have "Interpreter Customize" enabled on the machine configuration then this will allow you to see each block with the customizations applied.

New Features

The macro debugger has a new breakpoint feature. You can now add breakpoints to your program by inserting blocks containing the text "(BREAK)". Both the "Run To Breakpoint" and the "Macro Animate" tools will stop when a break block is encountered. These tools are located on the macro variable display.

Added dwell time to the run time estimation page. This adds any G04 dwell times to the run time estimation separately from the other times. This also shows up as a separate item on the generated report. By using the interpreter customizations you can add times for M-code events such as clamping and unclamping to the run time estimation.



NCPlot v2.30 Release Notes
August 31, 2013

Bug Fixes

The DXF importer would incorrectly read some arc entities as mirrored, this is fixed. This seems to be an issue only with drawings saved from a few particular CAD packages.

If a file was dragged and dropped onto a document being edited the dropped file replaced the edit file instead of opening a new document. This was true even if the edit file was not saved, resulting in loss of work. This has been fixed, this action now opens the file in a new document.

Fixed a bug in the Find functionality that was introduced in v2.25. If the search text was not found a run time error occurred after the message asking if you want to search again from the beginning of the file.

Fixed a problem with 'Replace All'. When the CR/LF representation "^M" was used in the find/replace text it was possible for NCPlot to lock up in a never-ending loop. This has been fixed.

Fixed a problem with 'Replace All'. If the replace text contained multiple address words and colorizing was enabled then no replacements were made.

When a new document was loaded by a script the document tiling was not being applied to it, this is fixed.

Text typed into the editor was being colorized even if the colorize setting was turned off, this is fixed.

The 'Convert arc I/J/K to R' tool was incorrectly converting helical arcs when the start and end points were the same on the active plane, this is fixed.

The 'Convert arc I/J/K to R' tool was not allowing very small arcs to be converted even if the start and end points were not the same, this is fixed.


The location for saving the license manager settings has been moved. This allows the settings to be shared among all users of a computer rather than requiring each user to define these settings.

Made a change to the isometric view behavior, this view will now pan when both the left and right mouse buttons are pressed together.

The milling canned cycles have been updated to more accurately represent each cycle. This will improve run time estimation for programs that use these canned cycles.

The popup menus for selecting machine configurations and scripts are now alphabetized.

Added a new program coloring scheme. The program can now be colored by the modal G-Code state.

The machine configuration toolbar button now opens the machine configuration instead of the popup list of configurations.

The "save to file" feature of the viewport print preview window will now prompt for a desired image width.

Changed the 'Eval Block' display on the variable display window. This display will now show results of IF, WHILE and GOTO expressions as well as variable assignments.

New Features

The toolbar style can now be selected from the Preferences window. Available styles are Office 2000, Office XP, Office 2003 and Visual Studio 2005.

Added the ability to define the colors for buttons and frames. These settings can be found on the Preferences window.

Added a setting to the machine configurations "G/M Codes" page. This setting is labeled "Maximum Subprogram Nesting Level" and allows NCPlot to match the maximum nesting level of your control.

The "Break arcs into lines" tool has a new setting that allows you to break only arcs smaller than a specified length. This is useful for converting very short arc moves into line segments.

Added a line width setting to the viewport print preview window. This allows setting the drawing line width for printing and for saving the preview as a .BMP file.

Added a new tool called 'Program Expand' to the 'Tools' menu. This tool works similar to the Macro Translator tool, except that it works on the currently selected edit file. It will convert macro programs into longhand G-Code as well as expand loops and subprograms. The expanded file is created in a new document.

Add a new "File" menu item called 'Send To'. This menu allows sending the current edit file to an external application. The application list is customizable via the file 'SendTo.ini' which is in the NCPlot application folder.

Added new scripting functions:

This function allows scripts to launch external programs. This would be useful for sending data to other programs such as CAD/CAM or DNC software.

NCPEvaluate(strExpression, isEmpty, errCode)
This function evaluates an expression given by strExpression and returns a numeric value. If the expression evaluates to <empty> then isEmpty returns TRUE. If there is an error in the expression then errCode returns an integer error code.

NCPParseExpression(strExpression, lPointer, errCode)
This function parses an expression within a string, returning the parsed expression. Parsing starts at the character index specified by lPointer and is updated by this function to the character immediately after the expression.

The possible error codes are:
0 = no error
1 = Expression syntax error
2 = Grouping mismatch
3 = Missing operator
4 = Invalid variable number
5 = SQR operand is negative
6 = LN operand is negative
7 = Division by zero
8 = MOD division by zero

NCPGetVariable(varNum, isEmpty, [pLevel])
This function returns the current value in the specified variable number. If the variable is <empty> then isEmpty returns TRUE. If requesting a local variable then the optional pLevel specifies the program level, 0 = Main program, 1 = sub 1, etc.

NCPSetVariable(varNum, varVal, isEmpty, [pLevel])
This function sets the specified variable number to the value given by varVal. Setting isEmpty to TRUE will set the specified variable to <empty>. If specifying a local variable then the optional pLevel specifies the program level, 0 = Main program, 1 = sub 1, etc.

NCPBreakLines SegmentLength
This function is equivalent to the "Tools / Break Lines Into Segments" tool. The specified segment length determines how many smaller moves are created.

NCPBreakArcsIntoLines MaxDeviation, [MaxLength]
This function is equivalent to the "Tools / Break Arcs Into Lines" tool. The specified maximum deviation amount determines how many line segments are created. The optional MaxLength parameter will break only arcs smaller than this setting. If omitted or less than or equal to zero then all arcs will be converted.

This function is equivalent to the "Tools / Break Arcs At Quadrants" tool.



NCPlot v2.26 Release Notes
September 9, 2012

As of NCPlot v2.26, the MachinistToolbox(tm) plug-in is no longer supported.

Bug Fixes

A test routine for the G71 lathe roughing cycle had been left enabled and could cause bad geometry to be created when plotted. This routine is not yet complete and has been removed.

Fixed some display problems for systems that have the desktop DPI set higher than 100%.

The run time estimation report was always showing the rapid rate from the machine configuration rather than the setting on the run time estimation page, this is fixed.

Viewport window selection now works properly with motion elements that include rotary axis movement.

The block renumbering tool was not properly handling blocks that use numbered block skips, eg. "/2". This is fixed.

The block renumbering tool was improperly updating blocks containing keywords that begin with "GOTO". Some controls use the keywords "GOTOB" and "GOTOF", NCPlot will now ignore these keywords when renumbering.

Fixed a bug in the subprogram formats that allow specifying a target block number. The subprogram call was incorrectly jumping to a block in the same program rather than the target program if a matching block number was found. This has been fixed.


The display of rapid motion on the backplot now includes rotary motion. This includes all three rapid types: interpolated, dog-leg and Z first/last.

Improved the calculations for the length of motion elements that include rotary axis movement. This will improve run time estimates for programs that include a rotary axis.

Improved the find / replace functionality. The Replace All tool is now case-insensitive and now works when a line break (^M) is included in the find or replace text.

Improved the handling of the machine configuration folder. This will enable selecting a configuration folder that is not a sub-folder of the NCPlot installation folder.

The viewport modal display will now hide H and D addresses when their value is zero. The H and D modal values will also be reset to zero when a tool change is commanded so that these addresses will only be displayed when a new offset has been commanded.

Made some changes to the Remove Redundant Endpoints tool to prevent removing endpoints from blocks immediately after a tool change, from offset activation blocks and a few others.

The file comparison tool now uses the active font settings for displaying the files to compare.

Added support for G10 to most of the included machine configurations. This is done by means of a G10 macro that supports G54-G59 and G54.1 P1-P48 work offset setting.

New Features

Added a new setting to the machine configuration "G/M Code" setting page. This setting allows the canned cycle repeat address to be set separately from the M98 repeat address. Either address "L" or "K" can be selected.

Added a new rotary axis type. This new type treats the rotary axis endpoints like a linear axis. If the rotary axis is commanded beyond 360 degrees it will rotate back the same amount when going back to zero regardless if it passes through zero more than once.

Added a macro variable renumbering tool. This tool will display the macro variables that are used by a program and will allow you to renumber them. This tool is found under the "Calc / Renumber Variables" menu.

Added rapid rate settings for each axis to the machine configuration. These settings allow for more accurate backplotting of dog-leg rapid motion and are only enabled when this rapid type is selected.

Added a setting to the preferences window called "Disable colorizing for files larger than xxxx KBytes". As the name implies, this setting allows you to set a size limit for colorized programs. Large files can take a significant amount of time to colorize and this setting will help alleviate that by automatically disabling it. Setting this value to "0" will disable this feature.

Added an interpreter customize page to the machine configuration. This page adds a greater degree of flexibility to the backplotter by allowing you to find and replace text as the program is being interpreted. This does not modify the program being edited, it simply pre-processes it before it gets to the backplotter. This will allow the backplot to do things like ignore specific G-codes, interpret non-standard G-codes and keywords or replace the standard G-codes with custom macros.

Added a system variable that indicates which address has been selected for the rotary 4th axis. The variable is #5110 which will contain one of these values: 1=A, 2=B, 3=C, 21=U, 22=V and 23=W. When used in a macro statement the rotary axis commanded value can be retrieved with the statement "#[#5110]".

Added support to the Haas machine configuration for G47 text engraving. Supports literal string, character and serial number engraving.

Added two new scripting functions to support the "Convert coordinates to ABS" and "Convert coordinates to INC" tools. These functions are:

Added an option to the renumbering tool to renumber existing blocks only. This has also been added to the scripting function NCPRenumber as Rstyle 4.



NCPlot v2.25 Release Notes
July 12, 2012

Fixed some crash bugs related to the macro translator tool.

Added a viewport tool that allows moving the rotation center for the isometric view. This is selcted via the menu "View / Set ISO View Rotation Center" or the viewport keyboard shortcut key "Q". When selected this command waits for you to pick an endpoint on the viewport then shifts the view so that the picked point is centered on the viewport.

Program blocks that begin with the character "%" are now ignored by the interpreter.

Changed the behavior of the "Calc / Measure" tool. Instead of requiring that entities be selected before invoking this tool it will now prompt for 2 endpoints to measure between. This is identical to using the viewport shortcut key "M".

Added a new preferences settings that allows reversing the zoom direction for the mouse wheel. The setting is called "Reverse mouse wheel zoom direction".

Fixed a bug in the DXF importer chaining tool. It was not allowing chains to be created from single entities, this is fixed.



NCPlot v2.24 Release Notes
April 26, 2012

Updated the status bar to match the style of the tool bars.

Fixed a bug that was causing some menu items to appear checked that shouldn't be.

Updated the backplotter to allow more than 256 tool changes in a program.


NCPlot v2.23 Release Notes
April 7, 2012

Bug Fixes

Fixed a problem with rotary axis plotting that was introduced in v2.22

G66 modal macro call was not working with G02 or G03 blocks, this is fixed.

There was a bug that allowed the viewport refresh while macro stepping was active. Doing this caused an error message when trying to continue with the macro stepping. Now when macro stepping is in progress and a viewport refresh is requested you will be prompted to confirm the cancellation of macro stepping.

Fixed a bug in the zoom extents tool on the lathe front turret view.

Improved the calculation accuracy for some geometry routines.

NCPlot would crash when attempting to load a binary DXF file. This file format is not supported and a message will now be displayed when attempting to load this type of file.

Fixed a bug in the 'Modal values to display' setting on the machine configuration. If a "G" was included with no value following it, an error occurred.

Fixed a bug in the Break Arcs into lines tool. When breaking a helical arc command that did not include a Y axis endpoint the tool would incorrectly insert two "X" values.

The print black and white setting now works for the print program tool.

New Features

Updated the find/replace tool to allow doing a find/replace within a selected region of the program.

Tool list enhancements
Remembers the visible state of the tools when refreshing the plot if the tool list does not change
Added menu item 'Show Only This Tool' which hides all but the tool that was clicked
Added menu item 'Select This Tool' which selects the region of the program for the tool that was clicked
Added menu item 'Highlight This Tool' selects all the entities on the viewport for the tool that was clicked

The keyboard shortcuts can now be exported and imported via the 'Setup' menus 'Export Settings' and 'Import Settings'

The viewport print preview now allows the preview image to be saved as a bitmap file.

Added two new scripting functions:

NCPMsgWindow Message, Time
"Message" is a string to be displayed in a pop up message window.
"Time" is an optional value in seconds to display the window.

When a message window is displayed without a timeout value, this function will close the window. A new message may be displayed without first closing the previous message. The message will close when the script execution ends.


Viewport set as reference will now use only the visible viewport entities.

The viewport rotation icon now draws on top of the backplot, keeping it visible.

The break arcs tool now give a default value when prompting for the 'Maximum Path Deviation Distance'.

The print program and print viewport tool will now remember the orientation and print black and white settings between uses. These settings are remembered separately for program and viewport printing.

Changed the data entry for the work offsets and extended work offsets on the machine configuration so that pressing 'Enter' is not required.

Added a setting to the license manager settings, you can now specify the hostname where the license manager is located.

The scripting engine is now re-initialized before a script is executed. This will clear all previous variable declarations.

The "Remove Redundant Endpoints" tool will now reset when an M02, M30, M99 or M06 is encountered.


NCPlot v2.22 Release Notes
July 7, 2011

Bug Fixes

Rotary 4th axis motion was not correctly displaying incremental moves greater than 360 degrees, this is fixed.

Fixed a display problem when rotation G68 and scaling G51 were applied at the same time.

Fixed a display problem that occurs when multiple files are open and maximized then one is closed.

Fixed several problems with DXF importing for lathe.

Fixed a problem that was preventing NCPlot from being registered on machines that had Asian language packs installed.

New Features

Added feed override and rapid override controls to the run time estimation page. These controls may be adjusted to see the effect that they have on machine run times.

Added new functionality to the tool list toolbar. The tool list can now control the visibility of its corresponding tool path on the viewport, allowing individual paths to be turned off or on. The plot controls then will skip over any hidden parts of the backplot graphic.

Added two new buttons to the plot toolbar, these buttons are "Plot backward to previous tool" and "Plot forward to next tool". As their names imply these two buttons allow jumping the plot forward or backward one toolchange at a time.

Added a modal value display to the viewport marker. Additional modal information can now be displayed along with the location display next to the marker. The information to display is selectable and is defined on the Machine Configuration under the "Viewport Settings" page. There is a new setting called "Modal values to display", simply enter the letter addresses to be displayed next to the viewport marker.

Added a new option to the rotary 4th axis configuration. The new option allows selecting one of two rotary command types. The two types are "Take shortest path to endpoint" and "Sign indicates direction". When the shortest path option is selected the rotary axis chooses a direction that results in less than 180 degrees of movement. When set to 'Sign indicates direction' the rotary axis will move to the designated endpoint in the direction indicated by the sign of the endpoint value.

There is a new preferences setting labeled "Pause animation at tool changes" that when checked will cause the program animation to stop at the end of each tool's motion. Clicking the animate button again will resume the animation. This setting has been added to the "NCPGetPrefSetting" and "NCPSetPrefSetting" scripting functions as "AnimateTCPause".


The mirror tool will now swap G41/G42 commands in the mirrored code.

Updated the script function "NCPRotate" to allow rotation in any of the three planes.


NCPlot v2.21 Release Notes
September 12, 2010


The tools "Break Arcs Into Lines" and "Break Arcs at Quadrants" now support both absolute and incremental endpoints as well as center points.

The tool "Break Lines Into Segments" now supports both absolute and incremental endpoints.

When the subprogram setup is set to warn if sub not found there is now an option to cancel program execution when the message appears.



NCPlot v2.20 Release Notes
September 6, 2010

New Interface Features in NCPlot v2.20

NCPlot is now an MDI application. This means that you can now open and edit multiple documents at the same time. This is a major interface update that will lead to some useful new features.

Added a "Window" menu that contains a list of the open files as well as tiling options for automatically arranging the files in the document workspace.

There is a new toolbar that displays that currently open files. Clicking the name of a file on the toolbar will make the associated file the active document. If there are more documents open than the 'Open Files' toolbar can display you can now click the small band at its right end to see a list of the non-visible document names.

The graphics viewport now behaves like a toolbar, allowing you to detach it from the application window or close it altogether. Added a heading just above the viewport that displays the name of the file that the viewport is currently associated with. Clicking the viewport or using any of the plot controls will activate the edit file that created the backplot.

Added an option to the Preferences dialog called 'Auto Arrange Files'. When this option is checked the open files will re-tile themselves whenever a file is opened or closed, the application window is resized or any of the toolbars are moved. The last selected tiling option from the 'Window' menu is used.

Added preferences setting to select whether a new file is opened on startup.

Added a file comparison tool. You can access this tool via the menu "File / Compare files" and also the new toolbar button on the "Edit" toolbar.

Added a "Toolbars" submenu to the "Setup" menu. This menu displays all the current toolbars and allows you to turn them on or off from the menu.

New Backplotter features

Added support for G18/G19 during polar coordinate mode G16.

Added new M98 subprogram call format:

M98 P1 Q1 L1 P = Program number
Q = Block number
L = Repeat count

Added support for M198 subprogram call:

M198 P1 L1 P = Program number
L = Repeat count

The extended work offset commands G54 P and G54.1 P will now allow the "P" address to be anywhere in the block.

New Tools

Added two new tools to the 'Tools' menu: Convert Coordinates to ABS and Convert Coordinates to INC. These tools allow translating program endpoints between absolute and incremental coordinates.

Added a new arc tool called "Break arcs at quadrants" which will break any arc command that passes through one of the four quadrants. The arcs are broken into up to 3 additional commands of up to 90 degrees each.

Added a new tool called "Break lines into segments" which will break any linear motion into shorter movement segments.

Added a new address translation tool called "Address calculator". This tool lets you create custom translations by allowing calculations to be performed on address values. For each block in the file the address values are loaded into local variables and one or more calculations can be performed using these values. The values in the block can be updated or even removed. For more info, please see the help file.

The rotate tool now allows rotating in the G18(ZX) and G19(YZ) planes.

Added two new menu items to the "View" menu. These are "Set as Reference" and "Clear Reference" which allow you to set the current backplot as the background drawing. This allows you to easily compare two backplots by using one as a background image.


Cleaned up the toolbar customize command list. Also added the available icons.

Extended the maximum system variable range from #50000 to #99999.

Added another range of variables for extended work offsets. The variables now are:

#7001 - #7944 G54.1 P1 - P48
#14001 - #19984 G54.1 P1 - P300
#70001 - #75984 G54.1 P1 - P300

Any variables written in these ranges are duplicated in the other two. For example, writing a value to #14001 also writes the same value to #70001 and #7001. This makes the extended work offset values available at all three variable ranges.

Improved the viewport measure tool. This tool now displays the signed distance in each axis instead of the absolute distance. This gives an indication of direction from the first selected point to the second. The viewport is made active again after dismissing the measurement results, this will allow you to activate the measure tool again without needing to click the viewport in between.

The renumbering tool will now allow you to renumber a selected section of the program only.

The entity info window will now close automatically when closing the file that is currently the active viewport file.

Added font info as comments for the text to g-code tool.

You can now de-register NCPlot from the splash window (Help/About). You must enter the same registration key that was used to register the software. Note that licenses aquired from the license manager cannot be de-registered.


If the Preferences dialog is open and changes have been made to the settings then NCPlot will prompt you to save these changes before shutting down.

Added a preferences setting that allows the translation tools to update values in macro expressions.

Added a new preferences option called 'Zoom After Translate'. This option will automatically zoom to extents after a translation tool is applied as long as the 'Auto Refresh Viewport' is also on.

Machine Configuration

Added a new configuration page for extended work offsets.

Added a machine configuration setting for default script folder. This allows you to specify a script folder for each machine configuration. If this setting is blank then the default scripts folder will be the "\scripts" folder under the installed application folder.

Variable Display Window

The variable display window is now dockable. Also re-arranged it slightly and added the animation speed slider control.

The variable display will now show common variables that are assigned by the program regardless of their contents.

Improved the way the variable list was being drawn. When there was enough variables being displayed to show the vertical scroll bar, the old method caused the list display to jump back to the top of the list after each block in the program. This has been fixed so that the variable list will stay where it is even while animating a program.


Improved printing support:

Printing selected text will now allow printing the colorized text.

Added a print preview window for the viewport printing.

Removed the printing setup menu option, printing operations now use a common setup dialog.

DXF Exporting

The DXF exporter will now export helical arc moves. These moves are actually saved as a series of line segments when saved.

DXF Importing

The DXF importer would not accept polyline bulge values of 1.0, resulting in some arcs being incorrectly imported as lines. This is fixed.

Deleting entities from the viewport after loading a DXF file for conversion would cause an error. The error has been fixed and there is new behavior for deleting DXF entities. You can now only delete entites after chaining has been applied. When the delete key is pressed the chains belonging to any selected entities are removed from the drawing.

When a DXF file is loaded there are now indicators on the drawing that show where each chain start point is as well as the chain directions.

The DXF Conversion Options dialog now has a few new menu selections:

The "Chain" menu has a new option called "Select Chain Start Point". This option allows you to pick the starting point of a chain. After clicking this menu just click a point on the drawing that you want to be the entry point for the chain. Note that this tool only allows you to select closed chains.

There is a new menu called "Rotate". This menu allows you to rotate the loaded DXF drawing.

There is a new menu called "Mirror". This menu allows you to mirror the drawing in either the X or Y axis.

There is a new menu called "Scale". The menu allows you to apply a scale factor to the loaded DXF drawing.

Text to G-Code Tool

Added a new setting to the 'Text on Arc' group called 'Arc counter clockwise'. This setting changes the output from clockwise readable text to counter clockwise readable text.


Added several new scripting functions to give much greater control over NCPlot from your scripts.

Added preferences setting for script execution timeout. This setting determines how long to allow a script to run before prompting you to either allow it to continue or to kill it. Making this setting longer is useful if you have scripts that take a long time to run.

License Manager

Added a license manager settings window that can be used to specify the network IP address of the license server. This is helpful when automatic server detection fails or cannot be used on your network.

Bug Fixes

Fixed crash on startup when using a 3Dconnexion device with Windows XP.

Fixed the shortcut keys on the 'Find' dialog for the 'Find What' and 'Replace With' settings.

Shortcut keys assigned to the items on the 'File' menu were appearing next to the wrong menu item. This is fixed.

Fixed the error message when trying to import settings 'Setup / Import Settings'.

Fixed a bug in the 'step backward' tool. When the step backward tool shortcut key was held down the cursor moved backward through the program correctly but the graphics would not update.

The 'Break Arcs Into Lines' tool was not properly breaking helical arc moves, this has been fixed.

Fixed an error when exporting settings via the "Setup / Export Settings" tool.

When a loaded file was locked by another application is was possible to lose your edits when NCPlot closed. NCPlot now lets you know when a file has been locked.

Fixed a couple of bugs in the remove redundant endpoints tool.

System variables #4314 and #4315 were not being set, these are the modal values for the "N" and "O" addresses, respectively.

Fixed the blend arc calc tool for lathe configurations

The macro translator tool was allowing macro statements through into the resulting code if used before the first g-code or motion block.

Fixed a problem with the program extents being miscalculated in some cases when an arc motion is at the extents.

Fixed a bug in the DXF sorting that could cause some objects to disappear from the drawing.

Fixed a problem with the local variables when using M98 subprogram calls. The local variables were being properly passed to the subprogram, but were not being passed back to the calling program. The M98 sub calls should maintain the local variables.

Fixed a bug in the renumbering tool. If there was a "GOTO" statement in the program without a block number after it the renumbering tool would crash.

Fixed a problem when using the Machinist Toolbox to send code back to NCPlot.

Fixed a problem with the viewport scroll bar. Dragging the scroll bar back and forth several times would eventually lead to an error message.


NCPlot v2.07 Release Notes
July 28, 2009

Bug Fixes

Backslash characters "\" were being removed from the file when loaded, this is fixed.

Fixed the issue with toolbars not restoring to their saved locations.

The auto radius and auto chamfer commands ",R ,C" were not working under lathe configurations, this has been fixed.

The saved variable state was overriding the machine configuration's work offset settings, this is fixed.

The entities created by the auto radius and auto chamfer commands were not being given the correct tool number, this is fixed.

When the M98 subprogram format is set to use the K address as the repetition count the canned cycles will also recognize the K address as the repetition count.


Added the ability to drag text within the edit window. You can now select a region of text and then click and drag it within the edit window.

Find & Replace

The text input boxes on the Find & Replace dialog will now force text entry to be all caps if the "Always Caps" setting is enabled in the Preferences.

It is now possible to include carriage return/line feed characters in the find and replace text. NCPlot replaces any occurrences of the text "^M" with the CR/LF characters before any find or replace operation.

DXF Converter

The DXF importer now supports block instances.

The DXF Conversion Options dialog has a new menu called "Shift". This menu contains tools that allow you to set the zero point of the drawing.

MultiStep Translate

There is a new translation tool call "MultiStep Translate". This tool allows you to combine multiple translation operations into one easy step. Unlike the other translation tools, MultiStep translate always keeps the original program code while inserting new translated code. This allows making multiple translated copies of sections of your program, for example: quickly make rotated patterns by selecting a section of your program, entering a rotation angle and number of copies. The translated program section is inserted into your program immediately following the selected section. You can mirror, rotate, shift and scale all in one operation.

Space Navigator

Improved the response of the SpaceNavigator with large files.

Added a setup dialog for the SpaceNavigator. This dialog allows you to customize the orientation and sensitivity of the rotate, pan and zoom controls. Also added the option to export these settings on the "Setup / Export Settings" dialog. Likewise the "Setup / Import settings" tool will import these new settings.



NCPlot v2.06 Release Notes
February 18, 2009

Bug Fixes

The animate slider, fade slider and tool list would disappear when the close "X" button was clicked on the NCPlot titlebar. If the shutdown was cancelled, these items did not reappear. This has been fixed.

On the address color setup dialog, if the selected color was black then the color box actually showed white.

Some fixes to the toolbars were made. Mostly issues with menu items not being shown in the correct check state on startup.

The "Step Forward" and "Step Backward" buttons on the plot toolbar were set to auto-repeat when held down, this has been changed back to 1-click equals 1-step.

Fixed a problem with running NCPlot on accounts without Admin privaleges. On shutting down NCPlot an error was being generated: "Run-time error 2000: Application defined or object defined error". This error is being caused by the system not allowing NCPlot to save it's toolbar layout file. The fix was to save this file under the user application data folder. An added benefit to this is that each user can now have their own toolbar layout.

The milling canned cycles now properly support G18/G19 plane selection.

Fixed a bug in the DXF conversion setup window. NCPlot was reporting an error when using saved layers.


External subprogram files no longer need to have filenames that begin with the letter "O". NCPlot will now find subprogram files in either format, ie. "" or "" is acceptable. The file extension is ignored and can be anything you like.

Added the ability to select and backplot any program in the loaded edit file. There is a new status bar panel that can be used whenever you have multiple programs in your file. When the panel is clicked a popup menu appears that contains a list of all the programs in your file. Clicking a program on the menu jumps to the selected program and selects it for backplotting. This allows you to backplot any program in your file without the need to rearrange the programs.

Added a tool list toolbar which contains a list of the tool numbers used in the program. This list is populated any time the backplot is refreshed. Clicking on a tool number in the list causes the editor to highlight the line in the program where the tool change was commanded. This creates a convenient way to navigate to the beginning of each tool in the program.

Added a system variable for requesting user input. The variable number is #3009 and it's format is:
#3009=100(Enter Pocket Diameter)
When this block is encountered a user input box appears with the message "Enter Pocket Diameter" and the current value for variable #100. A new value entered into this box is then copied to variable #100.

When saving DXF files the geometry is now saved on separate layers by tool number.

Added support for 3Dconnexion's SpaceNavigator. When present, NCPlot will use this device for dynamic Pan, Rotate and Zoom. All current mouse and keyboard controls still work the same.

NCPlot will now ignore "$" symbols if present at the end of the block.

Network License Manager

There is now support for a network license manager. There are three new menu selections on the "Help" menu:
- Enable Network License Server
Checking this menu item will enable communications to the license manager.

- Check Out License
This will request a license transfer from the license manager. If successful, the license is stored on the client computer so that NCPlot may be run while disconnected from the network. While checked out the license will not be available for other users.

- Check In License
This will return a stored license back to the license manager.

The network license manager is a free download from the NCPlot web site at

The addition of the license manager required changing the location of the license file. This just means that you will have to re-enter your product key after updating to this version of NCPlot.

A third button has been added to the "Help / About" window. This button enables checking for a license server so that this function can be enabled even after the trial period has expired.

Macro Translator

Changed the layout of the macro translator window. Also, this window can now be resized and will remember it's size as well as the last selected macro folder between uses.

Improved the data entry on the macro translator window. After pressing the "Enter" key to accept a new value, the data entry box moves to the next item in the list. After reaching the last item it will move back to the top of the list. Pressing the up or down arrow keys moves the data entry box up or down the list of variables.

Updated the macro translator to allow non-motion and comment blocks to be output.

Added a method to allow the translator to output a string literal. To do this, add a comment line to the macro being translated in this format:
The text between the quotes will be output by the translator as-is. This allows adding special characters or any program code that would not normally be output by the translator.

The macro translator will now remember each macro's parameter settings between uses.

Machine Configuration

The machine configuration option to reverse lathe arc direction has been moved to the control options page so that it will also be available for mills.

Address Colors

Added another setting to the Address Color configuration dialog. This setting is labeled "Other" and is a color setting for any characters not covered by the other settings.


Added some new settings to the Communications Setup page. There are two new settings on the "Transmit" tab:

"Wait for XXX seconds before transmitting" - This setting enables a timed delay before transmitting begins. This is a check box that will then enable the second setting where the actual delay time may be entered.

There are also two new tabs labeled "TX Header" and "TX Footer". These tabs contain text settings where header and footer text may be entered. The header text will automatically be sent before the file to send and the footer text will be sent after.


NCPlot v2.05 Release Notes
July 19, 2008

Bug Fixes

Fixed a bug in the Mill G92 command. The shift values were not being set properly.

Fixed the "Error 52 - Bad File Name or Number" on startup. There were several reports of this and it was being caused by files in the recent file list that referred to drives that no longer existed.

Fixed the mouse pointer flickering while on the edit window. This was more noticeable on some machines than others.

The DXF reference geometry loader was skipping the last entity in the file, this is fixed.


The translation tools will no longer automatically refresh the viewport unless auto refresh is enabled. This works better when multiple translations are applied to large files.

The translation tools will now apply to each subprogram separately. When a new program is encountered in the file the modal state is reset.

NCPlot will now ignore values immediately after the block delete character "/". This makes it possible to plot programs that make use of multiple block deletes /1 /2 /3 etc...

Added support for G66 and G67 modal macro call. The command format is:
G66 P_ Where P_ is the subprogram number

While active, this command causes the specified subprogram to be executed after any motion blocks. Any other addresses on the G66 block are passed to the subprogram as local variables. This command is modal and is cancelled by G67.

Double clicking the middle mouse button will now cause the view to zoom to extents.

NCPlot will now handle nested comments, ie. "(TOOL NUMBER 12 (.5IN_EM))"

Added support for system variable #3006. This variable works similar to variable #3000. It displays a macro message, but unlike #3000 it does not terminate the program.

Added support for system variables #4001-#4020 active modals.


There is a new menu toolbar. The new menu bar follows the look of the rest of the toolbars. The new menu bar also provides icons and a description in the status bar as you navigate the menus.

Enabled toolbar customizing. This feature Allows adding and removing buttons from the toolbars and also allows creating your own toolbars. Here's a brief description of how this works:

The customizable toolbars will have a small band at their end, clicking this band will display a menu that says "Add or Remove Buttons". Hover the mouse over this menu and after a moment you will get a new menu that lists all of the buttons on the menu. Using this menu you can turn on or off each of the buttons on the toolbar. This menu also has an option that says "Customize". Click on the customize option and you will get the toolbar customize window. You can also access this window by right-clicking any of the toolbars and selecting "Customize" from the menu that appears.

The customize window allows you to turn individual toolbars on or off or even create new ones. When a new toolbar is created you get a new, empty toolbar. To move buttons to the new toolbar, drag them from any of the visible toolbars and drop them onto the new toolbar. To copy the buttons instead of moving them, press and hold the CTRL key while dragging the buttons.


The Zoom In / Zoom Out behavior has been changed. The old zoom behavior was to always zoom around the view center point, forcing you to pan the view if what you wanted to see wasn't at the center of the view. The new zoom behavior is to zoom around the current mouse pointer. This allows you to simply point at a feature and roll the mouse wheel to zoom in or out.

There is a new toolbar labeled "View Fade". This toolbar has a slider control that allows you to dim the colors of the backplot. All colors are affected except the currently selected tool. The current tool is updated when you pick an entity on the viewport or use any of the plot controls.

There is a new toolbar labeled "Animate Speed". This toolbar has slider control that allows adjusting the speed of the plot animation.

Improved the way the plot controls handle subprograms. The "Plot to Cursor" tool will now include subprograms up to the cursor position.

Added two new shortcut keys. The "T" key will advance the plot to the next tool, and the "R" key will rewind the plot to the previous tool.

File Menu

Added new print option "Print Selected Text".

Added menu item "Reset Toolbars". This will load the default toolbar layout.

Draw Menu

Added two new menu items, "Step to Next Tool" and "Step to Previous Tool". These work similar to Step Forward / Step Backward, but will advance the plot to end of the current tool.


On the "Tools" menu the "Show part info" menu item has been renamed to "Run Time Estimation"

The run time estimation window now has a button that will generate a printable run time estimation report. This report includes the part extents, a breakdown of machining time per tool and the total machining time.

Machine Configuration

On the "Control Options" page an option was added to allow changing the way addresses with no value are handled. When this option is enabled then addresses with no value are interpreted as having a zero value. When not enabled this will generate an error instead.

On the "Viewport Colors" page an option was added under the "Color by Tool" settings. The new setting is called "Use Global Rapid Color" and allows drawing rapid motions the same color regardless of tool. This is accompanied by a "Global Rapid Color" setting.

A new configuration page has been added called "Run Time Estimating". This page contains machine specific settings used for run time calculations. The new settings are:

Machine Rapid Traverse Rate
Maximum Spindle RPM
Tool Change Time
Tool change on M06/T-Code. This setting is shared by the "Color by Tool" options on the "Viewport Settings" page.


NCPlot v2.04 Release Notes
March 2, 2008

Bug Fixes

The Start menu link to the help file was not working, this is fixed.

Fixed a bug in the expression evaluator:
  Would generate a "Grouping Mismatch" error

Fixed some erroneous results with the ASIN and ACOS functions

The Address Adjustment tool was deleting some address expressions, this is fixed.

Corrected the functionality of system variables #5001-#5004

Lathe canned cycles were not passing all local variables, this is fixed.


The NCPlot toolbars have been updated. The new toolbar system allows toolbars to be undocked from the application window. When docking a toolbar, it can be docked at the top, bottom, left or right side of the application window. When undocked and inactive, the toolbars will fade allowing you to see through them (on Windows XP or later).

The backplotter will now ignore addresses when their expression evaluates to <empty>.
  G00 X0 Y0 Z#100
  If #100 is <empty>, the Z address will be ignored.

The backplotter will now accept addresses with no corresponding value.
  G00 XYZ
  This will be interpreted as:
  G00 X0 Y0 Z0

Auto chamfer now works with +-I, +-K and +-C commands

You can now set a font color to the entire program when Colorize is turned off. The color is selected on the same dialog as the other font settings under the menu Edit / Font.

The canned cycles have been updated to correctly handle cases when no "R" value is given in the canned cycle block.

Changed the way certain settings were being saved in order to accommodate non-English versions of Windows. Because of this, version 2.04 will save its settings in a new location separate from previous versions.

There are two new menu selections under the "Setup" menu which allow exporting or importing of all non Machine Configuration related settings. You can select which groups of settings to save and save them to an .INI file for easy transporting to another computer or as a backup.

  General settings
  Font settings
  Address colors
  Text to G-Code settings
  Subprogram settings

Added a new scripting method which returns the active file name:

Machine Configuration

Added an option for controls that handle G00, G02, G03 as non-modal. When this option is selected, G00, G02 and G03 are active only in the blocks in which they are commanded.

Added an option to allow reversing the rotary axis direction.

Added an option to allow the Rotary axis to rotate around Z axis (C axis)

Added an option to the "Viewport" page to allow loading reference geometry from a DXF file. When a file has been selected, it is loaded and is displayed on the viewport along with the active edit file. This is useful for displaying things such as fixtures or parts of the machine. Another new option on the same page allows setting the display color for this reference geometry.


NCPlot v2.03 Release Notes
August 26, 2007

Bug Fixes

Canned cycle values were still being affected by the computer's decimal point setting under the control panel's Regional and Language settings. When the decimal point character was set to a comma "," instead of a period "." some program values were not interpreted correctly. This is fixed.

The Macro Translator tool would not work while lathe mode was active. This is fixed.

Fixed a bug in the G92 command. The coordinate system was not updating correctly when G92 was commanded while already active.

Helical arcs were incorrectly being drawn as arcs whenever the X or Y mirror image commands were active. This is fixed.

The colorize tool would crash NCPlot if either of the curly bracket symbols "{" or "}" were in the edit window. These symbols will now be automatically replaced with the square bracket symbols "[" and "]" whenever colorize is active or the "Remove Garbage" tool is used.

Lathe canned cycles G70-G73 would not plot properly if the profile ending block was an "N" block number on a line by itself. This is fixed.


Added the ability to swap the edit window and the viewport. This is controlled by a new setting on the Preferences window called "Viewport on the Left".

New tool added: Break Arcs into Lines. This tool will replace G02/G03 commands in the G-Code program with a sequence of G01 commands that approximate the commanded arc. When this tool is invoked you are asked to enter a maximum deviation distance value. This value determines how far the resulting path can deviate from the true arc and will determine how many line segments are required to approximate the arc.

The Text to G-Code tool can now convert multiple lines of text at a time. When entering text into the font preview, press CTRL-ENTER to start a new line of text.

Replaced the Inch/Metric Format settings with a Display Precision setting. This new setting will allow you to set the NCPlot display resolution between 3 and 6 decimal places. This setting affects all coordinate translation tools as well as the Text to G-Code and DXF import tools. Any tool that modifies or creates G-Code will output values with the specified number of decimal places.

Changed the behavior of the clipboard paste function. When using the toolbar button or edit menu item for paste, NCPlot will now only paste the text contents of the clipboard. This avoids situations where you would get an embedded OLE object instead of text when copying and pasting from other applications. Please note that pressing CTRL-V on the edit window still gives the old pasting behavior.

Improved offsetting: The offset tool does a better job of trimming when self-intersecting geometry is created.

Machine Configuration

The machine configuration window has been revamped. The new window should load faster on slower machines. The interface is a little different, instead of a tabbed window there is a list of configuration pages. To change pages, just click an item in the list. Also, there are a number of new buttons on the main configuration window:

Load - Opens a dialog that allows you to browse for a configuration file. This replaces the old drop-down list.

Save - Applies the current changes and saves them to the active configuration file. You no longer need to browse for the file to save as.

Save As - Allows you to save the configuration to a new file.

Apply - Applies the current changes and refreshes the viewport to reflect these changes.

Cancel - Discards any current changes and closes the configuration window.

OK - Applies the current changes and closes the configuration window.

Expression Calculator

The results are now always added to the end of the results window instead of at the cursor location.

Show Variables

The variable list can now be copied to the clipboard or sent directly to the printer. Two new items have been added to the popup menu that appears when you right-click the variable list.


The Comm Setup dialog has been reorganized into three tabbed pages for Port Setup, Receive settings and Transmit settings. The Transmit settings tab includes two new options, these are:

"Remove spaces while transmitting" - When this option is checked spaces will be removed from the data being transmitted.

"Wait for XON before transmitting" - When this option is checked the transmission will be delayed until an XON control code is received from the CNC.


NCPlot v2.02 Release Notes
June 2, 2007


NCPlot would only recognize a particular version of Machinist ToolBox. This has been changed so that NCPlot will work with any version of the MTB ActiveX.

The default file types setting now allows wildcard characters "*" and "?".

NCPlot will now give run time estimates for lathe programs that use constant surface speed (CSS). This calculates run time for both G20 Inch mode (surface feet per minute) and G21 Metric mode (surface meters per minute). This also takes into account the G50/G92 clamp RPM settings "S" Maximum RPM and "Q" Minimum RPM. This requires that feed per rev also be active.

Improved the backplotting speed for programs that make heavy use of subprograms.

DXF Import

The layer header and footer text were not being added when converting a DXF file to a lathe program. This is fixed.


Added an option to the Preferences dialog that allows you to set whether you want the plot to pause at M00 commands.

Variable Display

You can now edit variables that are displayed on the variable display window. Double-clicking a variable number in the list will open a window where you can enter a new value for the variable. You can enter any valid expression as the new value. To set the variable to <empty>, enter the null variable "#0" as the expression.

Expression Calculator

The contents of the expression calculator results window is now saved on exit.

Clicking a line in the results window will now copy that line back to the expression text box. This makes it easier to go back and re-evaluate an earlier expression.


NCPlot v2.01 Release Notes
May 1, 2007


The backplotter now allows comma characters for the auto radius and auto chamfer commands ",R" and ",C".

Made a change to the expression evaluator to allow square bracket comments to follow numeric values. For example: "M06[TOOL CHANGE]". This was causing an error.

Fixed a problem with programs whose program number is designated with the colon character ":". This problem was causing some searched block numbers to not be found. This affected any G-Code or macro statement that required a search for a block number.

Made a change to the Lathe G76 threading cycle to support plotting tapered threads.

The viewport now allows deleting selected entities. Pressing the 'Delete' key will remove any selected entities from the display. This does *not* delete the corresponding blocks from the program. To restore the deleted entities, simply refresh the viewport.

Machine Setup

Added a setting to the 'Machine Type' tab that allows defining the default file types. This defines the types of files that are displayed when browsing for files to open or save.

Added a setting to the 'Control Options 2' tab that allows defining the address used by the G04 dwell command. This setting defaults to the "X" address.


Added an option that allows turning on or off the plotting of files when they are loaded into NCPlot.

Added an option that will cause the viewport to zoom to extents when the view orientation is changed.

DXF Import

When using the "Z Increment" setting, under certain conditions the last entity in the drawing would not be converted to G-Code. This is fixed.

Added support for ELLIPSE entities. Imported ellipses are broken into line segments when read.

Now correctly reads closed Polylines.

Fixed a problem in the chain sorting tool. If the last chain was a single entity, it would disappear after sorting.

Fixed a problem in the chain reversal tool. In some cases an unselected chain would reverse along with the selected chain.

The sorting tool now allows defining the start point for sorting. To do this simply select one entity that is part of the chain you would like it start from.

Macro Stepping

Helical arcs were not being drawn when plotted from the 'Show Variables' window. This is fixed.




Web site content Copyright(c) NCPlot Software, LLC