diff --git a/.gitignore b/.gitignore index 6f800b9..0342bcb 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,9 @@ ehthumbs.db Desktop.ini .DS_Store +# ---- Scratch: тестовые документы КОМПАС, снимки рендера -------------------- +.scratch/ + # ============================================================================ # Большие вендорские/генерируемые артефакты — НЕ коммитим # ============================================================================ diff --git a/KompasMcp.slnx b/KompasMcp.slnx index df3975e..a3a10ac 100644 --- a/KompasMcp.slnx +++ b/KompasMcp.slnx @@ -1,5 +1,16 @@ + + + + + + + + + + + diff --git a/docs/OPEN_QUESTIONS.md b/docs/OPEN_QUESTIONS.md new file mode 100644 index 0000000..a004845 --- /dev/null +++ b/docs/OPEN_QUESTIONS.md @@ -0,0 +1,33 @@ +# Открытые вопросы для проработки + +Журнал спорных моментов и решений, принятых автономно (ночная сессия 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). Снимки рендера — туда же, +для визуальной проверки. + +--- + +## Журнал решений по ходу +(дополняется автоматически во время работы) diff --git a/src/Kompas.Mcp.Core/Kompas.Mcp.Core.csproj b/src/Kompas.Mcp.Core/Kompas.Mcp.Core.csproj new file mode 100644 index 0000000..23c94ae --- /dev/null +++ b/src/Kompas.Mcp.Core/Kompas.Mcp.Core.csproj @@ -0,0 +1,33 @@ + + + + + Kompas.Mcp.Core + Kompas.Mcp.Core + + + + + + $(KompasInteropDir)\KompasAPI7.dll + true + + + $(KompasInteropDir)\Kompas6API5.dll + true + + + $(KompasInteropDir)\Kompas6Constants.dll + true + + + $(KompasInteropDir)\Kompas6Constants3D.dll + true + + + + + + + + diff --git a/src/Kompas.Mcp.Host/Kompas.Mcp.Host.csproj b/src/Kompas.Mcp.Host/Kompas.Mcp.Host.csproj new file mode 100644 index 0000000..3d86b7c --- /dev/null +++ b/src/Kompas.Mcp.Host/Kompas.Mcp.Host.csproj @@ -0,0 +1,19 @@ + + + + + Exe + kompas-mcp + Kompas.Mcp.Host + + + + + + + + + + + + diff --git a/src/Kompas.Mcp.Host/Program.cs b/src/Kompas.Mcp.Host/Program.cs new file mode 100644 index 0000000..3751555 --- /dev/null +++ b/src/Kompas.Mcp.Host/Program.cs @@ -0,0 +1,2 @@ +// See https://aka.ms/new-console-template for more information +Console.WriteLine("Hello, World!"); diff --git a/tests/Kompas.Mcp.Tests/Kompas.Mcp.Tests.csproj b/tests/Kompas.Mcp.Tests/Kompas.Mcp.Tests.csproj new file mode 100644 index 0000000..9a9d7a9 --- /dev/null +++ b/tests/Kompas.Mcp.Tests/Kompas.Mcp.Tests.csproj @@ -0,0 +1,24 @@ + + + + + false + Kompas.Mcp.Tests + + + + + + + + + + + + + + + + + + diff --git a/tests/Kompas.Mcp.Tests/UnitTest1.cs b/tests/Kompas.Mcp.Tests/UnitTest1.cs new file mode 100644 index 0000000..c583d30 --- /dev/null +++ b/tests/Kompas.Mcp.Tests/UnitTest1.cs @@ -0,0 +1,10 @@ +namespace Kompas.Mcp.Tests; + +public class UnitTest1 +{ + [Fact] + public void Test1() + { + + } +}