Тема: Определение границ объекта на VBA

Народ помогите. Может кто сталкивался с задачей определения границ объекта, например блока на VBA для определения пересечения с полилинией. Может у кого есть ссылки на примеры.

Re: Определение границ объекта на VBA

Владимир Петров пишет:

Народ помогите. Может кто сталкивался с задачей определения границ объекта, например блока на VBA для определения пересечения с полилинией. Может у кого есть ссылки на примеры.

Есть такой нехитрый способ на стадии создания блока
(хотя можно и отредактировать существующий):

в поле Description вписываются два значения
- расстояние от точки вставки блока до левой его границы
- расстояние от точки вставки блока до правой границы
через пробел или знак препинания

Затем эти данные в качестве строки можно получить
через свойство Description объекта AcadBlock
соответствующего AcadBlockReference

Далее примитивные вычисления через метод PolarPoint
и получишь 2 точки
Естественно нужно учесть масштаб(ы) вставки блока

~'J'~

Re: Определение границ объекта на VBA

Тогда уж проще использовать метод GetBoundingBox но эти границы будут прямоугольными, а блок может быть любой формы...

Re: Определение границ объекта на VBA

Посмотри метод IntersectWith.

Re: Определение границ объекта на VBA

Artem A пишет:

Тогда уж проще использовать метод GetBoundingBox но эти границы будут прямоугольными, а блок может быть любой формы...

А если блок повернут - что тогда?

~'J'~

Re: Определение границ объекта на VBA

Здесь нельзя использовать ни один из приведенных способов, поскольку двух, трех, четырех точек мало
Нужно заходить внутрь блока и смотреть пересечения с его составляющими...

Re: Определение границ объекта на VBA

IntersectWith Метод
Получает точки, в корторых один объект пересекает другой объект в рисунке.

Синтаксис
RetVal = object.IntersectWith(IntersectObject, ExtendOption)

Object - All Drawing Objects (Except Pviewport and PolygonMesh)
Объект или объекты обращающиеся к этому методу.

IntersectObject - Object, только для ввода; Объект может быть одним из Все Объекты Рисунка.

ExtendOption - AcExtendOption перечисление; только для ввода
Эта опция определяет не должны ли ни один, один или оба, объектов быть продлены, чтобы делать пересечение.
acExtendNone -  Не расширяет ни один объект. 
acExtendThisEntity - Расширяет базовый объект. 
acExtendOtherEntity - Расширяет объект параметр. 
acExtendBoth - Расширяет оба объекта.


RetVal - Variant (массив double)
Массив точек, в которых один объект пересекает другой.

Замечания
Если два объекта не пересекаются, никакие данные не возвращаются.

Re: Определение границ объекта на VBA

Artem A пишет:

Здесь нельзя использовать ни один из приведенных способов, поскольку двух, трех, четырех точек мало
Нужно заходить внутрь блока и смотреть пересечения с его составляющими...

Все зависит от степени сложности формы блока
Если более-менее форма простая (например вентиль на трубе)
приведенный мной способ самый легкий
Некоторые пользователи правда применяют еще XData
для хранения геометрических данных
Лично я держусь от этого подальше

~'J'~