Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 06-10-2021, 11:23:21

Название: GeometryExtentsBestFit()
Отправлено: Atomohod от 06-10-2021, 11:23:21
Здравствуйте

Прошу пояснить для чего применяется метод GeometryExtentsBestFit()? Судя по описанию в help (см. приложение) должен вернуть копии объектов, но по сигнатуре возвращает Extents3d. Так для чего этот метод создан?
Название: Re: GeometryExtentsBestFit()
Отправлено: avc от 06-10-2021, 11:38:55
Тот случай, когда название говорит больше чем описание. Похоже описание нечаянно скопипастили с Explode. Очевидно, что возвращает габариты, а не копии примитивов. Как и простой GeometryExtents. Но что за BestFit - не понятно. Неужели ищет развернутую систему координат, в которой габариты будут наименьшими? Что-то не верится... По какому критерию best? Надо пробовать...
Название: Re: GeometryExtentsBestFit()
Отправлено: Александр Ривилис от 06-10-2021, 17:41:12
Но что за BestFit - не понятно. Неужели ищет развернутую систему координат, в которой габариты будут наименьшими? Что-то не верится... По какому критерию best? Надо пробовать...
Думаю, что просто более точно вычисляет габаритный контейнер. И соответственно делает это медленнее, чем обычный GeometryExtents.
Как обычно смотрим метод в ObjectARX для AcDbBlockReference::geomExtentsBestFit:

(https://live.staticflickr.com/65535/51558584480_c71d85a5d5_o.png)

Название: Re: GeometryExtentsBestFit()
Отправлено: Atomohod от 07-10-2021, 14:54:45
Спасибо.
То есть реальных случаев необходимости его применения нет - можно обойтись обычным GetExtents?
Название: Re: GeometryExtentsBestFit()
Отправлено: Александр Ривилис от 07-10-2021, 15:12:46
То есть реальных случаев необходимости его применения нет - можно обойтись обычным GetExtents?
Зависит от постановки задачи.
Название: Re: GeometryExtentsBestFit()
Отправлено: avc от 07-10-2021, 16:58:07
Где-то на форуме была уже тема, как оценить габариты блока и поднимался вопрос, что нельзя просто габариты примитивов трансформировать по матрице вставки блока, а надо каждый примитив трансформировать и потом уже получать габариты. И так рекурсивно вглубь вложены блоков... Оказывается есть штатное средство, которое именно это и делает (на сколько я понял). Шикарно. Как раз то, что мне сейчас надо. Не зря следил за форумом.
Название: Re: GeometryExtentsBestFit()
Отправлено: Александр Ривилис от 07-10-2021, 18:17:17
Шикарно. Как раз то, что мне сейчас надо. Не зря следил за форумом.
Надеюсь, что ты обратил внимание, что этот метод работает только для вставок блоков, у которых одинаковые масштабы по X, Y, Z. Например, для цилиндра, который масштабирован вдоль его оси, этот метод не применим.
Название: Re: GeometryExtentsBestFit()
Отправлено: avc от 07-10-2021, 18:55:08
Ну конечно я не дочитал до последнего абзаца :)) Спасибо за комментарий. Однако мне казалось, что взрыв блоков прекрасно поддерживает nonuniform масштабирование... Не уставшая ли это информация? Надо проверить...
Название: Re: GeometryExtentsBestFit()
Отправлено: Александр Ривилис от 07-10-2021, 19:01:33
Однако мне казалось, что взрыв блоков прекрасно поддерживает nonuniform масштабирование...
Команда _EXPLODE и метод explode - это совсем не одно и тоже.