Программная библиотека интерпретатора
Программная библиотека интерпретатора представляет собой библиотеку динамической компоновки (DLL). Вне зависимости от платформы, для которой реализована библиотека (.NET/нативная), библиотека должна экспортировать две функции:
NCT_GetInterface — возвращает в CAM систему объект, реализующий интерфейс для взаимодействия ядра CAM системы с программной библиотекой (INCT_Interpreter);
NCT_FreeMemory — освобождает память от всех объектов, созданных самостоятельно или полученных от CAM системы в процессе работы.
Пример класса, описывающего функции библиотеки интерпретатора на языке C# (сборка для платформы .NET):
namespace sample
{
public class Interpreter: MarshalByRefObject
{
public static INCT_Interpreter NCT_GetInterface()
{
/* реализация */
}
public static void NCT_FreeMemory()
{
/* реализация */
}
}
}
В сборке .NET эти функции могут быть как статическими, так и методами экземпляра: CAM система создаёт объект класса, заданного тегом NetNamespaceClass файла настроек интерпретатора, вызывает у него NCT_GetInterface, а при выгрузке библиотеки - NCT_FreeMemory. Поэтому у класса должен быть открытый конструктор без параметров.
Описание функций нативной библиотеки интерпретатора на языке Delphi:
function NCT_GetInterface: INCT_Interpreter; stdcall;
procedure NCT_FreeMemory; stdcall;
Описание функций нативной библиотеки интерпретатора на языке C++:
void __stdcall NCT_GetInterface(INCT_Interpreter** Result);
void __stdcall NCT_FreeMemory();
Функция NCT_GetInterface объявлена в CAM системе как функция Delphi, возвращающая интерфейс. Такой результат передаётся не через регистр, а скрытым параметром: CAM система передаёт адрес, по которому библиотека должна записать указатель на объект INCT_Interpreter.
Все типы, необходимые для взаимодействия CAM системы с программной библиотекой интерпретатора, приведены в библиотеках типов. Они распространяются пакетами NuGet из публичного источника пакетов производителя https://nexus.sprut.ru/repository/master/index.json (см. Версии продукта); берите пакеты той же основной версии, что пакет SDK, с которым собран продукт: для C++ и других языков — пакет SprutTechnology.NCInterpreterSDK.tlb (файлы *.tlb, *.h и *.idl), для Delphi — SprutTechnology.NCInterpreterSDK.bpl.x64 (модули IDL.<Имя>.pas). Оба пакета подтягивают по пакету на каждую библиотеку типов.
Следующие TLB-файлы содержат описание типов, которые используются при взаимодействии с библиотекой интерпретатора:
- STNCInterpreter.tlb — основной перечень типов;
- STNCAnalyzer.tlb — типы, используемые для управления анализом текста управляющей программы;
- STNCFormers.tlb — типы, используемые для упрощения построения траектории движения инструмента (линейные/круговые перемещения, циклы);
- STNCConnect.tlb — типы, используемые для защиты интерпретатора (см. Интерпретаторы с защитой);
- STNCCustomInterpreter.tlb — типы для интерпретатора с собственными параметрами (см. Список используемых типов).
Для подключения библиотеки типов к вашей среде разработки, обратитесь к соответствующему разделу документации среды разработки.
Примечание
Регистрация библиотеки типов
Для регистрации библиотеки типов в Microsoft Visual Studio попробуйте следующее:
Найдите файл tlbImp.exe на вашем компьютере. Выполните команду "tlbimp.exe tlb-filename". В результате выполнения команды будет создан файл "tlb-filename.dll" (например, "STNCAnalyzer.dll"). Добавьте этот dll файл в ваш проект через пункт меню "Add Reference".
На странице Примеры интерпретаторов с исходными кодами приведён пример исходных кодов библиотеки интерпретатора, собранной из них 'dll', и пример файла настроек.