mikhail 01f5f37c67 @
feat(sketch): эскиз на выбранной грани + МЦХ через API5

sketch_create_on_face: OpenSketchOnFaceAsync выбирает плоскую грань по точке
(ksPart.EntityCollection(o3d_face).SelectByPoint) и создаёт на ней эскиз —
ключевой шаг итеративного цикла «построил → выбрал грань → новый эскиз».
Общее ядро создания эскиза вынесено в CreateSketchOn.

QueryService переписан на API5 ksPart.CalcMassInertiaProperties(ST_MIX_MM|ST_MIX_KG):
- API7 IMassInertiaParam7.Calculate() непригоден — флаг Actual «залипает» после
  первого расчёта, повторный запрос отдавал устаревший объём (баг кэша);
- API5-маршрут считает по запросу и согласован с построением через ksPart;
- единицы (мм³/мм²/кг/мм) задаются битовым вектором.

Тест Sketch_on_face_adds_boss_on_top: запрос → штифт R5×H10 на верхней грани
цилиндра → повторный запрос видит прирост ≈785 мм³ (проверяет и грань, и кэш МЦХ).
Презентация: 20 инструментов, 15 тестов; OPEN_QUESTIONS обновлён.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@
2026-05-26 09:52:56 +03:00
@
2026-05-26 09:52:56 +03:00
@
2026-05-26 09:52:56 +03:00
@
2026-05-26 09:52:56 +03:00

kompas3d-mcp

MCP-сервер для управления CAD-системой КОМПАС-3D (АСКОН) языковой моделью.

Сервер — это COM-клиент КОМПАС-3D: он подключается к установленному КОМПАС и предоставляет LLM набор инструментов для создания документов, построения 3D-деталей (эскиз → выдавливание), а также снимок модели (агент «видит» результат и строит пошагово).

Подробности: docs/ARCHITECTURE.md · план — docs/IMPLEMENTATION_PLAN.md · спорные вопросы — docs/OPEN_QUESTIONS.md · обзор — docs/presentation.html

Требования

  • Windows x64, установленный КОМПАС-3D (разрабатывалось на v24 Home).
  • .NET SDK 8+ (собирается и на SDK 10; целевой фреймворк net8.0-windows).

Сборка и запуск

dotnet build -c Release
# сервер (stdio):
dotnet run --project src/Kompas.Mcp.Host -c Release
# или собранный exe:
src/Kompas.Mcp.Host/bin/Release/net8.0-windows/kompas-mcp.exe

Подключение к MCP-клиенту (stdio)

{
  "mcpServers": {
    "kompas3d": { "command": "C:\\путь\\к\\kompas-mcp.exe", "args": [] }
  }
}

Инструменты (v1)

Группа Инструменты
System kompas_connect, kompas_status, kompas_set_visible
Documents document_create, document_open, document_save, document_save_as, document_close, document_active
Sketch sketch_create, sketch_add_line, sketch_add_circle, sketch_add_rectangle, sketch_close
Features extrude_boss, extrude_cut, rebuild
Vision model_snapshot (PNG-снимок активной модели)

Типовой сценарий

kompas_connectdocument_create partsketch_create XOYsketch_add_circlesketch_closeextrude_bossmodel_snapshot → (повтор для следующих элементов).

⚠️ Вызовы зависимых инструментов выполняйте последовательно (дождавшись ответа): сессия построения хранит эскизы по id, а сервер обрабатывает запросы конкурентно.

Структура

src/Kompas.Mcp.Core/   COM-слой: STA-диспетчер, подключение, документы, эскизы/операции, снимок
src/Kompas.Mcp.Host/   MCP-сервер (stdio) + определения инструментов
tests/Kompas.Mcp.Tests/ unit (диспетчер) + integration (требуют КОМПАС)
libs/kompas-interop/   вендорские interop-сборки КОМПАС (из SDK Samples/Common)
docs/                  архитектура, план, презентация, навигатор по справке SDK
tools/kdoc.py          поиск/чтение справки SDK КОМПАС (см. CLAUDE.md)

Тесты

dotnet test                                   # все (integration требуют КОМПАС)
dotnet test --filter "Category=Unit"          # только unit (без COM)
dotnet test --filter "Category=Integration"   # только integration

Архитектура (кратко)

  • STA-поток (KompasDispatcher) владеет всеми COM-вызовами — КОМПАС однопоточный STA.
  • Подключение через API5 KompasObject (KOMPAS.Application.5) → API7 IApplication (ksGetApplication7).
  • 3D строится через API5 ksPart (эскизы, выдавливание); снимок — ksDocument3D.SaveAsToRasterFormat.
  • MCP — официальный C# SDK ModelContextProtocol, транспорт stdio, логи в stderr.

Лицензирование

libs/kompas-interop/*.dll — interop-сборки АСКОН из состава SDK КОМПАС-3D; распространяются согласно условиям АСКОН. Для работы требуется установленный КОМПАС-3D.

S
Description
No description provided
Readme 7.1 MiB
Languages
C# 100%