Тема: Определение границ объекта на VBA
Народ помогите. Может кто сталкивался с задачей определения границ объекта, например блока на VBA для определения пересечения с полилинией. Может у кого есть ссылки на примеры.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Определение границ объекта на VBA
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Народ помогите. Может кто сталкивался с задачей определения границ объекта, например блока на VBA для определения пересечения с полилинией. Может у кого есть ссылки на примеры.
Народ помогите. Может кто сталкивался с задачей определения границ объекта, например блока на VBA для определения пересечения с полилинией. Может у кого есть ссылки на примеры.
Есть такой нехитрый способ на стадии создания блока
(хотя можно и отредактировать существующий):
в поле Description вписываются два значения
- расстояние от точки вставки блока до левой его границы
- расстояние от точки вставки блока до правой границы
через пробел или знак препинания
Затем эти данные в качестве строки можно получить
через свойство Description объекта AcadBlock
соответствующего AcadBlockReference
Далее примитивные вычисления через метод PolarPoint
и получишь 2 точки
Естественно нужно учесть масштаб(ы) вставки блока
~'J'~
Тогда уж проще использовать метод GetBoundingBox но эти границы будут прямоугольными, а блок может быть любой формы...
Тогда уж проще использовать метод GetBoundingBox но эти границы будут прямоугольными, а блок может быть любой формы...
А если блок повернут - что тогда?
~'J'~
Здесь нельзя использовать ни один из приведенных способов, поскольку двух, трех, четырех точек мало
Нужно заходить внутрь блока и смотреть пересечения с его составляющими...
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)
Массив точек, в которых один объект пересекает другой.
Замечания
Если два объекта не пересекаются, никакие данные не возвращаются.
Здесь нельзя использовать ни один из приведенных способов, поскольку двух, трех, четырех точек мало
Нужно заходить внутрь блока и смотреть пересечения с его составляющими...
Все зависит от степени сложности формы блока
Если более-менее форма простая (например вентиль на трубе)
приведенный мной способ самый легкий
Некоторые пользователи правда применяют еще XData
для хранения геометрических данных
Лично я держусь от этого подальше
~'J'~
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Определение границ объекта на VBA
Форум работает на PunBB, при поддержке Informer Technologies, Inc