@
feat(query): инструмент get_part_info (МЦХ детали) QueryService через IMassInertiaParam7: объём, масса, площадь, центр масс. Единицы выставляются детерминированно (мм/кг) через LengthUnits/MassUnits — иначе КОМПАС отдаёт значения в единицах отображения МЦХ (по умолчанию см/г). Calculate() возвращает FALSE даже при успехе → опираемся на свойство Actual. Интеграционный тест: цилиндр R10×H20 → V≈6283 мм³, S≈1885 мм², m≈0.049 кг, Zc=10 мм. Находка задокументирована в OPEN_QUESTIONS; презентация обновлена (19 инструментов, 14 тестов). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> @
This commit is contained in:
@@ -69,6 +69,16 @@ stateful-сессии? Пока полагаемся на последовате
|
||||
передавать через `ImageContentBlock.FromBytes(bytes, mimeType)` — он сам кодирует. Прямое
|
||||
присваивание `Data = rawBytes` портит изображение на проводе. Исправлено в VisionTools.
|
||||
|
||||
### ✅ МЦХ (get_part_info): единицы измерения и поведение Calculate()
|
||||
`IMassInertiaParam7` по умолчанию возвращает значения в **единицах отображения МЦХ** документа
|
||||
(по умолчанию см³/см²/г, плотность г/см³) — то есть зависит от настроек, а не фиксированные СИ.
|
||||
Поэтому `QueryService` принудительно выставляет `LengthUnits = ksLUnMM` и `MassUnits = ksMUnKG`
|
||||
перед чтением → детерминированные **мм³, мм², кг, мм**. Проверено тестом (цилиндр R10×H20:
|
||||
V≈6283 мм³, S≈1885 мм², m≈0.0494 кг, Zc=10 мм).
|
||||
Тонкость: `Calculate()` возвращает **FALSE даже при успехе** (когда расчёт уже актуален после
|
||||
`RebuildDocument`), поэтому опираемся на свойство `Actual`, а не на возвращаемое значение.
|
||||
Материал по умолчанию — сталь (ρ≈7.856 г/см³); масса зависит от назначенного материала.
|
||||
|
||||
### ✅ Снимок 3D: рендер через файл, а не resultArrayBytes
|
||||
`ksDocument3D.SaveAsToRasterFormat(fileName, param)` при **непустом** `fileName` возвращает TRUE,
|
||||
пишет корректный PNG на диск, но `param.resultArrayBytes` остаётся **пустым**. Поэтому
|
||||
|
||||
Reference in New Issue
Block a user