Advanced / Программирование скриптов (Lua)


Как писать скрипты как создавать обработчики событий и действий каков их синтаксис где почитать про это


Добрый день!
Имею лицензию EVT Advanced на рабочем месте в образовательной организации. Работаем со студентами и столкнулись с вопросами.
Где можно взять информацию по работе со скриптами в EVToolbox на LUA?
В Вашем УМК такой информации нет, в документации кусками, что не дает четкого понимания.
Видео о скриптах носит ознакомительный характер на Вашем канале, что не дает четкого понимания.
Книга Роберту Иерусалимски - единственное пособие по LUA,где ни чего нет про скрипты.
Примеры на Githab без разъяснений, что не дает четкого понимания.
КАК БЫТЬ ТО?

Прошу помощи в поиске более полноценной информации о том, как писать скрипты на LUA для EVT. Имеем 15 лицензий advanced и ни какой информации и самом Важном - скриптах LUA.

Очень жду ответа!
bort_sv@mail.ru
Спасибо за любую информацию!

Добрый день. Спасибо за вопрос, это действительно актуальная проблема.

Создание проектов в конструкторе EV Toolbox с использованием языка Lua подразумевает подключение специфических модулей, которые позволяют раскрыть все возможности конструктора. На данный момент полноценная информация по этим модулям находится в описанных вами местах в “техническом” виде, большая ее часть в разделе “Документация” на портале https://eligovision.ru/toolbox/docs/3.4/API/index.html.
Разработчики EV Toolbox начинают адаптировать документацию для быстрого и более простого старта пользователей с применением Lua. В итоге это будет методическое пособие по работе с модулями. Это позволит лучше разобраться с тем, как создавать проекты в Advanced. Как только эта работа будет завершена, мы разместим информацию об этом на всех площадках.

Отредактировано 26 Сен, 2024 11:12

Здравствуйте!

В документации по EV Toolbox версии 3.5 появился Быстрый старт в разделе Advanced

Добрый день !

Подскажите какими командами в скрипте LUA можно создать объект модель - как новый объект не существующий в EVToolbox. Чтобы он появился в EVToolbox автоматически на сцене при запуске скрипта.

Добрый день! Ниже пример кода, который создает в цикле 10 реакторов моделей, загружаемых из ресурсов. Добавьте модель в ресурсы через интерфейс студии и укажите необходимое имя в скрипте. Также не забудьте добавить сам скрипт “main.lua” в ресурсы.

function createModel(num)
    reactor = reactorFactory:create("node.model", reactorContext) -- создание реактора типа "Модель"
    reactorController:addReactor(reactor) -- добавление реактора в объект reactorController, управляющий всеми реакторами

    reactor:freeze()    -- заморозка реактора для настройки его параметров

    reactor.name                    = "model_logo_" .. num
    reactor.model                   = resourceRepository:getResourceByName("ev_model.fbx") -- получения ресурса по имени
    reactor.nodeMask                = NodeReactor.Mask.VISIBLE -- маска узла, в данном случае видимая
    reactor.rotate                  = osg.Vec3(90, 0, 0)    -- вращение модели, в данном случае 90 градусов по оси X
    reactor.trans                   = osg.Vec3(num, 0, 0)   -- перемещение модели, в метрах

    reactor:thaw()
    reactor:configure() -- завершение конфигурации реактора

    return reactor
end

local scene = reactorController:getReactorByName("Scene")

for i = 1, 10 do
    scene:addChild(createModel(i)) -- добавление созданной модели в сцену
end

Отредактировано 22 Ноя, 2024 18:38

Скажите при использовании в скрипте Lua объекта “Система трекинга” какое имя мне нужно писать в команду
local trek = reactorController:getReactorByName(“Система трекинга”) чтобы обращаться через переменную trek в программе к событиям и действиям и свойствам объекта “Система трекинга”. При такой записи не работает - значит имя “Система трекинга” не рабочее - ни где нет имени по которому можно получить реактор объекта “Система трекинга” или данный объект не программируется в LUA?
Тоже самое у объекта “Система” напишите его имя - не работает как и с обхъектом “Система трекинга”

Отредактировано 09 Июл, 2025 16:32

Подскажите пожалуйста или приведите код Lua как задать размеры прямоугольника
local rect = reactorController:getReactorByName(“Rect”)
rect:setRect_size(size)
например как написать код который задает размер прямоугольника 14 на 11 и единицы измерения пиксели?

rect:setRect_size(14, 11, px) так не работает? Или нельзя в LUa задать данный параметр, а можено только в EVToolbox ?

И как задавать новое положение (position) пример кода новой позиции? Тоже не понятно позицию новую кодом как задать?

И еще до кучи подскадите как в LUA у объекта текст изменить размер шрифта - на 14 пунктов - напишите строку кода как это делается - спасибо!
И так же про поля - padding не могу в LUa написать код изменения полей у объекта типа прямоцгольник
Напишите пожалуйста примером

Отредактировано 09 Июл, 2025 16:37

Скажите при использовании в скрипте Lua объекта “Система трекинга” какое имя мне нужно писать в команду
local trek = reactorController:getReactorByName(“Система трекинга”) чтобы обращаться через переменную trek в программе к событиям и действиям и свойствам объекта “Система трекинга”. При такой записи не работает - значит имя “Система трекинга” не рабочее - ни где нет имени по которому можно получить реактор объекта “Система трекинга” или данный объект не программируется в LUA?
Тоже самое у объекта “Система” напишите его имя - не работает как и с обхъектом “Система трекинга”

Добрый день! Объекты, которые присутствуют в проекте в единственном экземпляре, такие как “Система” и “Система трекинга”, имеют зарезервированные имена, которые нельзя изменить. Вы всегда можете узнать имя объекта, нажав в панели объектов правой кнопкой мыши по объекту, в выпадающем списке оно будет указано в первой строке(а в скобках будет указан тип объекта). В данном случае имена объектов - “TrackingSystem” и “System” соответственно.

local trackingSystem = reactorController:getReactorByName("TrackingSystem")
local system = reactorController:getReactorByName("System")
Отредактировано 09 Июл, 2025 16:59

Подскажите пожалуйста или приведите код Lua как задать размеры прямоугольника
local rect = reactorController:getReactorByName(“Rect”)
rect:setRect_size(size)
например как написать код который задает размер прямоугольника 14 на 11 и единицы измерения пиксели?

rect:setRect_size(14, 11, px) так не работает? Или нельзя в LUa задать данный параметр, а можено только в EVToolbox ?

И как задавать новое положение (position) пример кода новой позиции? Тоже не понятно позицию новую кодом как задать?

Чтобы задать размер, нужно использовать два класса: ScreenSize и ScreenUnitLength:

rect.rect.size = ScreenSize(ScreenUnitLength(14, "px"), ScreenUnitLength(11, "px"))

Код ниже задает размер прямоугольника 14 пикселей по ширине и 11 по высоте. Класс ScreenUnitLength принимает два параметра: значение и единица измерения.

Чтобы задать позицию, укажите через дефис строковые значения привязки горизонтальной(left, center, right) и привязки вертикальной(bottom, center, top). Например для привязки к нижнему левому углу:

rect.rect.position = 'left-bottom'

Обратите внимание, что свойство позиции обязательно указывается как rect.position, которому предшествует имя переменной реактора(которое, в данном случае, тоже rect)

 
Зарегистрируйтесь или войдите чтобы оставить сообщение.