BIMIT
Планировщик

Как идёт экспорт

Экспорт по расписанию: Bimit, TRM на диск и резерв

Документ описывает технический поток одного экспорта документа при срабатывании расписания: как CAD вызывается один раз и как распределяются цели Bimit / TRM / резерв.

Общее руководство по расписанию: Подробное руководство.

Главное: CAD экспортируется один раз

Независимо от числа целей (ExportToBimit, ExportToDisk) для каждого документа вызывается один DocumentService.Export() и один пакет IPC-команд в CAD (EXPORT_IFC, EXPORT_2D, EXPORT_SHEETS).

Повторный запуск CAD или второй вызов Export() / GetTRM() для тех же артефактов не выполняется.

ЦельКогда срабатываетПовторный CAD?
BimitВ колбэках после ответа CADНет
TRM на диск (папка расписания)В `CompleteExport` из `TrmPathModel`Нет
Резерв в «Документы»В `CompleteExport`, только если загрузка в Bimit упалаНет

Отдельный путь GetTRM() → Export(upload: false) используется только для ручного «Выгрузить TRM» (диалог TRM Light), не для расписания с двумя галками.

Настройки расписания (на документ)

ScheduledExportService.ApplyScheduleExportOptions задаёт DocumentExportOptions:

UploadToBimit  ← schedule.ExportToBimit
SaveTrmToDisk  ← schedule.ExportToDisk
OutputFolder   ← {ExportOutputFolder}/{название документа}/

Затем один раз: documentService.Export().

Диаграмма потока

Режимы

Только Bimit

  1. CAD → IFC/PDF один раз 2. Загрузка в Bimit API 3. TRM на диск не создаётся

Только TRM на диск

  1. CAD → IFC/PDF один раз 2. Bimit не вызывается 3. TRM zip в {папка расписания}/{документ}/

Bimit + TRM на диск (оба включены)

  1. CAD → IFC/PDF один раз 2. В колбэках: параллельно загрузка в Bimit и накопление путей в TrmPathModel 3. В CompleteExport: упаковка TRM zip в папку расписания (те же файлы, без повторного CAD)

Bimit недоступен (резерв)

  1. CAD → артефакты как обычно 2. Ошибка UploadIFC / UploadPDF → не прерывает экспорт 3. TRM сохраняется в Документы\IFCAnchor\Экспорт Bimit (резерв)\{документ}\ 4. Пользователь видит предупреждение (snackbar + журнал расписания) 5. Если дополнительно включён TRM на диск — сохранение в папку расписания тоже выполняется (при успехе)

Ключевые точки в коде

ШагФайл
Один вызов Export по расписанию`Service/Scheduling/ScheduledExportService.cs`
Установка флагов`ApplyScheduleExportOptions`
Один пакет IPC`Service/CADS/Archicad/ArchicadDocumentService.Export`
Bimit + сбор TRM в колбэках`Callback3d`, `ProcessDrawingExportCallback`
Финализация TRM / резерв`CompleteExport`, `TrySaveBimitUploadFallback`
Упаковка zip`Service/TrmServices/DocumentTrmDiskExportService.cs`
UI: галки расписания`WpfApp/Features/Shedule/ScheduleExportSettingsPanel.xaml`

Содержимое TRM на диске: что в zip, что рядом

По формату TRM IFC не кладётся внутрь zip. В архив попадают PDF, .enc (метаданные видов), info.xml и export.log (сводка экспорта и логи клиента/плагина); IFC копируется в ту же папку, что и zip.

ФайлГде оказывается
`{документ}.zip`Папка документа (TRM-контейнер без IFC)
`*.ifc` / `*.ifczip`Рядом с zip, в той же папке
PDF, `.enc`Внутри zip
`export.log`Внутри zip, рядом с `info.xml` (не в оглавлении CDE)

Реализация: DocumentTrmDiskExportService.CopyIfExists — для .ifc/.ifczip вызывается PlaceIfcBesideZip (копия в каталог zip-файла, не в temp перед архивацией). То же в TrmService для ручного TRM. Лог добавляет TrmExportLogPacker.

Структура папок при TRM на диск

{ExportOutputFolder}/          ← выбрана на SchedulePage
  {Название документа 1}/
    {Название документа 1}.zip   ← PDF, .enc, info.xml, export.log
    model.ifc                    ← отдельно, рядом с zip
  {Название документа 2}/
    ...

Резерв при сбое Bimit (та же схема файлов):

Документы/IFCAnchor/Экспорт Bimit (резерв)/
  {Название документа}/
    {Название документа}.zip
    *.ifc
Copyright © 2026