Консоль opencs
Консоль opencs открывает файл проекта OpenCS (.db) без графического интерфейса: показывает его состав, запускает расчётные задачи, проверки по КЭ и расчёты МКЭ-схем, выгружает результаты в JSON. Одна и та же сборка работает на Windows и Linux и даёт одинаковые результаты на обеих системах.
Консоль удобна для пакетных пересчётов (много проектов или все задачи проекта за один запуск), для расчётов на сервере без рабочего стола и для подключения OpenCS к собственным скриптам.
Экспериментальные команды
Набор команд и формат JSON-вывода пока не заморожены и могут меняться между версиями. Для скриптов, которые должны долго работать без правок, ориентируйтесь на коды возврата и поля status / resultId.
Что консоль не делает: не импортирует DXF, ЛИРА-САПР и SCAD, не формирует отчёты docx/pdf и картинки, не выгружает CSV. Связок с ЛИРА-САПР, SCAD и AutoCAD через COM в консоли нет — они доступны только в OpenCS.
Установка
Консоль требует установленной среды выполнения .NET 10. Папка программы одна для Windows и Linux; в ней лежат две короткие обёртки запуска:
| Система | Обёртка | Как подключить |
|---|---|---|
| Windows | opencs.cmd |
добавить папку программы в PATH |
| Linux | opencs (скрипт sh) |
chmod +x opencs, затем символическая ссылка, например ln -s /opt/opencs-cli/opencs /usr/local/bin/opencs |
После этого команда вызывается как opencs … из любого каталога. Без обёрток консоль запускается напрямую: OpenCS.Cli.exe … на Windows или dotnet OpenCS.Cli.dll … на любой системе.
Python-пакеты для OpenSees и gmsh
Большинство расчётов внешних программ не требует: сечения, проверки по КЭ и расчёт схем решателем CSfea выполняются самой консолью. Python нужен только двум видам расчётов:
- задачам и постановкам OpenSees — консоль считает их через пакет OpenSeesPy, а не через
OpenSees.exe; - построению сетки Gmsh — через пакет gmsh (это та же программа Gmsh, оформленная пакетом Python).
На Linux дополнительно нужны системные пакеты (пример для Debian/Ubuntu):
sudo apt install python3-tk python3-venv python3-pip \
libglu1-mesa libxcursor1 libxft2 libxinerama1 libxrender1 libgl1
python3-tk нужен для OpenSees (см. ниже), остальные библиотеки — для пакета gmsh.
Консоль ищет интерпретатор Python в таком порядке и берёт первый, у которого есть нужный пакет:
- переменная окружения
OPENCS_PYTHON— полный путь кpython/python.exe; - активное виртуальное окружение (
VIRTUAL_ENV) или окружение conda (CONDA_PREFIX); pythonизPATH(на Windows — без заглушки Microsoft Store, на Linux —python3, затемpython).
Если пакеты установлены в отдельное окружение venv, укажите его интерпретатор, например export OPENCS_PYTHON=$HOME/opencs-py/bin/python.
Проверить, что найдено, можно командой opencs tools.
Работа с файлом проекта
Открытие проекта само по себе изменяет файл: программа обновляет структуру базы до текущей версии и дописывает недостающие настройки. Поэтому консоль по умолчанию работает с копией:
- файл проекта копируется во временную папку — исходный файл не меняется ни одним байтом, даже командами
infoиlist; - все расчёты выполняются и сохраняются в копии;
- по окончании копия удаляется, если не указан
--out <файл>— тогда проект с результатами сохраняется в этот файл.
flowchart LR
A["проект.db"] -->|копия| B["временная копия"]
B --> C["расчёт, результаты"]
C -->|--out| D["результат.db"]
C -->|без --out| E["удаляется"]
A -.->|--in-place| C
| Опция | Действие |
|---|---|
| без опций | расчёт на копии, результаты не сохраняются (полезно для проверки) |
--out <файл> |
проект с результатами сохраняется в новый файл; существующий файл перезаписывается только с --force |
--in-place |
работа прямо с файлом проекта (только команда run; несовместимо с --out) |
Если файл открыт в OpenCS, работа на копии разрешена, но изменения, ещё не сохранённые в OpenCS, в копию не попадут — консоль предупреждает об этом. С --in-place такой файл не открывается (код возврата 2). На Linux файл, открытый другой консолью с --in-place, недоступен до её завершения.
Если файл сохранён более новой версией OpenCS, работа на копии идёт с предупреждением, а --in-place отклоняется.
Команды
Общие опции всех команд:
| Опция | Назначение |
|---|---|
--lang ru / --lang en |
язык сообщений и справки (по умолчанию русский) |
--json |
машинный вывод JSON в stdout вместо таблиц |
-q, --quiet |
не показывать прогресс расчёта |
-h, --help |
справка по команде |
Журнал расчёта (сообщения, предупреждения, ошибки) и прогресс всегда выводятся в stderr, результат — в stdout. Поэтому вывод --json можно сразу передавать другой программе.
info — состав проекта
Версия схемы базы, количество материалов, диаграмм, сечений, наборов усилий, задач, результатов, МКЭ-схем, проверок по КЭ и постановок.
list — списки объектов
| Команда | Что показывает |
|---|---|
opencs list tasks проект.db |
расчётные задачи: Id, №, имя, вид, сечение, последний результат |
opencs list checks проект.db |
проверки по КЭ: схема, цель (КонЭ или КЭ), проверка, последний результат |
opencs list analyses проект.db |
постановки расчёта МКЭ-схем: схема, вид, статус, результат |
opencs list results проект.db [--task <id>] |
история результатов расчётных задач |
Id № Имя Вид Сечение Результат
-- -- --------- ------------------------ ---------------- -----------------------------
1 1 Задача 1 torsion_fem 30Б1 #24 error 2026-07-13 15:21:41
2 2 Задача 2 torsion_bem 30Б1 #18 ok 2026-07-13 14:51:46
Вид задачи — технический идентификатор из справочника расчётных задач.
run — расчёт
| Команда | Что считает |
|---|---|
opencs run task проект.db <id…> \| --all |
расчётные задачи |
opencs run check проект.db <id…> \| --all |
проверки по КЭ |
opencs run analysis проект.db <id…> \| --all |
расчёты МКЭ-схем (постановки) |
Объекты указываются по Id (их показывает list) или все сразу через --all; расчёт идёт по очереди. Дополнительные опции:
| Опция | Назначение |
|---|---|
--out, --force, --in-place |
куда сохранить результаты, см. Работа с файлом проекта |
-y, --yes |
отвечать «Да» на вопросы, которые в OpenCS задаются в окне (например, о неполной проверке по КЭ); без --yes принимается ответ «Нет» и пишется предупреждение |
--with-data |
в выводе --json добавить данные результата (data); для расчётов схем они бывают большими |
--artifacts <папка> |
сохранить промежуточные файлы OpenSees и Gmsh (сценарии, журналы, сетки) в папку; без опции они пишутся во временную папку и удаляются |
opencs run task проект.db 6 7 --out результат.db
Задача «Задача 5» выполнена успешно.
Задача #6 «Задача 5»: ok, результат #89
Задача «Задача 6» выполнена успешно.
Задача #7 «Задача 6»: ok, результат #90
Проект с результатами сохранён: результат.db
С --json выводится массив — по элементу на каждый расчёт:
[
{
"kind": "task",
"id": 6,
"tag": "Задача 5",
"status": "ok",
"resultId": 89,
"messages": [
{ "level": "info", "text": "Задача «Задача 5» выполнена успешно." }
]
}
]
status — статус результата (ok, not_passed, not_applicable, not_converged, error, …) или not_run, если расчёт не запускался (например, у задачи нет сечения или набора усилий). Ctrl+C прерывает текущий расчёт; оставшиеся в очереди не запускаются.
export — выгрузка результата
opencs export result проект.db <id результата>
opencs export result проект.db --task <id> # последний результат задачи
opencs export result проект.db --check <id> # результат проверки по КЭ
opencs export result проект.db --analysis <id> # результат постановки
Результат выводится в JSON (в stdout или в файл через -o <файл>): заголовок (id, taskId, taskKind, taskTag, status, created) и данные результата data в том виде, в каком их хранит проект. У проверок по КЭ добавляются построчные результаты femCheckRows. Пример для задачи НДС (поля data показаны частично):
{
"id": 89,
"taskId": 6,
"taskKind": "strain_state",
"taskTag": "Задача 5",
"status": "ok",
"created": "2026-10-14 19:40:45",
"data": {
"converged": true,
"iterations": 4,
"e0": -0.00016265,
"ky": -0.00264619,
"kz": 0.00212055
}
}
Состав data зависит от вида задачи и совпадает с тем, что OpenCS показывает в окне результата.
tools — внешние программы
Показывает, откуда консоль возьмёт OpenSees и Gmsh, их версии и таблицу найденных интерпретаторов Python с пакетами openseespy, tkinter, gmsh. Команду удобно выполнить сразу после установки на новой машине. Отсутствие пакетов ошибкой не считается: расчёты, которым они не нужны, работают.
Коды возврата
| Код | Значение |
|---|---|
0 |
все расчёты выполнены; результаты not_passed (проверка не пройдена) и not_applicable тоже считаются выполненным расчётом |
1 |
хотя бы один расчёт завершился с error, not_converged, частично, был прерван или не запускался |
2 |
ошибка аргументов, файл не найден, не является проектом OpenCS, занят или сохранён более новой версией |
Непрохождение проверки — инженерный результат, а не сбой программы, поэтому оно не меняет код возврата. Статус каждого объекта виден в выводе и в --json.
OpenSees и Gmsh в консоли
OpenCS запускает OpenSees как программу OpenSees.exe и передаёт ей сценарий на языке Tcl. Консоль использует тот же сценарий, но исполняет его пакетом OpenSeesPy: интерпретатор Tcl берётся из стандартной библиотеки Python (tkinter, без окон), а каждая команда OpenSees передаётся в OpenSeesPy. Поэтому модель, нагрузки и порядок расчёта в OpenCS и в консоли одни и те же, а консоль работает одинаково на Windows и Linux.
Сверка на одних и тех же сценариях (OpenSees 3.8.0 в обоих вариантах):
| Расчёт | Отличие OpenSeesPy от OpenSees.exe |
|---|---|
| задача «момент–кривизна» сечения, 60 шагов | до 4·10⁻¹² |
| оболочки многоэтажной колонны, нелинейный расчёт | до 4,4·10⁻⁹ |
| консоль на Windows и на Linux, одна задача | совпадение до последнего знака |
На численно вырожденных шагах результаты могут разойтись. Пример — полностью разупрочнённое сечение, когда касательная жёсткость всех волокон обращается в ноль: одна сборка OpenSees может формально пройти такой шаг за счёт округления, другая — остановиться. Это граница применимости расчёта, а не различие моделей. Такие шаги стоит разбирать по артефактам (--artifacts).
Gmsh в консоли берётся из пакета gmsh: он принимает те же параметры, что gmsh.exe, и строит сетку по тому же входному файлу. Для совпадения сеток версии пакета и программы должны совпадать.
Пути к OpenSees.exe и gmsh.exe из настроек проекта консоль не использует. Переменная окружения OPENCS_EXTERNAL_TOOLS=auto включает поиск программ как в OpenCS (явный путь, переменные окружения, PATH, Python-пакеты последними) — это нужно для сверок.
Примеры
Пересчитать все задачи нескольких проектов и сохранить результаты рядом (Linux, bash):
for f in проекты/*.db; do
opencs run task "$f" --all --quiet --out "${f%.db}.результат.db" --force \
|| echo "есть ошибки: $f"
done
То же в PowerShell:
Get-ChildItem проекты\*.db | ForEach-Object {
opencs run task $_.FullName --all --quiet --out ($_.FullName -replace '\.db$', '.результат.db') --force
if ($LASTEXITCODE -ne 0) { "есть ошибки: $($_.Name)" }
}
Статусы всех задач проекта одной строкой на задачу (с утилитой jq):
Диагностика
opencs tools— найдены ли Python и пакеты, какие версии OpenSees и Gmsh будут использованы.- Журнал в stderr — те же сообщения, что OpenCS пишет в окно журнала;
--jsonпереносит их в полеmessages. --artifacts <папка>— сценарии Tcl, вывод OpenSees и файлы сетки остаются для разбора.- Код
2— проблема с аргументами или файлом, расчёт не начинался; код1— смотритеstatusи сообщения каждого объекта.
См. также: Интерфейс и команды, Справочник расчётных задач, OpenSees и МКЭ, Архитектура решения.