Interpreter settings file
The settings file has the SNCI extension (System Numerical Control Interpreter) and the XML format. Its elements are described below. Required parameters are marked in the corresponding column.
The values of the interpreter's own parameters are stored not in the SNCI file but in a separate *.sncix file that refers to the interpreter; for how to create it and where to select it, see the section on types for an interpreter with its own parameters on the List of used types page.
Description of the SNCI file elements
| Element name | Field format | Description | Required |
|---|---|---|---|
| NCInterpreter | Tag | Root element | * |
| CNCSystem | String | Controller/machine name | |
| MachineType | String | Machine type, options:
| |
| UseGeomCLData | Boolean | Sets the flag of using the interface for constructing the tool path in geometric axes. True — the INCT_GeomCLData interface is passed from the CAM system to the interpreter to form the tool path. False — the INCT_CLData interface is passed from the CAM system to the interpreter to form the tool path. The default value is False. | |
| Date | Date | Interpreter date in the dd.mm.yyyy format | |
| Authors | String | Developer(s) | |
| Company | String | Company | |
| Description | String | Description | |
| Version | Number | Version | * |
| ID | GUID | Interpreter identifier (must be unique) | * |
| LibraryID | GUID | Program library identifier (must be unique) | * |
| LibraryFileName_Net | String | Link to the program library for the .NET platform | ** |
| NetNamespaceClass | String | Namespace and name of the class implementing the interpreter (if the LibraryFileName_Net field is filled in) | *** |
| LibraryFileName_x64 | String | Link to the native x64 program library (used if the LibraryFileName_Net field is not filled in) | ** |
| LibraryFileName_x32 | String | Link to the native x32 program library (needed only for an old 32-bit product version) | |
| ParentID | GUID | Parent interpreter identifier (the ID field in the parent's SNCI file) | * |
| ParentFileName | String | Link to the parent interpreter settings file (SNCI file) | * |
| FileExtension | String | Extension of the NC program files | * |
| Registers | Tag | List of interpreter registers | * |
* — required field;
** — either the LibraryFileName_Net or the LibraryFileName_x64 field must be filled in;
*** — the field must be filled in if the LibraryFileName_Net field is filled in.
Description of each element of the register list (Registers):
| Element name | Field format | Description |
|---|---|---|
| Address | String | Register address |
| Name | String | Register name |
| Id | String | Register identifier |
| Comment | String | Comment |
| AddrOnly | String | Possible values:
|
| Sign | Integer | Value sign:
|
| NumeralsBeforePoint.Count | Integer | Digits before the point |
| NumeralsBeforePoint.Zeros | Boolean | Leading zeros |
| DecimalPoint | Integer | Decimal point:
|
| NumeralsAfterPoint.Count | Integer | Digits after the point |
| NumeralsAfterPoint.Zeros | Boolean | Trailing zeros |
| Scale | Number | Scale |
| Modal | Boolean | Register modality flag |
| ModalGroupList | List of values | List of values the register can take |
Fill in the Version tag as in the example below; the CAM system does not use its value (reserved for future use).
The important elements of the interpreter settings file are: its own identifier (ID), the identifier (LibraryID) and the link to the .NET/x64 program library files (LibraryFileName_*), the identifier (ParentID) and the link to the parent interpreter (ParentFileName). The identifiers of the settings file and the program library must be unique (see the article on GUID: Globally Unique Identifier).
The LibraryFileName_* field must point to the program library files relative to the folder where the SNCI file is located. It is recommended to place the program library file in the folder with the SNCI file.
There are two ways to connect a program library to the CAM system:
The program library is developed for the .NET platform (for example, in C#).
In this case, fill in the LibraryFileName_Net and NetNamespaceClass fields, where:- LibraryFileName_Net — link to the program library.
- NetNamespaceClass — namespace and class implementing the interface of interaction with the interpreter. Format: Namespace.Class, for example: Sample.Interpreter.
The program library is native (written in Delphi, C++, etc.)
In this case, the LibraryFileName_x64 field (link to the x64 program library) must be filled in. The x64 version of the program library must be named using the "64" suffix. For example: Sample_x64.dll or Sample_Win64.dll, where "Sample" is the name of the program library.
If the interpreter does not inherit from another interpreter, the parent fields are filled in with empty values:
<ParentID>{00000000-0000-0000-0000-000000000000}</ParentID>
<ParentFileName/>
Fill in the FileExtension tag as in the example below; the CAM system does not use its value (reserved for future use).
The Registers field contains the list of registers for automatic extraction of words from the NC program text. The order of NC program block translation is described in the following article. The register list in the interpreter settings file may be left empty: it will be obtained from the interpreter program library; however, the <Registers/> tag must be present.
The use of the interpreter settings file is described in the G-code based program interpretation section.
Example of the interpreter settings file for a native library (x64):
<?xml version="1.0" encoding="UTF-8" ?>
<NCInterpreter>
<CNCSystem>Sample CNC (mill)</CNCSystem>
<MachineType>Mill</MachineType>
<Date>01.01.2019</Date>
<Authors>Headquarters Team</Authors>
<Company>Headquarters</Company>
<Description>Interpreter for Sample CNC</Description>
<Version>1</Version>
<ID>{79B1410C-67D5-42B6-867B-A3BF30AB3D8A}</ID>
<LibraryID>{80F754D9-EE7B-47CF-A802-A9424D9F6749}</LibraryID>
<LibraryFileName_x64>Sample_x64.dll</LibraryFileName_x64>
<ParentID>{00000000-0000-0000-0000-000000000000}</ParentID>
<ParentFileName/>
<FileExtension>*.cnc</FileExtension>
<Registers/>
</NCInterpreter>
Download the example Sample.snci.
Note
This is a sample of the file format: there is no Sample_x64.dll library for it. Its ID and LibraryID fields are the same as in the sample.snci file of the sample interpreter from Examples of interpreters with source codes, and the sample_inheritance interpreter finds its parent by the sample.snci file name and its ID. Do not put the sample where the CAM system looks for interpreters, and if you make your own interpreter from it, enter new GUIDs in ID and LibraryID.