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
|
af6adc390e
|
feat(core): PartModeler — эскизы и выдавливание (цикл моделирования)
- BasePlane (XOY/XOZ/YOZ) + маппинг в Obj3dType
- PartModeler (API5 ksPart): OpenSketch/AddLine/AddCircle/AddRectangle/CloseSketch,
Extrude (boss/cut, blind/throughAll), Rebuild; реестр эскизов и операций по id
- tests: построение цилиндра со сквозным отверстием + снимок (визуально проверено)
Полный цикл "эскиз -> выдавливание -> эскиз -> сквозной вырез -> снимок" работает.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-25 23:52:55 +03:00 |
|
mikhail
|
d4502409de
|
feat(core): SnapshotService — рендер 3D-модели в PNG (S4, "зрение агента")
- RasterImageFormat (PNG/JPG/BMP/...) + MIME-типы + парсинг
- SnapshotService: ksDocument3D.SaveAsToRasterFormat -> временный файл -> байты
(resultArrayBytes при заданном имени файла не заполняется; рендер в файл надёжен)
- tests: снимок активной детали возвращает валидный PNG (визуально проверено)
- docs/OPEN_QUESTIONS.md: зафиксирован нюанс resultArrayBytes
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-25 23:48:35 +03:00 |
|
mikhail
|
f0995a67e6
|
feat(core): DocumentService — create/open/save/close (API7)
- KompasDocumentType (Part/Assembly/Drawing/Fragment/Specification/Text)
+ маппинг в DocumentTypeEnum и парсинг строк (ru/en)
- DocumentInfo (Name/PathName/Type)
- DocumentService: Create/Open/Save/SaveAs/Close/GetActive через IDocuments
- tests: интеграция документов (create part/fragment, SaveAs .scratch, close) — зелёные
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-25 23:45:28 +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 |
|
mikhail
|
1be3f4d8f9
|
build: project skeleton (Core / Host / Tests) + MCP SDK
- src/Kompas.Mcp.Core: classlib с ссылками на interop-сборки КОМПАС
- src/Kompas.Mcp.Host: console, ModelContextProtocol 1.3.0 + Hosting
- tests/Kompas.Mcp.Tests: xUnit, ссылка на Core
- все проекты унаследовали net8.0-windows/x64 из Directory.Build.props
- docs/OPEN_QUESTIONS.md: журнал спорных решений
- .gitignore: добавлен .scratch/
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-25 23:39:04 +03:00 |
|