Work in progress

We think you can almost hear the click-click-clicking sound from our keyboards as we are working hard on the next version of the CncSimulator. We still have quite some time before the launch of the next beta, but we can already promise it will contain some pretty cool stuff. Curious? Stay tuned!

Backup your settings!

Every now and then we do changes to the settings and registries in the CncSimulator. This may sometimes break the automatic save and restore feature for settings and registries which means you may lose all your settings, workpieces, tools and zero points if you do not have a backup. So please follow this tip to make a backup, especially if you have made lots of own tools and workpieces.

From the menu, click Settings – Simulation Settings

In the Settings Editor menu, click Files – Save Settings

Enter a filename for your file and save it in a folder outside the CncSimulator folder. For example in My Documents. Take note of the filename and folder so you remember where to find it when you need it.

That’s all! The file now contains all your settings, workpieces, tools, materials and zero points.

Remember to save regularly and after having done changes to your settings.

We need your help

Users, we need your help! From feedback, we know that we have many creative and smart users all around the globe. Now we are asking for your help to make the CncSimulator Pro user experience even better.

Do you have a sample CNC file to share? Let us know.

Do you want to write a tutorial for helping others? Great!

Do you have an idea to improve the software? Awesome, let us know!

The address is:

Demo CNC code

Ok, here is a portable demo CNC program that has some of the new features of version Copy and paste, hit play and enjoy!


M98 P9999 L1 (Call data block)
T1 M6
G0 X15 Y15 Z2
G1 Z-5 F250 S2000 M3
G2 X30 Y85 R15
G1 X85
G0 Z2
T2 M6
G0 X30 Y30 Z2
G81 Z-20 R1 M3 M8
G28 Z5 (New command)
O9999 (Data block defining registry data)
(Created for virtual machine: MillingCenterMM.machine)
($OverrideBufferQualitySetting 6)
($Message “This program uses locally defined tools, workpieces, zero points and materials.” 4 0)
($DefineMillWorkpiece “N:Tutorial1:M:Golden” 0 100.00 100.00 10.00)
($DefineMillWorkpiece “N::M:” 1 200.00 80.00 20.00)
($DefineMillWorkpiece “N::M:” 2 20.00 120.00 20.00)
($DefineMaterial “N:Golden” 0 128 128 128 218 165 32 1)
($DefineMillTool “N:Flat mill 1” 0 0.00 0.00 0.00 10.00 50.00 0)
($DefineMillTool “N:Drill” 1 60.00 0.00 0.00 10.00 50.00 2)
($DefineMillTool “N:” 2 80.00 0.00 0.00 2.00 20.00 2)
($DefineZeropoint “N:” 0 30.00 30.00 45.00)
($AddRegPart 1, 30, 30, 35)
($AddRegPart 2, -20, 40)
($AddRegPart 3, 10 20 20.1)
($AddRegPart 3, 130, 20 20.1)

Portable CNC code

What is it and why do I need it?


Well, as you know, programs that use local settings like zero points, tools and workpieces will not run well on another computer because the settings there will probably be very different. If you want to send a program to a friend, you need to make it portable first. Same goes if you want to send a program you want to discuss with us at Maybe you have made a very cool demo and want to send it to us so we can include it as a sample? (Please do).

With the latest version ( it is possible to make programs portable by using the menu function Tools – Make program portable.

What the function does it that it creates a sub program with tools, zero points and workpieces definitions. Instead of using your local settings when running, the CncSimulator will use the tools, zero points and workpieces defined in the sub program.

The sub program is sort of “ugly” as it is full of strange CncSimulator specific commands. That’s why we hide it away at the end of the program to not distract the user. Feel free to move other CncSimulator specific command that you use to the subprogram too. This will give your CNC program a clean look with all “strange stuff” collected in the sub program. The function will automatically add a call to the sub program in the first row. The sub program number will always be 9999 so avoid that number if you plan to make your program portable.

Please note that this function currently only works for milling programs.

New version!

The new beta version is here! See previous posts for some examples of what it new in this version. Here is a list too:

  • Added localizable strings
  • Fixed background color bug when using embedded settings (now it ignores embedded background color)
  • New dialog for opening machines and demo files at the same time.
  • New buttons for reset view and open machine.
  • New displays for coordinates.
  • Added symbols for coolant and spindle direction and displays for feed rate and rpm.
  • Added proxy port + credentials and also default system proxy.
  • Added new advanced 2D view .
  • Added info-panel in 2D view.
  • Interpreter: Fixed tab char problem (was blocking codes after tab).
  • Fixed modal arcs (leaving out G2 or G3 in a line following these).
  • Fixed small bug with green tool path lines with G0 after drilling and fast forward.
  • Fixed problems with arcs in lathe mode. R-arcs now work.
  • Fixed crash when zero point not found.
  • Fixed problem with extremely slow simulations when no workpiece was loaded.
  • Fixed problem with lowercase X,Y,Z in G92 and other functions.
  • Changed order of M-codes like M3, M8 etc so they get interpreted before movements.
  • Added possibility to lift workpieces up in the air.
  • Added surface color to materials to be able to mill painted workpieces or laminated like PCBs.
  • Added simulator command $SetupTool to add tools at run-time.
  • Added simulator command $AddMillPart to add workpieces at run-time.
  • Added $DefineMillWorkpiece, $DefineMaterial, $DefineMillTool and $DefineZeropoint commands for making programs portable.
  • Added menu command “Make program portable” to be able to to send programs to others using the commands above.
  • Added simulator command $OverrideBufferQualitySetting to be able to use higher buffer resolutions.
  • Added Fanuc style G28 command.

3D buffer quality

As you all (hopefully) know by now, you can set the 3D solid buffer quality in the Simulation Settings to Low, Medium and High.


The quality you will be able to use depends on your computer hardware and your demand for speed during simulation. In some situations, for example when milling small parts the High setting will not give enough resolution. Also, users with fast computers and huge amount of RAM memory will want to run a higher setting. With the new version ( we have added a simulator command called $OverrideBufferQualitySetting. You can add it to the start of your program to customize your quality setting. For example, a value of 10 will give a buffer with 10 buffer points per unit. It will also slow down your simulation of course. You can play with this override setting but remember, you can easily create a memory overflow with a too high setting.

This zoomed in part was milled with the Medium setting, look at the edges of the arc and the hole.


This is the same part with $OverrideBufferQualitySetting 10.



Circuit boards

Are you into circuit board milling and drilling? Next version ( will bring the possibility to add materials with a different surface color. This could easily be used to simulate the thin copper layer on top of the circuit board. Also you can lift the board up and add extra parts to look like a clamp. Pretty neat we think!


We have been hacked :(

Important message! Every now and then popular sites get hacked, now it was our turn. Malware scripts were installed on our pages and we had to take the site down to protect our users. We have now restored data from the 24th of April. If you have registered after that date you might have to do it again. We apologize for any problems caused by this and are doing our best so secure the site against future attacks.