Начало работы
Первая команда
Откройте окно командного процессора (см. Окно), введите:
Version
Приложение ответит версией и датой сборки. Если это сработало — Open API у вас работает, и всё остальное отличается только набором команд.
Список всех команд:
Help
Справка по одной команде — с синтаксисом, аргументами и примерами:
Help Project
Встроенная справка всегда актуальнее любой документации: она построена из того же кода, который выполняет команды.
Язык команд
У каждой команды два имени — латинское и переведённое. Оба работают, и их можно смешивать:
Проект Открыть "C:\Projects\Filter.gma"
Project Open "C:\Projects\Filter.gma"
Проект Open "C:\Projects\Filter.gma"
Три строки делают одно и то же. Правила простые:
- при английском интерфейсе работают только английские имена;
- при любом другом — и английские, и переведённые, в том числе вперемешку.
Речь о языке, с которым приложение было запущено: список имён читается один раз при старте, и смена языка на ходу его не меняет — см. Смена языка во время работы.
В сценариях и в Python пишите латиницей. Латинские имена не зависят ни от языка интерфейса, ни от уточнений перевода, поэтому такой сценарий одинаково работает у вас и у коллеги с другим языком интерфейса. Переведённые имена удобны для ручного ввода в окне.
Это правило распространяется и на значения: единицы измерения
(Millimetre, GHz) и значения-перечисления (Fast, Adaptive)
принимаются в обеих формах.
Читая значение обратно, просите его без перевода. По умолчанию Get
отвечает тем написанием, которое видно в интерфейсе, — Быстрый, а не Fast,
— и сравнение в скрипте сработает только на поставке с тем же языком. Флаг
NoTranslation переключает ответ на языконезависимую форму:
Preferences Get Grid.Mode → Адаптивный
Preferences Get NoTranslation Grid.Mode → Adaptive
Подробности — в справочнике: Preferences, FEMSolverSettings.
Смена языка не добавляет переведённые имена команд в уже запущенном приложении: их список читается один раз при старте. А вот ответы переводятся сразу. Что именно меняется на ходу, а что нет — Смена языка во время работы.
Смена языка во время работы
Язык интерфейса переключается обычной командой настроек:
Preferences Set General.Language English
Принимаются код локали (en-US, ru-RU), один только язык (en, ru;
регистр не важен) и название языка на любом из поддерживаемых языков
(English, Английский, Russian, Русский). Поддерживаются два языка;
en-GB, de-DE и подобные разбираются, но отклоняются — язык при этом
остаётся прежним. Форма с подчёркиванием (en_US) не принимается.
В ответ приложение говорит «Требуется перезапуск приложения». Это
предупреждение адресовано интерфейсу: уже построенные лента, меню и
диалоги на ходу не перерисовываются, и после переключения окно останется на
прежнем языке. Для работы через Open API — особенно с ключом /invisible,
где окна нет вообще, — картина другая: часть поведения меняется сразу.
Граница проходит ровно по одному правилу.
Что приложение принимает — заморожено на момент запуска. Что приложение отвечает — переключается сразу.
Заморожено до перезапуска
| Что | Пример |
|---|---|
| имена команд, субкоманд, флагов и параметров, которые распознаёт разбор | процесс, стартовавший под английским, не начнёт понимать Версия |
названия режимов — и принимаемые Mode Set, и печатаемые Mode Get | Mode Get → Selected mode: МКР |
| названия единиц измерения | Preferences Get General.Unit Distance → Миллиметр |
тело Help: описание команды, имена аргументов, описания флагов, примеры | Usage: Версия [Файл] |
Переключается сразу
| Что | Пример |
|---|---|
| текст ответов и сообщений об ошибках | Operation successful ↔ Действие успешно завершено |
| переведённые значения параметров | Off ↔ Выкл, Memory ↔ Память |
заголовки разделов в выводе Help | Usage: ↔ Использование: |
Preferences Get General.Language отвечает кодом локали (en-US) и от языка
не зависит вообще — читать его можно без NoTranslation.
Что из этого следует
Переключение на английский проходит без потерь. Всё, что процесс принимал до переключения, он принимает и после: латинские имена работали всегда, а переведённые, если процесс стартовал под этим языком, остаются приняты как дополнение. Ответы становятся английскими сразу. Перезапуск здесь не нужен.
Переключение с английского не включает переведённые имена. Процесс,
стартовавший под английским, после Preferences Set General.Language Russian
по-прежнему отвечает Команда "Версия" не поддерживается — хотя само
сообщение об отказе уже переведено. Латинские имена продолжают работать, так
что сценарий не ломается; чтобы набирать русские имена, приложение нужно
перезапустить.
Ответы меняют язык прямо посреди сценария. Это единственный способ
реально сломать автоматизацию переключением языка: строка, которую Get
вернул до команды смены языка, и строка после неё — на разных языках.
Сравнивайте значения только с флагом NoTranslation, и тогда переключение
на сравнения не влияет.
Выгрузка *.txt, сделанная после переключения, получается смешанной. В
одном файле окажутся значения на новом языке (они живые) и названия единиц на
старом (они заморожены):
General.ModernGl=Off
General.Unit=Distance=Миллиметр;Angle=Градус;...
Такой файл выглядит английским, но в англоязычном экземпляре строка с
единицами не применится — при этом импорт ответит «Operation successful»,
потому что отказом считается только импорт, не применивший ни одной
строки. Выгружайте с NoTranslation либо в *.ini/*.json.
Настройка сохраняется. Язык пишется в настройки пользователя, поэтому
сценарий, переключивший язык, меняет его и для следующего обычного запуска
GAMMA с окном. Если переключение нужно только на время прогона — верните
исходное значение в конце: прочитайте его Preferences Get General.Language
перед изменением.
Имя с пробелом
Если имя или путь содержит пробел, возьмите его в кавычки:
Project Open "C:\Мои проекты\Фильтр.gma"
Кавычки при разборе снимаются. Круглые скобки, наоборот, остаются частью значения — так задаётся точка:
Geometry Create Box b1 (0 0 0) 10 5 2
(0 0 0) здесь — один аргумент, начальная точка; 10 5 2 — три отдельных
аргумента (длина, ширина, высота). Точный набор аргументов у любой команды
показывает встроенная справка: Help Geometry Create Box.
Первый сценарий
Сценарий — текстовый файл с расширением .gcp, по одной команде в строке.
Создайте first.gcp:
REM Первый сценарий
Version
Help
Exit
Запустите:
Gamma.exe first.gcp
Приложение выполнит команды без показа окна и закроется. Проверить результат — по коду возврата:
Gamma.exe first.gcp
if %errorlevel% neq 0 (
echo Сценарий завершился с ошибкой, код %errorlevel%
)
Подробнее — Сценарии.
Что дальше
- Справочник команд — что вообще можно;
- Примеры — рабочие сценарии целиком;
- Python — если сценарию нужны условия, циклы и разбор результатов;
- Клиент на C++ — если управлять GAMMA нужно из своей программы.