Interpreters development
  • Interpreters development
v3.0.4
Search Results for

    Show / Hide Table of Contents

    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 nameField formatDescriptionRequired
    NCInterpreterTagRoot element*
    CNCSystemStringController/machine name
    MachineTypeString

    Machine type, options:

    • Lathe — lathe
    • Mill — milling machine
    • TurnMill — mill-turn machine
    • Robots — robot
    • WireEDM — wire EDM machine
    UseGeomCLDataBoolean

    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.

    DateDateInterpreter date in the dd.mm.yyyy format
    AuthorsStringDeveloper(s)
    CompanyStringCompany
    DescriptionStringDescription
    VersionNumberVersion*
    IDGUIDInterpreter identifier (must be unique)*
    LibraryIDGUIDProgram library identifier (must be unique)*
    LibraryFileName_NetStringLink to the program library for the .NET platform**
    NetNamespaceClassStringNamespace and name of the class implementing the interpreter (if the LibraryFileName_Net field is filled in)***
    LibraryFileName_x64StringLink to the native x64 program library (used if the LibraryFileName_Net field is not filled in)**
    LibraryFileName_x32StringLink to the native x32 program library (needed only for an old 32-bit product version)
    ParentIDGUIDParent interpreter identifier (the ID field in the parent's SNCI file)*
    ParentFileNameStringLink to the parent interpreter settings file (SNCI file)*
    FileExtensionStringExtension of the NC program files*
    RegistersTagList 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 nameField formatDescription
    AddressStringRegister address
    NameStringRegister name
    IdStringRegister identifier
    CommentStringComment
    AddrOnlyString

    Possible values:

    • aoValue — the NC program word consists of an address and a value only
    • aoAddr — the NC program word consists of an address only
    • aoBoth — the NC program word may consist either of an address only or of an address and a value
    SignInteger

    Value sign:

    • 0 — unsigned
    • 1 — '-' only
    • 2 — '+' and '-'
    NumeralsBeforePoint.CountIntegerDigits before the point
    NumeralsBeforePoint.ZerosBooleanLeading zeros
    DecimalPointInteger

    Decimal point:

    • 0 — no '.'
    • 1 — '.'
    • 2 — always '.'
    NumeralsAfterPoint.CountIntegerDigits after the point
    NumeralsAfterPoint.ZerosBooleanTrailing zeros
    ScaleNumberScale
    ModalBooleanRegister modality flag
    ModalGroupListList of valuesList 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:

    1. 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.
    2. 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.

    In this article