Визуализационная модель (интерфейс программного комплекса "АТЛАС") предназначена для приближения процесса тренажа к реальному промышленному процессу, и формируется на основе следующих библиотек:
Связующим звеном библиотек является язык описания интерфейса технологического оборудования. Библиотека графических изображений строится методом ассоциативных связей рабочих мест оператора. На языке описания интерфейса создается сценарий вывода графических форм в процессе тестирования. Функции языка описания интерфейса разделены на несколько динамически подключаемых библиотек DLL. Это позволяет изменять графические функции не затрагивая программу АТЛАС. При старте программы загружаются DLL и становятся доступны операторы описания интерфейса. В файл конфигурации введены параметры разрешения экрана, а по умолчанию программа использует разрешение Windows в полноэкранном режиме. Все координаты в языке интерфейса указываются в относительном разрешении, заданном в конфигурации. Если для растровых изображений заданы размеры в относительных координатах, то изображение масштабируются. Для того, чтобы растровые изображения не масштабировались параметры размеров задавать не следует.
Сценарий состоит из последовательных кадров, их описание содержит набор функций языка описания интерфейса:
Первая значащая строка файла сюжета Test.Sug обозначает задание. Символ "$" означает переход на следующую строку.
Пример: Аварийная ситуация: $Завышение давления $ в колонне 270.
Текст программы на языке описания сюжета состоит из операторов и функций, сгруппированных по кадрам. Параметры функций разделяются запятой, необязательные параметры идущие в конце функции могут быть опушены. Параметры в середине функции также могут быть опущены, при этом количество опущенных параметров определяется количеством идущих подряд запятых.
При загрузке кадра выполняются функции инициализации всех операторов кадра, после чего пользователь может работать с активными элементами кадра. При выполнении оператора Goto происходит выгрузка всех активных элементов кадра и загружается новый кадр.
Форма записи: Kadr {Наименование кадра}{; Комментарий}.
Пример: Kadr Kip16_19;
Рекомендуется в первом кадре разместить титульное меню тренажера, во втором кадре описание меню инструментов и режимов работы, в третьем кадре описание тренировочного задания выводящееся по клавише .
Форма записи: Include(Имя файла) {; Комментарий}.
Пример: Include(Kip.inc)
Описание кадра состоит из набора функций рисования, которые могут иметь параметры различных типов. В качестве некоторых числовых параметров функций могут быть использованы константы, приведенные в таблице 1.
Таблица 1
Наименование константы | Значение | Примечание |
Константы задания цвета | ||
ПРОЗРАЧНЫЙ | 0 | Для операторов: Bmp, Circle, Pcx, Ramka, Text, TextC, Name, Ris, Rod, Knopka, Lampa, Value, Digit, Bar, BarI, ShRis, ShText, ShValue, Win. |
СИНИЙ | 1 | |
ЗЕЛЕНЫЙ | 2 | |
ЦИАН | 3 | |
КРАСНЫЙ | 4 | |
ФИОЛЕТ | 5 | |
КОРИЧ | 6 | |
СЕРЫЙ | 7 | |
DARKGRAY | 8 | |
С_СИНИЙ | 9 | |
С_ЗЕЛЕНЫЙ | 10 | |
С_ЦИАН | 11 | |
С_КРАСНЫЙ | 12 | |
С_ФИОЛЕТ | 13 | |
ЖЕЛТЫЙ | 14 | |
БЕЛЫЙ | 15 | |
ЧЕРНЫЙ | 16 | |
HеСтиpать | 255 | Для операторов Pcx и Ramka |
Константы описания шкал приборов | ||
ВЕРТ | 001 | Вертикальная шкала |
ЛОГО | 002 | Логарифмическая шкала |
КВАД | 003 | Шкала квадратного прибора |
КРУГ | 011 | Круговая шкала |
КРУГМ | 012 | Круговая шкала с меткой |
ГОРИЗ | 021 | Горизонтальная шкала |
САМ_ВЕРТ | 101 | Самописец с вертикальной шкалой |
САМ_ЛОГО | 102 | Самописец с логарифмической шкалой |
САМ_ГОРИЗ | 121 | Самописец с горизонтальной шкалой |
САМ_КРУГ | 122 | Круглый самописец |
Константы оператора Goto | ||
ВЫХОД | 65500 | Выход из программы АТЛАС |
НАЗАД | 65502 | Возврат на предыдущий кадр сюжета |
СХЕМА | 65504 | Переход на кадр схемы с указанием текущей арматуры |
Функции рисования визуализации при инициализации кадра регистрируют объекты рисования и возвращают их вызывающему оператору. На этапе работы пользователя с активными элементами кадра объекты рисования могут активизироваться, прорисовываться и стираться. Функция рисования может находится в кадре и без вызывающего оператора, в этом случае прорисовка произойдет однократно на этапе инициализации.
Форма записи: Bmp(Имя, X, Y, L, H, Цвет) {; Комментарий}
Пример: Bmp(Obj/Strel2,20,230,0,0,Синий)
Форма записи: Circle(Диаметр, X, Y, Цвет рисования, Цвет стирания)
Пример: Circle(200,220,112)
Форма записи: Emf(Имя файла) {; Комментарий}
Пример: Pribor(Ramka(300,212, 99, 82),261,307,1,Наименование, Emf(OBJ\4), Digit(FA0102,1,57, 65,70,20,,Белый,0), Digit(FA0116,1,57,142,70,20,,Белый))
Форма записи: Exec(Программа Параметры, Тип запуска) {; Комментарий}
Тип запуска = 0 после запуска программы Atlas завершается.Пример: Select(Pcx(Obj\Knop4_,10,10),Exec(D:\NewAge\NewAg3.Exe D:\NewAge F,0))
Форма записи: For(Переменная, X, Y, L, H, Наименование, Pcx0, Pcx1...)
Рисует Pcx картинки в указанную область в соответствии с значением переменной. Устанавливает выбор рамкой этой области и при клике увеличивает значение переменной на 1, что приводит к последовательному перебору картинок.
Пример: Select(Pcx(Obj/Rmk2,386,235,30,30), For(N_009_1,381,230,40,40,'Н-9/1',Obj/Otk,Obj/Vkl))
Форма записи: GoTo(кадр) {; Комментарий}
Пример: GoTo(Kip28_31)
Форма записи: Inc(Переменная, Максимальное значение) {; Комментарий}
Пример: Select(Ramka(98,98,54,54),Inc(N_023,2))
Форма записи: Jpg(Имя, X, Y, L, H) {; Комментарий}
Пример: Jpg(00/Main,0,0,1024,768)
Форма записи: Kran(Переменная, X, Y, Наименование) {; Комментарий}
Пример: Select(Pcx(Obj/Cir ,635,404, 97, 99),Kran(R0262_1,456,247, 'Арматура до рег.клапана$на линии пара в цех.'))
Форма записи: Multi(Пеpеменная, Дискpета, Draw, Draw,..) {; Комментарий}
Пример: Multi(T,5,Pcx(obj/L_Strel,100,100),Pcx(obj/LN_Strel))
Форма записи: Negativ(переменная) {; Комментарий}
Пример: Negativ(Ograda1_1)
Форма записи: Pcx(Имя, X, Y, L, H, Цвет) {; Комментарий}
Пример: Pcx(Obj/Strel2,20,230,0,0,Синий)
Форма записи: Point(Переменная, X, Y, название) {; Комментарий}
Функция находит в сюжете оператор "Kran(" с заданной переменной, переходит на соответствующий кадр и активирует его. Функция предназначена для оформления схем и перехода со схемы к кадру с фотографией арматуры.Пример: SelPre(Pcx(Obj/ArmV,388,215, 8,16),Point(E2022_1,,, 'Арматура на линии расхода емкости тех.№22/1 к Ш.Р.$тех.№1/5.'))
Форма записи: Ramka(X, Y, L, H, Цвет рисования, Цвет стирания)
Пример: Ramka(113,65,306,350,СЕРЫЙ)
Форма записи: Text(ТЕКСТ, X, Y, Цвет, Фон, Делитель)
Пример: Text(Hачало,10,20,Белый,255)
Форма записи: TextC(Текст надписи, X, Y, Цвет, Фон, H, Lmax, №шрифт)
X - Координата X центра надписи (если надпись выходит за экран, то она автоматически сдвигается).Пример вывода моноширинным шрифтом текста: TextC('Наименование тренажера:',400,185,1,255,40,600,0)
Форма записи: Wave(Name, Переменная, Значение) {; Комментарий}
По окончанию воспроизведения звука заданной переменной будет присвоено указанное значение.
Пример: Wave(Wave/avar_pol,Telef,0)
Операторы управляющие выводом объектов не могут использоваться в качестве параметров других операторов.
Форма записи: CFire(X, Y, L, H, Пеpеменная%) {; Комментарий}
Для звукового сопровождения оператора необходим файл "OBJ/Fire.Wav".
Пример: Сfire(300,200,100,150,Fire276A)
Форма записи: Condit(Переменная, Ф.рисования, Уровень) {; Комментарий}
Пример: Condit(Ograda1_1, Pcx(Obj/Ograd1,295,260,0,0,С_Красный),>2)
Форма записи: Fire(X, Y, L, H, Пеpеменная%, Очаг, Отклонение)
Для звукового сопровождения оператора необходим файл "OBJ/Fire.Wav".
Пример: Fire(443,30,100,200,Fire276A,5,-3)
Форма записи: Focus(X, Y, L, H, Xц, Yц, Lц, Hц, dXц, dYц)
X,Y,L,H - координаты вложенного (следующего) кадра внутри текущего;Пример: Focus(156, 74,534,431,308,154,180,191,-10,-33)
Форма записи: Menu(Ф.рисования, X, Y, Делитель, Переменная, Пункт 1, Пункт 2,..)
Пример: Menu(Pcx(Obj/Rmk,364,47,36,36),364,93,2,ProtGaz, НЕТ,КД.,БКФ.,А.,В.,АСВ-2.,ЮПИТЕР)
Форма записи: Name( Переменная, X, Y, Цвет, Фон, Масштаб, Положение, Надпись1, Надпись2,...)
Если установить прозрачный фоном, то надпись центрируется, параметр X задает центр надписи, но если надпись выходит за экран, то она автоматически сдвигается. Положение надписи может принимать следующие значения:
1 - надпись располагается левее и ниже объекта;Выведенная табличка моргает 3 раза после изменения значения переменной для привлечения внимания.
Пример: Name(MA0117_1,473,236,,,6,2,,Include(INC/NARM0101.INC)
Форма записи: Ris(Переменная, X, Y, Цвет, Фон, Делитель, Надпись1, Надпись2, Надпись3,...)
Порядковый номер выводимой надписи зависит от значения переменной. Надпись стирается если значение переменной находится вне диапазона или если строка пустая.
Пример: Menu(Pcx(Obj/rmk0,517,423, 99, 49), 80, 49,2, Menu_T142,Include(Sug/Sostav.inc) Ris(Menu_T142,542,482,зеленый,,1,, T14/1,T14/2,T14/3,T14/4,T17/1,T17/2,T17/3)
Форма записи: Rod(Var, X, Y, ±L, ±H, Проекция%, Цвет)
Var - Переменная арматуры [0..1];Пример: Rod(A0804_2,289,241, -9, 2,50)
Форма записи: Select(Ф. рисования выбора, Ф. рисования после выбора)
Пример: Select(Pcx(Obj/Strel2,20,230),Goto(Kip_F))
Форма записи: SelPre(Ф. рисования выбора, Ф. рисования после выбора)
После инициализации автоматически выполняется "Ф. рисования выбора" синим цветом.
Пример: SelPre(Pcx(Obj/Go_4,27,516,64,32),Goto(Lesn))
Форма записи: Shkaf(Ф. рисования, X, Y, Множитель, Наименование, Лампа1, Лампа2,..)
Пример: Shkaf(Ramka(122,125, 85, 65), 99,261,2, Электрозадвижка №1.$ Возвратный растворитель $ из цеха., Lampa( Z01,0, 30, 10,Красный), Lampa( Z01,1,150, 10,Зеленый), Knopka(DZ01,2, 30, 90,Черный ,ЗАКР), Knopka(DZ01,0, 90, 90,Красный,СТОП), Knopka(DZ01,1,150, 90,Черный ,ОТКР))
Форма записи: Smoke(X, Y, L, H, Пеpеменная%, Очаг, Отклонение, Тип)
Для звукового сопровождения необходим файл "OBJ/SMOKE.Wav". Если Тип=0 рисуется дым вверх; +1 направление вниз; +2 палитра - пар.
Пример: Smoke(200,30,100,200,Smoke276A,5,1)
Форма записи: Stvol(X,Y,L,H,Переменная,Ширина)
X,Y - координаты лафета;Существует возможность рисования нескольких пересекающихся стволов воды.
Пример: Stvol(582,120,-432,-26,WDR_03,20)
Форма записи: Svetofor(Переменная квитирования, Ф. рисования, X, Y, Делитель, Число клеток по горизонтали, Наименование, Kletka1, Kletka2,..)
Пример: Svetofor(Sig1,Ramka( 57,225,200, 84),50,320,1,5, Сигнализация предельных значений, Kletka(Rez,Толуол$из цеха$ДК-1.3,>1), Kletka(Rez,Толуол$из цеха$ДК-5,>1),..)
Форма записи: Tablo(Ф.рисования, X, Y, Делитель, Число клеток по горизонтали, Подпись, Kletka, Kletka, ...)
Пример: Tablo(Ramka( 22, 45,216,161), 5,160,1,9, Kletka(Z08_1,задвижка 8-1$закрыто,=0), Kletka(Z08_1,задвижка 8-1$муфта,#1),..)
Форма записи: Telefon(Рисователь, X, Y, Diviz, Переменная, ЧислоЦифр)
По умолчанию число цифр набора по телефону 4. Оператор Telefon имеет звуковое сопровождение, например при наборе 7665 воспроизводится звук "/wave/Telef/7665.wav".
Пример: Telefon(Pcx(Obj/Rmk,419, 45, 36, 38),385,127,1,Tel)
Форма записи: Wait(Функция рисования, X, Y, Делитель, Строка1, Мин1, Строка2, Мин2,..)
Функция Wait предназначена для быстрого расчета математической модели для заданного количества минут. Ускорение расчета происходит за счет того, что при вычислении математической модели происходит максимальная загрузка процессора, а сама математическая модель ускоряется за счет переменной TimeSpeed. В режиме Wait переменная TimeSpeed принимает значение заданное в файле конфигурации. При выходе из режима Wait переменной TimeSpeed присваивается значение 1.
Пример: Wait(Pcx(Obj/Rmk,311, 45, 36, 38),313, 94, 2, Подождать 5 мин., 5, Подождать 15 мин.,15)
Форма записи: Water(X, Y, L, H, Пеpеменная%, Очаг, Отклонение) {; Комментарий}
Для звукового сопровождения необходим файл "OBJ/Aqua.Wav".
Пример: Water(664,215, 19, 33,FN8225_1,3,0)
Функции отображения переменных при инициализации кадра регистрируют объект, отображающий переменную, и возвращают его вызывающему оператору. На этапе работы пользователя с кадром изменения переменных математической модели отображаются путем перерисовывания шкал приборов.
Форма записи: Kletka(Переменная, Текст, Уровень) {; Комментарий}
Пример: Kletka(P_KIP,Падение P воздуха КИП,>4)
Форма записи: Knopka(Переменная, Присваиваемое значение, X, Y, Цвет, Надпись)
Цвет кнопки должен быть меньше 8 поскольку для получения яркого цвета выбора цвет кнопки увеличивается на 8.
Пример: Knopka(Zd_Par,0,50,50, Красный,ВЫКЛ)
Форма записи: Lampa(Переменная, Контрольное значение, X, Y, Цвет, Надпись)
Контрольное значение может иметь знак условия "=", "<", ">", "#". По умолчанию знак условия "=". Контрольное значение #X означает проверку значения переменной на интервале 0>Переменная>X.
Цвет лампы должен быть меньше 8 поскольку для получения яркого цвета горящей лампы цвет увеличивается на 8.
Пример: Lampa( Z01,#1, 10, 10,Синий,Муфта), Lampa( Z01, 0, 80, 10,Синий,Закрыто)
Форма записи: Pribor(Ф.рисования, X, Y, Делитель, Надпись, Шкала1, Шкала2,..)
Если прибор имеет несколько шкал самописцев, то графики переменных выводятся разными цветами. Для того, чтобы строки надписи выводились соответствующими графикам цветами, предназначен разделитель строк с переключением цветов "#".Пример: Pribor(Circle(70,520,112),200,20,1, Температура 106-II - 4 кл."ВО", Shkala(F%_in_k270,150, САМ_КРУГ,100,86)) Pribor(Ramka( 45,371,177,158),237,225,1, #3- t 17 тар. К-30#4- t питания К-30#5- t верха К-30#6- t куба К-30, Shkala(T_K30_t17,300,,Сам_Гориз,2,6), Shkala(T4 ,300,,Сам_Гориз,2,6), Shkala(T_K30_v ,300,,Сам_Гориз,2,6), Shkala(T_K30_kub,300,,Сам_Гориз,2,6))
Форма записи: Regul( Переменная режим, Переменная ручка управления, Ф.рисования, X, Y, Делитель, Надпись, Шкала1, Шкала2,..)
Пример: Regul(Rj_Flegma,RY_Flegma,Ramka(358,255,100),400,20,1, Флегма на 270 кол Fmax - 32 т/ч кл., Shkala(F,100, Сам_верт,100,0), Shkala(Z,100,Верт,135,0), Shkala(R,100,Верт,170,0))
Форма записи: Value(Пеpеменная, Ф, X, Y, H, Цвет значения, Фон значения)
Ф - формат число знаков после запятой.Пример: Value(F%_in_k270,2,20,150,15);
Форма записи: Digit(Пеpеменная, Ф, X, Y, L, H, Название, Цвет значения, Фон значения, Цвет названия, Фон названия)
Ф - формат число знаков после запятой.Пример: Pribor(Ramka(20,50,90,15),100,200,1,Зах. вода, Digit(F%_in_k270,2,1,1,200,200,Значение,,Синий))
Форма записи: Bar(Переменная, Максимальное значение, X, Y, L, H, Цвет)
Пример: Bar(Test,100,115, 31, 12,150,С_СИНИЙ)
Форма записи: BarI( Переменная, Максимальное значение, Максимальная шкала, X, Y, L, H, Цвет)
Если Цвет=0 шкала рисуется справа от столбика, иначе слева.Пример: BarI(test,100,150,150, 35, 12,150,Зеленый)
Форма записи: Button(X, Y, L, H, Текст, Функция рисования)
Пример: Button(120,208, 58, 18,,Inc(test2,1)), Button(188,208, 58, 18,Выхoд,Goto(i6_kt165)))
Форма записи: Panel(X,Y,L,H)
Пример двух состыкованных панелей: Panel( 2, 19, 99,188),Panel( 99, 19,150,188)
Форма записи: Shkala( Переменная, Верхний предел, Максимальное значение шкалы, Тип шкалы, X, Y, Начальное значение, Конечное значение)
Выводимое значение функция Shkala масштабирует по формуле Переменная*МахШкалы/ВерхПред. Значения по умолчанию:
Верхний предел=100;Пример: Shkala(S000,100,,Сам_Гориз,0,6,-50,100)
Форма записи: ShRis(Переменная, X, Y, L, H, Цвет фона0, Строка0, Цвет фона1, Строка1,..)
Пример: ShRis(test2,122,210, 54, 14,,Ручной,С_Зеленый,Автомат)
Форма записи: ShText(X, Y, L, H, Текст, Цвет текста, Цвет фона)
Пример: ShText( 2, 17,,15,Уставка$$Текущее значение$$Выход на клапан)
Форма записи: ShValue( Переменная, Масштабирующий коэффициент, Число знаков, X, Y, L, H, Размерность, Цвет текста, Цвет фона)
Пример: ShValue(FT9167_A, 1, 2, 6, 65, 90, 18,т/ч, Синий)
Форма записи: Win(X, Y, L, H, Цвет окна, Цвет текста, Цвет фона, Высота шапки, Наименование, Функция вывода в окно1, Функция вывода в окно2,..)
Пример: Select(Pcx(Obj/Reg, 82,464, 18, 34), Win( 0,130,250,230,,,,,Регулятор уровня в Е-166А, ShValue(LE_166_A, 1, 1, 6, 65, 90, 18,%,Синий), ShText ( 5, 20,,15,Уставка$$Текущее значение$$Выход на клапан), ShText (110, 20,,15,PV SP CV CVman), ShValue(R0417_Z,100, 1, 6, 35, 90, 18,%), ShValue(R0417 ,100, 1, 6, 95, 90, 18,%,Красный), BarI (R0417_Z, 1,100,150, 38, 12,150,Зеленый), Bar (LE_166_A,100, 110, 38, 12,150,С_Синий), BarI (R0417_M, 1,100,190, 38, 12,150,0), Bar (R0417 , 1,170, 38, 12,150,С_Красный), ShRis (R0417_R,122,210, 54, 14,,Ручной,С_Зеленый,Автомат), Button (120,208, 58, 18,,Inc(R0417_R,1)), Button (188,208, 58, 18,Выхoд,Goto(i6_kt165)), Panel ( 2, 19, 99,188), Panel ( 98, 19,150,188)))
Визуализационная модель может содержать большое количество кадров (600 и более). Эффективная разработка такой модели возможна только при наличии средств отладки. Отладчик исходного текста на языке сюжет может быть вызван в системе АТЛАС нажатием клавиши . При этом загружается редактор исходного текста на языке сюжет (файл test.sug или файл подключенный оператором Include), а курсор устанавливается на оператор который соответствует последнему объекту кадра выбранному в системе АТЛАС.
Если при инициализации кадра обнаруживаются ошибки, выдается запрос на загрузку отладчика или игнорирование ошибочного оператора.
В отладчике реализованы горячие клавиши:
Поиск по загруженным текстам сюжета, включая подключенные оператором Include. Если текст найдет, то загружается соответствующий кадр, а курсор отладчика встает на найденную строку. Продолжение поиска - . | |
Сохранить файл на языке сюжет. | |
Транслировать измененный в редакторе сюжет и принять к исполнению, без сохранения на диске. | |
Возврат в рабочий режим без применения изменений. | |
Вкл/Выкл режима просмотра координат мыши. | |
Переместить отладчик в нижнюю часть экрана. | |
Переместить отладчик в верхнюю часть экрана. | |
Развернуть отладчик на весь экран. | |
Вставить в текст сюжета координаты мыши. | |
Вставить в текст сюжета разницу между текущими координатами мыши и координатами, вставленными по , используется для вычисления ширины и высоты объекта. |
В отладчике сюжета могут быть использованы 30 горячих клавиш . При нажатии текст программы на языке сюжет раздвигается и записывается строка из конфигурации. Курсор устанавливается на место помеченное √.
Пример задания горячих клавиш файла конфигурации: Select(Pcx(Obj/Cir ,√),Kran(A001,)) ;Арматура Menu(Pcx(Obj/Rmk ,√),,2,ME1_2,Include(inc/Sost_1.inc) ;Меню Ris(ME1_2,√,,,1,Include(inc/ris_1.inc) ;Рис SelPre(Pcx(Obj/Go_7 ,√),Goto(2G_01_01)) ;Goto Pribor(Circle( 50,√),,1,Манометр,Shkala(PV,100,,КРУГ)) ;Прибор Rod(A000,√) ;Шток Select(Pcx(Obj/Rmk,√),For(N_000_1,,50,50,,Obj/Otk,Obj/Vkl));Насос SelPre(Pcx(Obj/ArmV,√,16,8),Point(A2300)) ;Point
Графический отладчик сюжета позволяет разработчику визуализации изменять размеры объектов их местоположение, удалять и копировать один или несколько объектов кадра. Изменения текста программы на языке сюжета происходит автоматически, а при выходе из программы выдается запрос на сохранение исходных файлов.
В режиме графического отладчика сюжета реализованы следующие клавиши:
Правая клавиша мыши на выделенном объекте | Включение/выключение режима графического отладчика сюжета. |
Нажатие левой клавиши и перемещение мыши | Перемещение оператора. - более точное. |
Вращение колесика мыши | Изменение размеров L, H оператора. |
Изменение направления объекта. | |
Удаление оператора сюжета. | |
Удаление всех операторов кадра начиная с текущего. | |
Копирование оператора сюжета. | |
Запомнить текущий
выбранный оператор сюжета для последующей его вставки в любой другой кадр клавишей
. Если ни один оператор не выбран, клавиша вставляет все операторы от точки копирования до начала следующего кадра. | |
Копирование всех операторов до конца кадра с инкрементированием операторов для типовых кадров. После выполнения операции точка копирования переносится на первый вставленный оператор. | |
Завершение редактирования, переход к работе. | |
Выдает запрос на сохранение текущего редактируемого файла сюжета. | |
Отмена последних изменений сеанса редактирования. |
Команды удаления и копирования визуального редактора производят подсчет открывающих и закрывающих скобок в копируемых операторах, причем если встречается оператор Include, подсчет скобок производится внутри этого файла.
Типовым кадром считается кадр с именем TT_XN_nn
где ТТ - наименование тренажера;X - [A..Z] обозначение группы (типа) кадра;
N - [0..9, A..Z] порядковый номер группы кадров (объекта съемки);
nn - [00..99] номер кадра на схеме типовой группы кадров.
Например оператор: SelPre(Pcx(Obj/Go_6 ,736,380,64,32),Goto(D1_A9_03)) на следующий типовой кадр будет скопирован c инкрементом так: SelPre(Pcx(Obj/Go_6 ,736,380,64,32),Goto(D1_AA_03))
После загрузки программа АТЛАС производит поиск внешних библиотек Dll
с названиями
Для разработки Dll необходимы следующие файлы:
Пример DLL на Delphi для добавления функций языка сюжета:
{Библиотека дополнительных функций языка сюжета Атлас} Library Atl_Prib; {Общие системные модули (sys_atl.dll)} Uses Graph,SysData; {Общие системные переменные} Var SR:PSysRec; Const NfuncSys=5; {Число реализованных функций} FuncSys:Array[1..NfuncSys] of Oper =({2:Real,3:PStr,4:PDraw,5:TShkal} (Name:'PRIBOR' ;Func:FPrib ;Tip:0), (Name:'SHKALA' ;Func:FShkala;Tip:5), (Name:'DIGIT' ;Func:FDigit ;Tip:5), (Name:'VALUE' ;Func:FValue ;Tip:0), (Name:'REGUL' ;Func:FRegul ;Tip:0)); Procedure Init(PSR:PSysRec); Begin {Загрузка указателя на блок системных переменных} SR:=PSR; {Подготавливаем место для описаний новых функций} AddMas(SR.Func,NfuncSys); {Копируем описание функций} Move(FuncSys,SR.Func^.OS[SR.NFunc+1],SizeOf(FuncSys)); {Увеличиваем число функций} Inc(SR.NFunc,NfuncSys); End; exports Init Name 'Init'; end.
© ООО "АТЛАС" г.Воронеж, 2007-2013. Все права защищены. |