feat(inspection): структурное «зрение» модели — осмотр без снимка
Новый слой «модель как данные» (приоритетный над model_snapshot): - describe_model — структурный «паспорт» детали одним вызовом (габарит, МЦХ, тела, сводка топологии, дерево построения с параметрами, переменные) - list_features / list_bodies / list_variables - describe_face / describe_edge (drill-down по индексу) - measure (расстояние/угол между гранями/рёбрами/вершинами) - model_snapshot понижен до fallback для визуально-пространственных вопросов Реализация: ModelInspectionService (COM) + чистый InspectionText (рендер, группировка, детект «импорт без истории») + record-модели; InspectionTools. Дерево читается через ksPart.GetFeature()->SubFeatureCollection; точный тип и параметры операций берутся из GetObject()->GetDefinition() (ksFeature.type отдаёт лишь coarse o3d_entity). Снимок дерева также включает слои conversion (STEP), editing (move_face/solid) и validation, развивавшиеся параллельно. Полный прогон: 61 тест зелёный, 43 MCP-инструмента. Документация (README, ARCHITECTURE, OPEN_QUESTIONS, CLAUDE.md, presentation.html) синхронизирована. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+44
-28
@@ -125,7 +125,7 @@
|
||||
<!-- HERO -->
|
||||
<header class="hero">
|
||||
<div class="wrap">
|
||||
<span class="badge"><span class="dot" style="background:var(--green);box-shadow:0 0 10px var(--green)"></span> Статус: v2 работает — цикл эскиз→операции→снимок через MCP (31 инструмент)</span>
|
||||
<span class="badge"><span class="dot" style="background:var(--green);box-shadow:0 0 10px var(--green)"></span> Статус: v3 работает — эскиз→операции→STEP→сборка→move_face→структурный осмотр (43 инструмента)</span>
|
||||
<h1>КОМПАС-3D <span class="g">MCP-сервер</span><br>управление CAD языком LLM</h1>
|
||||
<p class="lead">MCP-сервер, который превращает операции КОМПАС-3D — создание документов,
|
||||
эскизы, 3D-операции, параметры — в инструменты для языковой модели. Под капотом —
|
||||
@@ -173,24 +173,36 @@
|
||||
<p>Выдавливание и вырез, вращение, перестроение. Управление направлением, глубиной и
|
||||
типом окончания (<code>ksEndTypeEnum</code>).</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="ic">🔍</div>
|
||||
<h3>Структурный осмотр</h3>
|
||||
<p><code>describe_model</code> — паспорт детали (МЦХ, тела, дерево, переменные) одним вызовом.
|
||||
<code>describe_face</code> · <code>describe_edge</code> · <code>measure</code>.
|
||||
Предпочтительнее снимка — без расхода токенов изображения.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="ic">🎯</div>
|
||||
<h3>Выборка и запросы</h3>
|
||||
<p>Выбор грани точкой для следующего эскиза, перечисление тел и граней,
|
||||
массово-центровочные характеристики детали.</p>
|
||||
<p>Перечисление граней, рёбер и компонентов сборки с классификацией; МЦХ, габарит.
|
||||
<code>list_faces</code> · <code>list_edges</code> · <code>list_components</code>.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="ic">📦</div>
|
||||
<h3>STEP импорт / экспорт</h3>
|
||||
<p>Импорт .step/.stp в новый документ (деталь или сборка, создание файлов компонентов);
|
||||
экспорт в AP203/AP214/AP242 через встроенный конвертер КОМПАС.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="ic">✂️</div>
|
||||
<h3>Прямое редактирование</h3>
|
||||
<p><code>move_face</code>: сдвинуть грань на N мм вдоль нормали (наружу или внутрь).
|
||||
Работает на импортированной B-rep через <code>FaceMover</code> API7.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="ic">👁️</div>
|
||||
<h3>Зрение агента</h3>
|
||||
<p>Рендер модели в PNG прямо в память (<code>resultArrayBytes</code>) и возврат как
|
||||
image-контент MCP — агент <b>видит</b> результат и строит пошагово. Плюс <code>set_view</code>:
|
||||
ориентация и zoom-to-fit перед снимком.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="ic">🛟</div>
|
||||
<h3>Escape-hatch</h3>
|
||||
<p>Прямой вызов команд КОМПАС через <code>ExecuteKompasCommand</code> для того,
|
||||
что ещё не обёрнуто в типизированные инструменты.</p>
|
||||
<p>Рендер модели в PNG через временный файл и возврат как image-контент MCP — агент <b>видит</b>
|
||||
результат. Fallback после <code>describe_model</code> для визуально-пространственных вопросов.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -246,8 +258,8 @@
|
||||
впереди.</p>
|
||||
|
||||
<div class="prog">
|
||||
<div class="progrow"><span>Общий прогресс</span><span>v2: грань · вращение · скругление/фаска · габариты · список граней/рёбер · 19 тестов</span></div>
|
||||
<div class="bar"><i style="width:84%"></i></div>
|
||||
<div class="progrow"><span>Общий прогресс</span><span>v3: STEP · list_components · move_face · структурный осмотр · навык kompas-3d · 43 инструмента · 60 тестов</span></div>
|
||||
<div class="bar"><i style="width:93%"></i></div>
|
||||
</div>
|
||||
|
||||
<div class="todo-grid" style="margin-top:26px">
|
||||
@@ -281,16 +293,19 @@
|
||||
|
||||
<!-- TOOLS -->
|
||||
<div class="panel">
|
||||
<h3>Инструменты v1 <span class="tag done">ГОТОВО</span></h3>
|
||||
<p class="meta">31 инструмент, отдаются по MCP-протоколу</p>
|
||||
<h3>Инструменты v3 <span class="tag done">ГОТОВО</span></h3>
|
||||
<p class="meta">43 инструмента, отдаются по MCP-протоколу</p>
|
||||
<ul class="list">
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>System</code>: connect · status · set_visible</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Documents</code>: create · open · save · save_as · close · active</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Sketch</code>: create · on_face (точка/индекс) · add line/circle/rectangle/axis · close</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Features</code>: extrude · revolve · fillet_edge/chamfer_edge (точка) · fillet_edge_index/chamfer_edge_index (индекс) 🆕 · rebuild</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Vision</code>: model_snapshot 👁️</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Query</code>: get_part_info · get_bounding_box · list_faces · list_edges 🆕</span></li>
|
||||
<li><span class="mark todo"></span><span><code>Query</code>: list_bodies (далее)</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Features</code>: extrude · revolve · fillet_edge/chamfer_edge (точка + индекс) · rebuild</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Edit</code>: move_face (прямое редактирование B-rep)</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Inspection</code>: describe_model · list_features · list_bodies · list_variables · describe_face · describe_edge · measure 🆕</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Vision</code>: model_snapshot 👁️ (fallback)</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Query</code>: get_part_info · get_bounding_box · list_faces · list_edges · list_components</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t"><code>Conversion</code>: import_step · export_step</span></li>
|
||||
<li><span class="mark todo"></span><span>Массивы/паттерны · рассечение/перемещение тела (далее)</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -299,10 +314,11 @@
|
||||
<h3>Качество и поставка <span class="tag now">В РАБОТЕ</span></h3>
|
||||
<p class="meta">Тесты, сборка, интеграция с клиентом</p>
|
||||
<ul class="list">
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Unit-тесты диспетчера (5) — без COM</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Интеграционные тесты с КОМПАС (7): подключение, документы, снимок, цикл</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Сквозной прогон по MCP-протоколу (tools/call → PNG)</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Unit-тесты — без COM: диспетчер, enum-маппинг, StepFormat, InspectionText</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Интеграционные тесты с КОМПАС: подключение, документы, снимок, цикл, STEP round-trip, сборка, move_face, инспекция</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Итого 60 тестов зелёных</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Сборка <code>kompas-mcp.exe</code>, README с конфигом клиента</span></li>
|
||||
<li class="muted"><span class="mark ok">✓</span><span class="t">Навык <code>kompas-3d</code> (методика) + полигон <code>usecases/</code></span></li>
|
||||
<li><span class="mark todo"></span><span>In-process тест MCP-клиента, релизный publish</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -318,11 +334,11 @@
|
||||
<p class="sub">Наращиваем покрытие API волнами — от простых операций к параметрике,
|
||||
черчению и сборкам.</p>
|
||||
<div class="timeline">
|
||||
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">v1 · готово ✓</div><h4>Цикл моделирования</h4><p>Документы, эскизы, выдавливание/вырез, снимок модели — работает</p></div>
|
||||
<div class="tl cur"><div class="ph">v2 · в работе</div><h4>Операции и выборка</h4><p>Эскиз на грани ✓ · вращение ✓ · скругление/фаска (точка + индекс) ✓ · список граней/рёбер ✓ · далее: массивы · list_bodies</p></div>
|
||||
<div class="tl"><div class="ph">v3</div><h4>Параметрика</h4><p>Переменные <code>IVariable7</code>, свойства <code>IPropertyMng</code>, формулы</p></div>
|
||||
<div class="tl"><div class="ph">v4</div><h4>2D-черчение</h4><p>Виды, размеры, тексты, штриховки; спецификации</p></div>
|
||||
<div class="tl"><div class="ph">v5</div><h4>Сборки и экспорт</h4><p>Компоненты, сопряжения, конвертеры (STEP), HTTP/SSE-транспорт</p></div>
|
||||
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">v1 · готово ✓</div><h4>Цикл моделирования</h4><p>Документы, эскизы, выдавливание/вырез, снимок модели</p></div>
|
||||
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">v2 · готово ✓</div><h4>Операции, выборка, STEP</h4><p>Эскиз на грани · вращение · скругление/фаска · list_faces/edges · import_step · export_step · list_components · навык kompas-3d</p></div>
|
||||
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">v3 · готово ✓</div><h4>B-rep + структурный осмотр</h4><p><b>move_face</b> (сдвиг грани на N мм) · <b>describe_model</b> · list_features · list_bodies · list_variables · describe_face · describe_edge · measure</p></div>
|
||||
<div class="tl cur"><div class="ph">v4 · в работе</div><h4>Массивы + 2D</h4><p>Массивы/паттерны · рассечение тела · виды, размеры, штриховки; свойства документа</p></div>
|
||||
<div class="tl"><div class="ph">v5</div><h4>Сборки и транспорт</h4><p>Построение сборок, сопряжения; HTTP/SSE-транспорт</p></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user