b73748f84b
feat(query): инструмент get_part_info (МЦХ детали) QueryService через IMassInertiaParam7: объём, масса, площадь, центр масс. Единицы выставляются детерминированно (мм/кг) через LengthUnits/MassUnits — иначе КОМПАС отдаёт значения в единицах отображения МЦХ (по умолчанию см/г). Calculate() возвращает FALSE даже при успехе → опираемся на свойство Actual. Интеграционный тест: цилиндр R10×H20 → V≈6283 мм³, S≈1885 мм², m≈0.049 кг, Zc=10 мм. Находка задокументирована в OPEN_QUESTIONS; презентация обновлена (19 инструментов, 14 тестов). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> @
32 lines
1.3 KiB
C#
32 lines
1.3 KiB
C#
using Kompas.Mcp.Core;
|
|
using Kompas.Mcp.Core.Documents;
|
|
using Kompas.Mcp.Core.Modeling;
|
|
using Kompas.Mcp.Core.Query;
|
|
using Kompas.Mcp.Core.Threading;
|
|
using Kompas.Mcp.Core.Vision;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
var builder = Host.CreateApplicationBuilder(args);
|
|
|
|
// ВАЖНО: stdout занят протоколом MCP (stdio). Все логи — только в stderr.
|
|
builder.Logging.AddConsole(o => o.LogToStandardErrorThreshold = LogLevel.Trace);
|
|
builder.Logging.SetMinimumLevel(LogLevel.Information);
|
|
|
|
// COM-слой: один STA-поток, одно подключение, общие сервисы (синглтоны).
|
|
builder.Services.AddSingleton<KompasDispatcher>();
|
|
builder.Services.AddSingleton<KompasSession>();
|
|
builder.Services.AddSingleton<DocumentService>();
|
|
builder.Services.AddSingleton<PartModeler>();
|
|
builder.Services.AddSingleton<SnapshotService>();
|
|
builder.Services.AddSingleton<QueryService>();
|
|
|
|
// MCP-сервер поверх stdio; инструменты находятся по атрибутам в этой сборке.
|
|
builder.Services
|
|
.AddMcpServer()
|
|
.WithStdioServerTransport()
|
|
.WithToolsFromAssembly();
|
|
|
|
await builder.Build().RunAsync();
|