Files
kompas3d-mcp/docs/presentation.html
T
mikhail 5d51b9e1af docs: выноска — TODO, README, ARCHITECTURE, OPEN_QUESTIONS, presentation, CLAUDE.md
Инкремент 9. 83 инструмента, 331 тест. + заметка о ревью реализации в спеке
(Codex + pi/glm-5.1 + pi/kimi-k2.6).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 00:33:33 +03:00

384 lines
35 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>КОМПАС-3D MCP — управление CAD через LLM</title>
<style>
:root{
--bg:#0b1020; --bg2:#121a33; --card:#161f3d; --card2:#1b264a;
--txt:#e8edf7; --muted:#9aa7c7; --line:#26335c;
--accent:#4da3ff; --accent2:#7c5cff; --green:#36d399; --amber:#fbbd23;
--grad:linear-gradient(135deg,#4da3ff 0%,#7c5cff 100%);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
background:radial-gradient(1200px 600px at 80% -10%,#1c2750 0%,var(--bg) 55%) no-repeat,var(--bg);
color:var(--txt);line-height:1.6;-webkit-font-smoothing:antialiased;
}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
section{padding:64px 0}
h2{font-size:30px;margin-bottom:8px;letter-spacing:-.5px}
.sub{color:var(--muted);margin-bottom:36px;max-width:640px}
.eyebrow{color:var(--accent);font-weight:700;font-size:13px;letter-spacing:2px;text-transform:uppercase}
/* HERO */
.hero{padding:96px 0 72px;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;inset:0;background:
radial-gradient(600px 300px at 15% 20%,rgba(124,92,255,.18),transparent 60%);
pointer-events:none}
.badge{display:inline-flex;align-items:center;gap:8px;background:rgba(77,163,255,.1);
border:1px solid var(--line);color:var(--accent);padding:6px 14px;border-radius:999px;
font-size:13px;font-weight:600;margin-bottom:22px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--amber);box-shadow:0 0 10px var(--amber)}
.hero h1{font-size:54px;line-height:1.05;letter-spacing:-1.5px;margin-bottom:18px;font-weight:800}
.hero h1 .g{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.lead{font-size:19px;color:var(--muted);max-width:680px;margin-bottom:30px}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{background:var(--card);border:1px solid var(--line);border-radius:10px;
padding:8px 14px;font-size:13px;font-weight:600;color:#cdd7f2}
.chip b{color:var(--accent)}
/* GRID CARDS */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.card{background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);
border-radius:16px;padding:24px;transition:transform .2s,border-color .2s}
.card:hover{transform:translateY(-4px);border-color:var(--accent)}
.card .ic{width:44px;height:44px;border-radius:12px;background:var(--grad);
display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:14px}
.card h3{font-size:17px;margin-bottom:6px}
.card p{color:var(--muted);font-size:14px}
.card code{background:rgba(255,255,255,.06);padding:1px 6px;border-radius:5px;font-size:12px;color:#cdd7f2}
/* WORKFLOW */
.flow{display:flex;align-items:stretch;gap:0;flex-wrap:wrap;margin-top:8px}
.step{flex:1;min-width:150px;background:var(--card);border:1px solid var(--line);
border-radius:14px;padding:18px 16px;position:relative;text-align:center}
.step .n{font-size:12px;color:var(--accent);font-weight:700}
.step h4{font-size:15px;margin:6px 0 4px}
.step p{font-size:12.5px;color:var(--muted)}
.arrow{display:flex;align-items:center;justify-content:center;color:var(--accent2);
font-size:24px;padding:0 8px}
.loopnote{margin-top:14px;color:var(--muted);font-size:14px;text-align:center}
.loopnote b{color:var(--green)}
/* STACK */
.stack{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.scard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;text-align:center}
.scard .k{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.scard .v{font-size:18px;font-weight:700;margin-top:6px;color:#dfe7fb}
.scard .v small{display:block;font-size:12px;color:var(--muted);font-weight:500;margin-top:3px}
/* TODO */
.todo-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.panel{background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);
border-radius:16px;padding:26px}
.panel h3{font-size:18px;margin-bottom:4px;display:flex;align-items:center;gap:10px}
.tag{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;letter-spacing:.5px}
.tag.done{background:rgba(54,211,153,.15);color:var(--green);border:1px solid rgba(54,211,153,.3)}
.tag.now{background:rgba(251,189,35,.15);color:var(--amber);border:1px solid rgba(251,189,35,.3)}
.tag.next{background:rgba(124,92,255,.15);color:#b9a6ff;border:1px solid rgba(124,92,255,.3)}
.panel .meta{color:var(--muted);font-size:13px;margin-bottom:16px}
ul.list{list-style:none}
ul.list li{display:flex;gap:11px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:14.5px}
ul.list li:last-child{border-bottom:0}
.mark{flex:0 0 20px;width:20px;height:20px;border-radius:6px;display:flex;align-items:center;
justify-content:center;font-size:12px;font-weight:700;margin-top:2px}
.mark.ok{background:var(--green);color:#04231a}
.mark.todo{background:transparent;border:1.5px solid var(--line)}
.mark.wip{background:var(--amber);color:#3a2c00}
li.muted span.t{color:var(--muted)}
/* progress */
.prog{margin:18px 0 4px}
.bar{height:10px;border-radius:999px;background:#0e1530;overflow:hidden;border:1px solid var(--line)}
.bar > i{display:block;height:100%;background:var(--grad);border-radius:999px}
.progrow{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);margin-bottom:8px}
/* roadmap timeline */
.timeline{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;margin-top:8px}
.tl{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 16px;position:relative}
.tl .ph{font-size:12px;font-weight:700;color:var(--accent)}
.tl h4{font-size:15px;margin:8px 0 6px}
.tl p{font-size:12.5px;color:var(--muted)}
.tl.cur{border-color:var(--amber);box-shadow:0 0 0 1px rgba(251,189,35,.25)}
footer{border-top:1px solid var(--line);padding:34px 0;color:var(--muted);font-size:14px}
footer a{color:var(--accent);text-decoration:none}
footer a:hover{text-decoration:underline}
.links{display:flex;gap:20px;flex-wrap:wrap;margin-top:10px}
@media(max-width:1020px){
.timeline{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
}
@media(max-width:880px){
.grid,.stack{grid-template-columns:1fr 1fr}
.todo-grid{grid-template-columns:1fr}
.timeline{grid-template-columns:1fr 1fr}
.hero h1{font-size:40px}
.arrow{transform:rotate(90deg)}
}
@media(max-width:520px){.grid,.stack,.timeline{grid-template-columns:1fr}}
</style>
</head>
<body>
<!-- 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> Статус: 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+drawing_add_linear_dimension+drawing_add_diametral_dimension+drawing_add_radial_dimension+drawing_add_angular_dimension+drawing_add_rough+drawing_add_text+drawing_set_technical_requirements+associate+drawing_set_sheet_format+drawing_add_leader (83 инструмента)</span>
<h1>КОМПАС-3D <span class="g">MCP-сервер</span><br>управление CAD языком LLM</h1>
<p class="lead">MCP-сервер, который превращает операции КОМПАС-3D — создание документов,
эскизы, 3D-операции, параметры — в инструменты для языковой модели. Под капотом —
COM Automation API АСКОН.</p>
<div class="chips">
<span class="chip"><b>.NET 8</b> · C#</span>
<span class="chip">транспорт <b>stdio</b></span>
<span class="chip"><b>COM</b> Automation · API7 / API5</span>
<span class="chip">Windows <b>x64</b></span>
<span class="chip">КОМПАС-3D <b>v24 Home</b></span>
<span class="chip">👁 <b>зрение агента</b></span>
</div>
</div>
</header>
<!-- KEY FEATURES -->
<section id="features">
<div class="wrap">
<div class="eyebrow">Возможности</div>
<h2>Что умеет MCP-сервер</h2>
<p class="sub">Инструменты сгруппированы вокруг живого инженерного цикла моделирования —
от подключения к КОМПАС до построения и опроса детали.</p>
<div class="grid">
<div class="card">
<div class="ic">🔌</div>
<h3>Подключение к КОМПАС</h3>
<p>Attach к запущенному или launch нового экземпляра по ProgID, переход на API7
через <code>ksGetApplication7()</code>, управление видимостью окна.</p>
</div>
<div class="card">
<div class="ic">📄</div>
<h3>Документы</h3>
<p>Создание, открытие, сохранение и закрытие деталей, сборок, чертежей и фрагментов
через <code>IDocuments</code>.</p>
</div>
<div class="card">
<div class="ic">✏️</div>
<h3>Эскизы</h3>
<p>Эскиз на плоскости или грани, примитивы (линия, окружность, дуга,
прямоугольник), безопасный цикл <code>BeginEdit → EndEdit</code>.</p>
</div>
<div class="card">
<div class="ic">🧊</div>
<h3>3D-операции</h3>
<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>Перечисление граней, рёбер и компонентов сборки с классификацией; МЦХ, габарит.
<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 через временный файл и возврат как image-контент MCP — агент <b>видит</b>
результат. Fallback после <code>describe_model</code> для визуально-пространственных вопросов.</p>
</div>
</div>
</div>
</section>
<!-- WORKFLOW -->
<section id="workflow" style="background:linear-gradient(180deg,transparent,rgba(124,92,255,.05))">
<div class="wrap">
<div class="eyebrow">Ядро сценария</div>
<h2>Цикл «эскиз → операция → эскиз»</h2>
<p class="sub">Главный пользовательский поток v1 — итеративное параметрическое моделирование
с визуальной проверкой: рисуем профиль, превращаем в объём, <b>смотрим на результат</b>,
выбираем грань, рисуем следующий профиль.</p>
<div class="flow">
<div class="step"><div class="n">01</div><h4>Документ</h4><p>создать деталь (part)</p></div>
<div class="arrow"></div>
<div class="step"><div class="n">02</div><h4>Эскиз</h4><p>на плоскости XOY, профиль</p></div>
<div class="arrow"></div>
<div class="step"><div class="n">03</div><h4>Выдавить</h4><p>boss-операция → тело</p></div>
<div class="arrow"></div>
<div class="step" style="border-color:var(--accent2)"><div class="n" style="color:var(--accent2)">04 👁</div><h4>Снимок</h4><p>агент видит результат</p></div>
<div class="arrow"></div>
<div class="step"><div class="n">05</div><h4>Выбрать грань</h4><p>по точке на теле</p></div>
<div class="arrow"></div>
<div class="step"><div class="n">06</div><h4>Вырез</h4><p>новый эскиз → cut</p></div>
</div>
<p class="loopnote"><b>Повторять со зрением</b> — снимок → новая грань → новый эскиз → новая операция → снова снимок, пока деталь не готова</p>
</div>
</section>
<!-- STACK -->
<section id="stack">
<div class="wrap">
<div class="eyebrow">Технологии</div>
<h2>Стек решения</h2>
<p class="sub">Выбор обоснован первоклассным COM-интеропом .NET и официальным C# MCP SDK —
подробности в документе архитектуры.</p>
<div class="stack">
<div class="scard"><div class="k">Платформа</div><div class="v">.NET 8<small>C# · win-x64</small></div></div>
<div class="scard"><div class="k">MCP SDK</div><div class="v">ModelContextProtocol<small>транспорт stdio</small></div></div>
<div class="scard"><div class="k">Интероп</div><div class="v">COM Automation<small>API7 + API5 (.tlb)</small></div></div>
<div class="scard"><div class="k">Потоки</div><div class="v">STA-поток<small>насос сообщений</small></div></div>
</div>
</div>
</section>
<!-- TODO -->
<section id="todo" style="background:linear-gradient(180deg,transparent,rgba(77,163,255,.05))">
<div class="wrap">
<div class="eyebrow">Прогресс</div>
<h2>TODO проекта</h2>
<p class="sub">Честный срез состояния: фундамент подготовки готов, реализация сервера —
впереди.</p>
<div class="prog">
<div class="progrow"><span>Общий прогресс</span><span>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 · drawing_add_linear_dimension · drawing_add_diametral_dimension · drawing_add_radial_dimension · drawing_add_angular_dimension · drawing_add_rough · drawing_add_text · drawing_set_technical_requirements · associate (ассоциативная привязка диам./радиального) · drawing_set_sheet_format (формат листа) · drawing_add_leader (выноска) · навык kompas-3d · 83 инструмента · 331 тест</span></div>
<div class="bar"><i style="width:97%"></i></div>
</div>
<div class="todo-grid" style="margin-top:26px">
<!-- DONE -->
<div class="panel">
<h3>Подготовка <span class="tag done">ГОТОВО</span></h3>
<p class="meta">Исследование, документация и инструменты разработчика</p>
<ul class="list">
<li class="muted"><span class="mark ok"></span><span class="t">Исследование SDK и COM API (API5/API7, паттерны подключения)</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">CLAUDE.md — гайд по репозиторию и API</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">Навигатор по справке: <code>kdoc.py</code> (навык kompas-sdk-research) + индекс на 26k стр.</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">Документ архитектуры <code>docs/ARCHITECTURE.md</code></span></li>
<li class="muted"><span class="mark ok"></span><span class="t">Выбор стека: .NET/C#, stdio, цикл «эскиз↔операция»</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">Решение о визуальной обратной связи (зрение агента, рендер в растр)</span></li>
</ul>
</div>
<!-- NOW -->
<div class="panel">
<h3>Фундамент v1 <span class="tag done">ГОТОВО</span></h3>
<p class="meta">Скелет сервера и связь с КОМПАС</p>
<ul class="list">
<li class="muted"><span class="mark ok"></span><span class="t">Спайки S1–S4: interop, подключение, STA, рендер</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">Решение Core/Host/Tests, Directory.Build.props, git</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">Маппинг перечислений (enum ↔ строка)</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">STA-диспетчер (выделенный поток, очередь задач)</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">MCP-хост на stdio, логи в stderr</span></li>
<li class="muted"><span class="mark ok"></span><span class="t">Подключение по ProgID (attach/launch)</span></li>
</ul>
</div>
<!-- TOOLS -->
<div class="panel">
<h3>Инструменты v3+ <span class="tag done">ГОТОВО</span></h3>
<p class="meta">83 инструмента, отдаются по 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 (точка/индекс) · <b>on_offset_plane</b> (смещённая плоскость) · add line/circle/arc/arc_3points/rectangle/axis/ellipse/polyline/polygon/spline/point · close</span></li>
<li class="muted"><span class="mark ok"></span><span class="t"><code>Features</code>: extrude · revolve · fillet_edge/chamfer_edge (точка + индекс) · <b>shell</b> (оболочка) · <b>rib</b> (ребро жёсткости) · <b>sweep</b> (кинематическая) · <b>loft</b> (по сечениям) · <b>linear_pattern</b> · <b>circular_pattern</b> · <b>mirror_operation</b> · <b>mirror_body</b> · <b>hole</b> (API7) · <b>hole_counterbore</b> (цековка, API7) · <b>hole_countersink</b> (зенковка, API7) · <b>hole_conic</b> (коническое, API7) · <b>draft</b> (уклон, API5) · rebuild</span></li>
<li class="muted"><span class="mark ok"></span><span class="t"><code>Edit</code>: move_face · split_solid_by_plane · move_body · boolean_union</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>Variables</code>: <b>create_variable</b> · <b>set_variable</b> · <b>delete_variable</b> (пакет D)</span></li>
<li class="muted"><span class="mark ok"></span><span class="t"><code>Conversion</code>: import_step · export_step</span></li>
<li class="muted"><span class="mark ok"></span><span class="t"><code>Assembly</code>: <b>assembly_add_component</b> (вставка компонента .m3d/.a3d в сборку, API7) · <b>assembly_add_mate</b> (сопряжения coincidence/distance, API7)</span></li>
<li class="muted"><span class="mark ok"></span><span class="t"><code>Drawing</code>: <b>drawing_create_standard_views</b> (стандартные ассоциативные виды чертежа, API7) · <b>drawing_fill_title_block</b> (основная надпись/штамп: обозначение, наименование, материал, API7) · <b>drawing_add_linear_dimension</b> (линейный размер на виде, ISymbols2DContainer, API7) · <b>drawing_add_diametral_dimension</b> (диаметральный размер Ø, IDiametralDimension, <b>associate=true</b> для ассоциативной привязки к окружности, API7) · <b>drawing_add_radial_dimension</b> (радиальный размер R, IRadialDimension, <b>associate=true</b> аналогично, API7) · <b>drawing_add_angular_dimension</b> (угловой размер, IAngleDimension, angleType=min/max/more, API7) · <b>drawing_add_rough</b> (знак шероховатости, IRough/IRoughParams, signType=delete/without/none, API7) · <b>drawing_add_text</b> (свободный текст на виде, IDrawingContainer/IDrawingText, API7) · <b>drawing_set_technical_requirements</b> (тех. требования документа, IDrawingDocument/TechnicalDemand, API7) · <b>drawing_set_sheet_format</b> (формат и ориентация листа, ILayoutSheet/ISheetFormat, PaperFormat A0A5/user, API7) · <b>drawing_add_leader</b> (линия-выноска с текстом, ISymbols2DContainer/IBaseLeader/IBranchs/ILeader, ShelfDirection enum, API7)</span></li>
<li><span class="mark wip"></span><span>2D-чертёж: рамка/основная надпись по ГОСТ-стилю (LayoutLibraryFileName/LayoutStyleNumber), несколько листов · привязка к дуге (Arcs), ассоциативный угловой размер, ассоциативная шероховатость (IRough.BaseObject) · обозначения баз (Bases), допуски формы (Tolerances), специальные выноски (позиция/клеймо/маркер) · пакет E (ось, угловая плоскость) · пакет D параметрика: параметрические эскизы (API2D) — <b>исследовано, недоступно через COM API</b> · прочие типы сопряжений (parallel/perpendicular/concentric/angle/tangency)</span></li>
</ul>
</div>
<!-- QUALITY -->
<div class="panel">
<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-тесты — без 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">Итого 331 тест зелёных (201 unit + 130 integration)</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>
</div>
</div>
</section>
<!-- ROADMAP -->
<section id="roadmap">
<div class="wrap">
<div class="eyebrow">Дорожная карта</div>
<h2>После v1</h2>
<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" 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" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">пакет A · готово ✓</div><h4>Богатые эскизы</h4><p>arc · arc_3points · ellipse · polyline · polygon · spline · point (+7 инструментов); <b>PartModeler</b> разбит на partial-классы; <b>SketchGeometry</b></p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">пакет B · готово ✓</div><h4>Формообразующие операции</h4><p><b>shell</b> ✓ · <b>rib</b> ✓ · <b>sweep</b> ✓ · <b>loft</b> ✓ (по сечениям) · <b>offset-plane</b> ✓ (пакет E)</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">пакет C · готово ✓</div><h4>Массивы и зеркало</h4><p><b>linear_pattern</b> ✓ · <b>circular_pattern</b> ✓ · <b>mirror_operation</b> ✓ · <b>mirror_body</b> ✓ · <b>hole</b> ✓ (API7)</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">draft · готово ✓</div><h4>Уклон</h4><p><b>draft</b> ✓ (API5 <code>ksInclineDefinition</code>, o3d_incline=42) · 64 инструмента · 115 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">пакет D start · готово ✓</div><h4>Переменные модели</h4><p><b>create_variable</b> · <b>set_variable</b> · <b>delete_variable</b> (API5 VariableService) · list_variables исправлен · 67 инструментов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">отверстия под крепёж · готово ✓</div><h4>Цековка, зенковка и конус</h4><p><b>hole_counterbore</b> (ksHTCounterbore) · <b>hole_countersink</b> (ksHTCountersinking) · <b>hole_conic</b> (ksHTConic, IConicHoleParameters) · HoleCore рефакторен (configure-колбэк) · 70 инструментов · 119 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">сборки start · готово ✓</div><h4>Вставка компонентов</h4><p><b>assembly_add_component</b> (API7 IParts7.AddFromFile + IPlacement3D)</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">сборки инкремент 2 · готово ✓</div><h4>Сопряжения</h4><p><b>assembly_add_mate</b> (coincidence/distance, API7 IMateConstraints3D) · IntegrationTestBase · 72 инструмента · 156 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 2 ✓</div><h4>Стандартные виды + основная надпись</h4><p><b>drawing_create_standard_views</b> (AddStandartViews, API7) · <b>drawing_fill_title_block</b> (IStamp.Text[id].Str, API7) · 74 инструмента · 188 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 3 ✓</div><h4>Линейные размеры</h4><p><b>drawing_add_linear_dimension</b> (ISymbols2DContainer/LineDimensions.Add/ILineDimension, локальная СК вида, API7) · ViewNumbers в результате видов · 75 инструментов · 203 теста</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 4 ✓</div><h4>Диаметральный размер</h4><p><b>drawing_add_diametral_dimension</b> (ISymbols2DContainer.DiametralDimensions.Add/IDiametralDimension, Xc/Yc/Radius/Angle рад, API7) · RequireSymbols2DContainer общий хелпер · DimensionAngles.ToRadians · 76 инструментов · 218 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 5 ✓</div><h4>Радиальный и угловой размеры</h4><p><b>drawing_add_radial_dimension</b> (IRadialDimension, DimensionType=true, API7) · <b>drawing_add_angular_dimension</b> (IAngleDimension, angleType=min/max/more, AngleDimensionType enum, API7) · базовое семейство размеров завершено · 78 инструментов · 241 тест</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 6 ✓</div><h4>Текстовые обозначения</h4><p><b>drawing_add_rough</b> (IRough/IRoughParams, signType=delete/without/none, API7) · <b>drawing_add_text</b> (IDrawingContainer/IDrawingText/IText, API7) · <b>drawing_set_technical_requirements</b> (IDrawingDocument/TechnicalDemand, уровень документа, API7) · DrawingAnnotationResult · RoughSignType enum · 81 инструмент · 267 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 7 ✓</div><h4>Ассоциативная привязка к окружности</h4><p><b>associate=true</b> у drawing_add_diametral_dimension и drawing_add_radial_dimension · CircularObjectMatch (поиск по центру+радиусу, допуск 1 мм) · RequireViewContainers · dim.BaseObject=circle · значение из геометрии · 81 инструмент · 278 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 8 ✓</div><h4>Формат и ориентация листа</h4><p><b>drawing_set_sheet_format</b> (ILayoutSheet.Format / ISheetFormat, ksDocumentFormatEnum, A0A5/user, VerticalOrientation) · PaperFormat enum · SheetFormatResult · ValidateFormatDimensions · 82 инструмента · 308 тестов</p></div>
<div class="tl" style="border-color:var(--green)"><div class="ph" style="color:var(--green)">2D-чертёж · инкремент 9 ✓</div><h4>Линия-выноска</h4><p><b>drawing_add_leader</b> (ISymbols2DContainer.Leaders.Add / IBaseLeader / IBranchs.AddBranchByPoint / ILeader.TextOnShelf, ShelfDirection enum auto/right/left/up/down, API7) · DrawingAnnotationResult · 83 инструмента · 331 тест</p></div>
<div class="tl cur"><div class="ph">далее · в работе ▶</div><h4>Оформление чертежа</h4><p>Рамка/надпись по ГОСТ-стилю (LayoutLibraryFileName) · несколько листов · привязка к дуге (Arcs) · ассоциативный угловой размер · ассоциативная шероховатость (IRough.BaseObject) · обозначения баз (Bases) · допуски формы (Tolerances) · специальные выноски (позиция/клеймо/маркер) · пакет E (ось, угловая плоскость) · прочие типы сопряжений (parallel/perpendicular/concentric/angle/tangency) · пакет D параметрика — параметрические эскизы недоступны через COM API</p></div>
</div>
</div>
</section>
<footer>
<div class="wrap">
<div>КОМПАС-3D MCP · документация проекта</div>
<div class="links">
<a href="../README.md">📦 README</a>
<a href="ARCHITECTURE.md">📐 Документ архитектуры</a>
<a href="IMPLEMENTATION_PLAN.md">🛠️ План реализации</a>
<a href="OPEN_QUESTIONS.md">❓ Открытые вопросы</a>
<a href="../CLAUDE.md">📘 CLAUDE.md</a>
<a href="KOMPAS_SDK_ru-RU/index.html">📚 Справка SDK КОМПАС-3D</a>
<a href="https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/index.html">🌐 Онлайн-справка АСКОН</a>
</div>
</div>
</footer>
</body>
</html>