Статус: v3+ работает — эскиз→операции→STEP→сборка→move_face→структурный осмотр→богатые эскизы→shell+rib+sweep+loft+массивы+зеркало+hole+hole_counterbore+hole_countersink+hole_conic+draft+переменные+assembly_add_component+assembly_add_mate+drawing_create_standard_views+drawing_fill_title_block (74 инструмента)

КОМПАС-3D MCP-сервер
управление CAD языком LLM

MCP-сервер, который превращает операции КОМПАС-3D — создание документов, эскизы, 3D-операции, параметры — в инструменты для языковой модели. Под капотом — COM Automation API АСКОН.

.NET 8 · C# транспорт stdio COM Automation · API7 / API5 Windows x64 КОМПАС-3D v24 Home 👁 зрение агента
Возможности

Что умеет MCP-сервер

Инструменты сгруппированы вокруг живого инженерного цикла моделирования — от подключения к КОМПАС до построения и опроса детали.

🔌

Подключение к КОМПАС

Attach к запущенному или launch нового экземпляра по ProgID, переход на API7 через ksGetApplication7(), управление видимостью окна.

📄

Документы

Создание, открытие, сохранение и закрытие деталей, сборок, чертежей и фрагментов через IDocuments.

✏️

Эскизы

Эскиз на плоскости или грани, примитивы (линия, окружность, дуга, прямоугольник), безопасный цикл BeginEdit → EndEdit.

🧊

3D-операции

Выдавливание и вырез, вращение, перестроение. Управление направлением, глубиной и типом окончания (ksEndTypeEnum).

🔍

Структурный осмотр

describe_model — паспорт детали (МЦХ, тела, дерево, переменные) одним вызовом. describe_face · describe_edge · measure. Предпочтительнее снимка — без расхода токенов изображения.

🎯

Выборка и запросы

Перечисление граней, рёбер и компонентов сборки с классификацией; МЦХ, габарит. list_faces · list_edges · list_components.

📦

STEP импорт / экспорт

Импорт .step/.stp в новый документ (деталь или сборка, создание файлов компонентов); экспорт в AP203/AP214/AP242 через встроенный конвертер КОМПАС.

✂️

Прямое редактирование

move_face: сдвинуть грань на N мм вдоль нормали (наружу или внутрь). Работает на импортированной B-rep через FaceMover API7.

👁️

Зрение агента

Рендер модели в PNG через временный файл и возврат как image-контент MCP — агент видит результат. Fallback после describe_model для визуально-пространственных вопросов.

Ядро сценария

Цикл «эскиз → операция → эскиз»

Главный пользовательский поток v1 — итеративное параметрическое моделирование с визуальной проверкой: рисуем профиль, превращаем в объём, смотрим на результат, выбираем грань, рисуем следующий профиль.

01

Документ

создать деталь (part)

02

Эскиз

на плоскости XOY, профиль

03

Выдавить

boss-операция → тело

04 👁

Снимок

агент видит результат

05

Выбрать грань

по точке на теле

06

Вырез

новый эскиз → cut

Повторять со зрением — снимок → новая грань → новый эскиз → новая операция → снова снимок, пока деталь не готова

Технологии

Стек решения

Выбор обоснован первоклассным COM-интеропом .NET и официальным C# MCP SDK — подробности в документе архитектуры.

Платформа
.NET 8C# · win-x64
MCP SDK
ModelContextProtocolтранспорт stdio
Интероп
COM AutomationAPI7 + API5 (.tlb)
Потоки
STA-потокнасос сообщений
Прогресс

TODO проекта

Честный срез состояния: фундамент подготовки готов, реализация сервера — впереди.

Общий прогрессv3+: STEP · move_face · структурный осмотр · богатые эскизы (пакет A) · shell+rib+sweep+loft (пакет B) · массивы+зеркало (пакет C) · переменные (пакет D start) · offset-plane (пакет E start) · hole (API7) · hole_counterbore · hole_countersink · hole_conic · draft (API5) · assembly_add_component · assembly_add_mate · drawing_create_standard_views · drawing_fill_title_block · навык kompas-3d · 74 инструмента · 188 тестов

Подготовка ГОТОВО

Исследование, документация и инструменты разработчика

  • Исследование SDK и COM API (API5/API7, паттерны подключения)
  • CLAUDE.md — гайд по репозиторию и API
  • Навигатор по справке: kdoc.py (навык kompas-sdk-research) + индекс на 26k стр.
  • Документ архитектуры docs/ARCHITECTURE.md
  • Выбор стека: .NET/C#, stdio, цикл «эскиз↔операция»
  • Решение о визуальной обратной связи (зрение агента, рендер в растр)

Фундамент v1 ГОТОВО

Скелет сервера и связь с КОМПАС

  • Спайки S1–S4: interop, подключение, STA, рендер
  • Решение Core/Host/Tests, Directory.Build.props, git
  • Маппинг перечислений (enum ↔ строка)
  • STA-диспетчер (выделенный поток, очередь задач)
  • MCP-хост на stdio, логи в stderr
  • Подключение по ProgID (attach/launch)

Инструменты v3+ ГОТОВО

74 инструмента, отдаются по MCP-протоколу

  • System: connect · status · set_visible
  • Documents: create · open · save · save_as · close · active
  • Sketch: create · on_face (точка/индекс) · on_offset_plane (смещённая плоскость) · add line/circle/arc/arc_3points/rectangle/axis/ellipse/polyline/polygon/spline/point · close
  • Features: extrude · revolve · fillet_edge/chamfer_edge (точка + индекс) · shell (оболочка) · rib (ребро жёсткости) · sweep (кинематическая) · loft (по сечениям) · linear_pattern · circular_pattern · mirror_operation · mirror_body · hole (API7) · hole_counterbore (цековка, API7) · hole_countersink (зенковка, API7) · hole_conic (коническое, API7) · draft (уклон, API5) · rebuild
  • Edit: move_face · split_solid_by_plane · move_body · boolean_union
  • Inspection: describe_model · list_features · list_bodies · list_variables · describe_face · describe_edge · measure
  • Vision: model_snapshot 👁️ (fallback)
  • Query: get_part_info · get_bounding_box · list_faces · list_edges · list_components
  • Variables: create_variable · set_variable · delete_variable (пакет D)
  • Conversion: import_step · export_step
  • Assembly: assembly_add_component (вставка компонента .m3d/.a3d в сборку, API7) · assembly_add_mate (сопряжения coincidence/distance, API7)
  • Drawing: drawing_create_standard_views (стандартные ассоциативные виды чертежа, API7) · drawing_fill_title_block (основная надпись/штамп: обозначение, наименование, материал, API7)
  • 2D-чертёж: размеры/обозначения на видах, рамка/формат · пакет E (ось, угловая плоскость) · пакет D параметрика: параметрические эскизы (API2D) — исследовано, недоступно через COM API · прочие типы сопряжений (parallel/perpendicular/concentric/angle/tangency)

Качество и поставка В РАБОТЕ

Тесты, сборка, интеграция с клиентом

  • Unit-тесты — без COM: диспетчер, enum-маппинг, StepFormat, InspectionText
  • Интеграционные тесты с КОМПАС: подключение, документы, снимок, цикл, STEP round-trip, сборка, move_face, инспекция
  • Итого 188 тестов зелёных (123 unit + 65 integration)
  • Сборка kompas-mcp.exe, README с конфигом клиента
  • Навык kompas-3d (методика) + полигон usecases/
  • In-process тест MCP-клиента, релизный publish
Дорожная карта

После v1

Наращиваем покрытие API волнами — от простых операций к параметрике, черчению и сборкам.

v1 · готово ✓

Цикл моделирования

Документы, эскизы, выдавливание/вырез, снимок модели

v2 · готово ✓

Операции, выборка, STEP

Эскиз на грани · вращение · скругление/фаска · list_faces/edges · import_step · export_step · list_components · навык kompas-3d

v3 · готово ✓

B-rep + структурный осмотр

move_face (сдвиг грани на N мм) · describe_model · list_features · list_bodies · list_variables · describe_face · describe_edge · measure

пакет A · готово ✓

Богатые эскизы

arc · arc_3points · ellipse · polyline · polygon · spline · point (+7 инструментов); PartModeler разбит на partial-классы; SketchGeometry

пакет B · готово ✓

Формообразующие операции

shell ✓ · rib ✓ · sweep ✓ · loft ✓ (по сечениям) · offset-plane ✓ (пакет E)

пакет C · готово ✓

Массивы и зеркало

linear_pattern ✓ · circular_pattern ✓ · mirror_operation ✓ · mirror_body ✓ · hole ✓ (API7)

draft · готово ✓

Уклон

draft ✓ (API5 ksInclineDefinition, o3d_incline=42) · 64 инструмента · 115 тестов

пакет D start · готово ✓

Переменные модели

create_variable · set_variable · delete_variable (API5 VariableService) · list_variables исправлен · 67 инструментов

отверстия под крепёж · готово ✓

Цековка, зенковка и конус

hole_counterbore (ksHTCounterbore) · hole_countersink (ksHTCountersinking) · hole_conic (ksHTConic, IConicHoleParameters) · HoleCore рефакторен (configure-колбэк) · 70 инструментов · 119 тестов

сборки start · готово ✓

Вставка компонентов

assembly_add_component (API7 IParts7.AddFromFile + IPlacement3D)

сборки инкремент 2 · готово ✓

Сопряжения

assembly_add_mate (coincidence/distance, API7 IMateConstraints3D) · IntegrationTestBase · 72 инструмента · 156 тестов

2D-чертёж · инкремент 2 ✓

Стандартные виды + основная надпись

drawing_create_standard_views (AddStandartViews, API7) · drawing_fill_title_block (IStamp.Text[id].Str, API7) · 74 инструмента · 188 тестов · далее: размеры на видах

далее · в работе ▶

Размеры и оформление

Размеры/обозначения на видах · рамка/формат · пакет E (ось, угловая плоскость) · прочие типы сопряжений (parallel/perpendicular/concentric/angle/tangency) · пакет D параметрика — параметрические эскизы недоступны через COM API