mikhail
579b191d7c
refactor(core): унификация COM-хелперов и классификаторов топологии
...
Вынесены общие ComHelper (Release + Safe-геттеры) и GeomClassifiers
(FaceType/EdgeType), устранены дубли в 5+ сервисах. Освобождение doc3d RCW
в GetTopPart, void-возвраты вместо фиктивных bool, HashSet для OpKinds,
DocumentTypeName в паспорте модели, FileExtension без аллокаций.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 20:15:43 +03:00
mikhail
60cf26f739
refactor(core): правки по код-ревью (COM-утечки, безопасный shutdown, типобезопасность)
...
- PartModeler: ResetAsync/Dispose освобождают RCW и чистят реестр эскизов/операций;
Editor освобождается после EndEdit (C1)
- DocumentTools: сброс реестра при create/open/close — нет устаревших id (C2)
- DocumentService: освобождение транзитных IDocuments/IKompasDocument (m9)
- KompasSession.Dispose: ограниченное ожидание 5с вместо вечного блока (M3)
- PartModeler.ExtrudeAsync: убран dynamic -> конкретные definition-типы;
throughAll только для cut (M4)
- FeatureTools.extrude_cut: дефолт throughAll=false, без подмены depth (m7)
- tests: регрессия на сброс реестра (старый id недействителен)
- docs/OPEN_QUESTIONS.md: итоги ревью (исправлено/отложено)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 09:18:52 +03:00
mikhail
68855c218e
feat(host): MCP-сервер на stdio + 18 инструментов
...
- Program.cs: Host + DI (KompasDispatcher/Session/DocumentService/PartModeler/
SnapshotService), MCP на stdio, логи в stderr
- Tools: System (connect/status/set_visible), Documents (create/open/save/
save_as/close/active), Sketch (create/add_line/circle/rectangle/close),
Features (extrude_boss/extrude_cut/rebuild), Vision (model_snapshot -> ImageContentBlock)
- KompasSession: SetVisibleAsync + кэш LastInfo
- smoke: tools/list по stdio возвращает все 18 инструментов
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-25 23:57:56 +03:00
mikhail
0038790902
feat(core): STA dispatcher + KOMPAS connection session (S3)
...
- KompasDispatcher: выделенный STA-поток + очередь задач, InvokeAsync<T>,
inline-выполнение вложенных вызовов, корректный Dispose
- NativeMethods: attach к запущенному COM (CLSIDFromProgID + GetActiveObject,
замена отсутствующего в .NET 8 Marshal.GetActiveObject)
- KompasSession: подключение через API5 (KompasObject) -> API7 (IApplication),
attach/launch, версия/редакция, освобождение COM на STA-потоке
- tests: 5 unit-тестов диспетчера + 3 интеграционных теста подключения (зелёные)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-25 23:42:52 +03:00