# Открытые вопросы для проработки Журнал спорных моментов и решений, принятых автономно (ночная сессия 2026-05-25/26). Помечено: ⚠️ = требует вашего решения; ✅ = решено по умолчанию, можно пересмотреть. --- ## ⚠️ 1. API5 vs API7 для построения 3D **Контекст.** Примеры SDK строят 3D через **API5** (`ksPart.NewEntity(o3d_*)` → `ksBossExtrusionDefinition` → `Create()`). API7 предлагает `IPart7` → `IModelContainer` → `IExtrusions.Add()`. **Решение по умолчанию (✅ в коде):** в v1 строю 3D через **API5 `ksPart`** (надёжно, повторяет рабочие примеры Step3d1). API7 использую для приложения/документов/версии. **На проработку:** переводить ли операции на чистый API7 позже (плюс — единообразие, минус — риск). ## ✅ 2. Точка входа подключения — API5 Для построения 3D нужен `KompasObject` (API5), а для снимка — `ksDocument3D` (API5). Поэтому `KompasSession` подключается через `KOMPAS.Application.5` → `KompasObject`, затем `ksGetApplication7()` → `IApplication`. Держит обе ссылки. (Ранее в спайке заходили через `.7`.) ## ✅ 3. Состав проектов v1 Вместо 4 проектов (Host/Tools/Core/Interop) сделано компактно: **Core** (COM + сервисы) + **Host** (MCP + определения инструментов) + **Tests**. Interop — вендорские DLL в `libs/`. Разнести на больше проектов можно позже. ## ✅ 4. Тестовые артефакты Тестовые документы КОМПАС сохраняю в `.scratch/` (gitignore). Снимки рендера — туда же, для визуальной проверки. --- ## Журнал решений по ходу (дополняется автоматически во время работы) ### ✅ Снимок 3D: рендер через файл, а не resultArrayBytes `ksDocument3D.SaveAsToRasterFormat(fileName, param)` при **непустом** `fileName` возвращает TRUE, пишет корректный PNG на диск, но `param.resultArrayBytes` остаётся **пустым**. Поэтому `SnapshotService` рендерит во временный файл и читает байты обратно (надёжно проверено на v24 Home). **На проработку:** пустое имя файла + `returnResultAsArrayBytes=true` для чистого in-memory — не проверено; текущий путь через temp-файл работает.