Welcome to the CNCSimulator Blog!

Here we are going to post information about updates of our software and site as well as tips and tricks. Stay tuned for the latest news.

Posted in Uncategorized | Leave a comment

New version – interpreter updates and more

This version brings many improvements to the CNC code interpreter as well as other fixes.

•    Made G90/91 work with coordinates (Example: G90 X200).
•    Made G90/91 work with G0/G1 (Example G90G01Z-2).
•    Corrected an issue with G91 in combination with drilling cycles.
•    Fixed issue when G90/91 was together with other G-codes in the same block.
•    Added a new command $SetG28pos to be able to customize the G28 position.
•    Implemented G53 Move in absolute machine coordinate system.
•    Fixed issue with G0/G1 without coordinates.
•    Fixed issue with G41/42 radius compensation when only activated for two movements.
•    Fixed other minor issues with the radius compensation.
•    Fixed faster rapid movements during fast forward.
•    Added command $SetToolChangePos for customized tool change positions.
•    Made the zoom in and out function to follow the mouse pointer.
•    Added D and P words to G41/42 (See Radius Compensation below).
•    Added new command $DefineDoffsetDiameter (See Radius Compensation below).
•    Added possibility to call subprograms in separate files (See Subroutine and subprograms call below).
•    Added M99 subroutine/subprogram return command (See Subroutine and subprograms call below).
•    Made the L word optional in subroutine/subprogram calls (See Subroutine and subprograms call below).
•    Made so that if a subroutine is missing in the main program, the simulator will look for a file instead (See Subroutine and subprograms call below).
•    Added M97 (See Subroutine and subprograms call below).
•    Made G2/G3 modal.
•    Added a brand new Tool Offset Registry.
•    Added settings for the Tool Offset Registry.
•    Added G43 tool length compensation (see Tool Length Compensation below).
•    Added semicolon comments.
•    Fixed issues with G98/99 .
•    Fixed some issues with drilling cycles. Only G73 does peck drilling now.
•    Added G20/21. They will force the user to change the mm/inch setting.
•    Added G94/95 Feed per min/ feed per rev.
•    Added G61 and G64 for exact stop mode and normal mode.
•    Added pop-up help for G96/96 in turning mode.
•    Fixed issues with the grid in the 2D view.
•    Fixed issues with the graphic zeropoint in the 2D view for turning machines.
•    Fixed issue when clicking on the Stop button while simulating in 2D.
•    Fixed issue with graphic zeropoint in 2D-view inches

Radius compensation (milling)

From this version there are two optional letters used with G41/G2. The first one is the D word that is used to fetch a diameter value from either the in-program defined D-offset registry or the new Tool Offset Registry in the Inventory Browser. The second one is the P word and it used to directly program the compensation distance (radius). If these addresses are omitted, the radius of the currently selected tool will be used for the compensated tool path (default automatic tool radius compensation).

The local in-program D-offset registry can be programmed using the command $DefineDoffsetDiameter.
If no in-program D-offset is found, the simulator will look for the D-offset in the Tool Offsets Registry (Inventory Browser). Please note that the registry has to be enabled in settings before it becomes visible in the Inventory browser.
Please also note that the D-offset values in the Tool Offsets table can be either diameter or radius values depending on the checkbox “Use diameters for tool offsets” under the Program page in settings.


If the D-offset index is not programmed or not found, the current tool radius will be used instead. Also, the D-offset index row has to be checked in the registry to be considered valid.


The Wear value will be added to the tool radius/diameter when the compensation is calculated.

Example (using automatic and in-program defined offsets):


Please also note that the activation of the Tool Offset Registry adds complexity to the simulator as well as more machine-like realism. For beginners, we suggest keeping the Tool Offset Registry disabled letting the simulator fetch tool values automatically from the normal tool registry. When disabled, D-words can still be present in the G41/42 blocks without having any effect on the tool radius compensation.

Subroutine and subprograms call (all machines)

From this version the subroutines and subprograms calls has been rewritten and improved to maximize compatibility with various CNC controllers. We now also support subprogram calls to separate files.

General rules:

1. You can call subroutines (within the same program) and subprograms (separate file on disk) using either M98 or M97 using the same syntax. M97 has been added to support controllers like Haas.

2. A subprogram can start with either N or O. Both codes are supported as a sub program number.

3. Repetitions can be given using the L word or as the first digits of the P word (last four digits are always program number).

4. If a subroutine number is missing in program the simulator will attempt to find a disk file with the format O####.cnc in the same folder as the main program or in the user defined CNC-folder.

5. A subprogram can also be called with the alternative syntax M98 “mySubProgram.cnc” L…

6. Return from subprograms and subroutines can be done with either M17 or M99.

7. The L word is optional. If omitted, one call will be done only.

Some examples:
Single call to subroutine, no repeats
M98 P1000
M17 (or M99)

Standard call to subroutine, repeating 4 times
M98 P1000 L4

Call to subroutine on line number 555, repeating 2 times
N100 M98 P555 L2
N555 ….
N565 M17 (or M99)

Call to subroutine with repeats in the P address
M98 P51001 (Call O1001 five times)
M17 (or M99)

Calling subprograms
If a subroutine within the same program is missing, the simulator will look for a separate program on disk.
M98 O1099 L2
If there is no O1099 or N1099 in the program, the block above will call subprogram O1099.cnc

File name syntax
M98 “DrillHoles.cnc” L2
The block above will look for subprogram DrillHoles.cnc in the same folder as the main program, or in the user defined CNC programs folder.

Please remember to end all sub programs with either M17 or M99 for execution to continue in the main program.



Tool Length Compensation (milling)

Under normal circumstances, the CNCSimulator Pro user does not have to think about tool length compensation as it is automatically handled by the program. For example, when you call in a tool with M6 the length compensation value will be automatically fetched and applied from the milling tool registry.

For various reasons (realism, education etc.), sometimes the user might want to be able to control what value is used for tool length compensation, even in the simulator. This can be done by adding the G43 code to the program followed by the H word.

The H word specifies the index of the value in the new Tool Offset Registry.

It is important to know that the Tool Offset Registry has to be enabled in settings and the index row has to be checked for the value to be considered valid. If the registry is disabled and/or the index row is unchecked, the current selected tool length will be used instead (default automatic tool length compensation).

Important: The Geometry value specifies the positive tool length sticking out from the holder (this value is normally treated differently in real CNC machines where the gauge line is used; check your machine manual for comparison).


The Wear value will be added to the tool length when the compensation is calculated.


The tool length compensation can also be directly programmed using the P word.

Example: G43 P55.7 Z2 (Setting 55.7 as the tool length compensation).

If the tool length compensation differ from the tool length set in the milling tool registry, the simulator will be “fooled” into milling deeper (tool compensation less than tool length) or shallower (tool comp greater than tool length) than the programmed Z contour depth.

Please also note that the activation of the Tool Offset Registry adds complexity to the simulator as well as more machine-like realism. For beginners, we suggest keeping the Tool Offset Registry disabled letting the simulator fetch tool values automatically from the normal tool registry. When disabled, H-words can still be present in the G43 blocks without having any effect on the tool length compensation.

Posted in Updates | Comments Off

Version 1.1 is here!

This version brings improved stability and new functions. This is our first non beta version.
We have a new kind of tutorials built-in in this version. You find them in the Help menu under “Run Tutorial”. These tutorials will lead you through an exercise, asking you for the program blocks to complete the tutorial. Beginners should always start with the first tutorial in the list (MillTutorial1_Intro) as it explains the basics of the CNCSimulator.



We believe that these new tutorials will be an invaluable tool for educational institutes and CNC students as well as for anyone learning CNC. It is like having your own CNC teacher right in the program!

Have a look at the video.

Posted in Updates | Comments Off

New Product Video

Posted in Info, Updates | Comments Off

Online-help updates

We continue to update the online-help. There is now a tutorial for turning users as well as explanations of new features and dialogs. To make sure you see the latest version, empty the cache in your browser. http://www.wikihow.com/Clear-Your-Browser’s-Cache

Online-help link : http://cncsimulator.com/OnlineHelp/OnlineHelp.html

Be aware that there are still topics that need to be updated. We are working on having everything up-to-date as soon as possible.

Posted in Info, Updates | Comments Off

Bug Alert

A major bug came with the last version ( No settings or inventory (like tools, workpieces etc) will be saved when you exit the application. We are sorry about that and ask you to please update to the new version as soon as possible.

We strongly recommend that you uninstall all previous version of the CNCSimulator Pro before installing a new version to avoid file conflicts and confusions. You can uninstall an older version from the Control Panel in Windows. 

Posted in Updates | Comments Off


We are currently in the process of updating our online-help and tutorials to reflect the changes in the latest version. Under “Codes and commands” in the online-help, you will now find new and updated tables explaining all G, M and other codes understood by the CNCSimulator interpreter. Please be aware that you may have to clear the cache in your browser to see the updated pages.


Posted in Info, Updates | Comments Off

It is here! Version Beta.

We are proud to release our new version of the famous CNCSimulator Pro software. A lot of features have been added, issues have been fixed, new machines have been added, G-codes have been added and stability has been improved.

Some of the new stuff:

  • New machine: 3D Printer
  • New machine: Water Jet
  • New machine: Laser cutter
  • New machine: Plasma cutter
  • Full 3D buffer for milling from the side of the workpiece
  • Improved program settings
  • New “Inventory Browser” for user created workpieces, tools, materials and zero offsets
  • New insert function from the Inventory Browser
  • Improved simulation speed
  • Helix interpolations
  • Faster start-up
  • Improved license handling
  • Added G-codes for plane selection G17 – G19
  • Added G4 dwell
  • Added generic drill/boring/tapping cycles
  • New function that shows the command help when mouse is over a G or M-code
  • Improved “Make program portable” function
  • New Comment and Uncomment function
  • New Create CNC Header function
  • New $-command for swapping the lathe workpiece in the chuck
  • Possibility to mix embedded tools and workpieces with user defined ones
  • More and better samples and demos

And a lot more…

Download today!

Posted in Updates | Leave a comment

Generic cycles

We have added generic cycles G74 – G76 and G82 – G89 to improve compatibility with many CNC controllers.


Posted in Info, Updates | Leave a comment

New command

New function in the coming version: Absolute arc centers. Some users have wished for this feature, so we decided to add it. Simply enter the $AbsoluteCenters 1 simulator command in the beginning of the program to activate absolute circle center values.


Posted in Info, Updates | Leave a comment

Lathe updates

Lathe users, here are a couple of new features for you. You can now (in the coming version) mix embedded tools with your own workpieces, materials and zero points. This takes away the need to create your own tools if you can find ones that suits your work among the embedded ones. If not, let us know, we can always add more tool types and geometries in future versions. Another new feature is the possibility to flip the workpiece around in the chuck to machine both sides of it.


Posted in Info, Updates | Leave a comment