Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает прямоугольник, плотно закрывающий фигуры выделенной области.
Синтаксис
выражение.
BoundingBox( _Flags_ , _lpr8Left_ , _lpr8Bottom_ , _lpr8Right_ , _lpr8Top_ )
выражение Переменная, представляющая объект выделения .
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| Flags | Обязательный | Integer | Флаги, влияющие на ограничивающий прямоугольник, вычисленный для каждой фигуры, которая вносит вклад в итоговый ограничительный прямоугольник. |
| lpr8Left | Обязательный | Double | Возвращает X-координату левого края ограничивающего прямоугольника. |
| lpr8Bottom | Обязательный | Double | Возвращает координату Y нижнего края ограничивающего прямоугольника. |
| lpr8Right | Обязательный | Double | Возвращает X-координату правого края ограничивающего прямоугольника. |
| lpr8Top | Обязательный | Double | Возвращает координату Y верхнего края ограничивающего прямоугольника. |
Возвращаемое значение
Отсутствует
Примечания
Для объекта Shape метод BoundingBox возвращает прямоугольник, плотно охватывающий фигуру и ее подфигуры.
Для объекта Page, Master, или Selection метод BoundingBox возвращает прямоугольник, плотно заключающий фигуры страницы, образца или выделенного фрагмента и их подфигуры.
Если метод BoundingBox возвращает ошибку или если его просят вернуть прямоугольник, заключающий в себе ноль фигур, возвращается прямоугольник: { left: 0, bottom: 0, right: -1, top: -1 }; В противном случае возвращаемый прямоугольник имеет значение Left Меньше или равно (<=) Right и Bottom меньше или равно (<=) top. Возвращаемые числа выражены во внутренних единицах измерения (дюймах).
Значение ограничивающего прямоугольника, возвращаемое для отдельной фигуры, зависит от ее свойства "Тип ".
| Константа | Описание |
|---|---|
| visTypePage | Эквивалентно Page.BoundingBox или Master.BoundingBox. |
| visTypeGroup | Прямоугольник, плотно охватывающий группу и ее подфигуры. |
| visTypeShape | Определенный прямоугольник зависит от флагов. См. приведенную ниже таблицу. |
| visTypeForeignObject | Определенный прямоугольник зависит от флагов. См. приведенную ниже таблицу. |
| visTypeGuide | Определенный прямоугольник зависит от флагов. См. приведенную ниже таблицу. |
Метод создает исключение для объекта типа visTypeDoc.
Аргумент Flags имеет несколько битов, которые управляют ограничивающим прямоугольником, полученным для каждой фигуры. Если задано несколько битов, описанных в следующей таблице, прямоугольник, определенный для фигуры, покрывает все прямоугольники, подразумеваемые битами.
| Флаг | Значение | Описание |
|---|---|---|
| visBBoxUprightWH | &H1 | Возвращает прямоугольник — наименьший прямоугольник, параллельный местной системе координат родительского объекта фигуры, который окружает поле ширина-высота фигуры. Если фигура не повернута, ее прямоугольник ширины-высоты и прямоугольник ширины-высоты совпадают. Контуры в геометрии фигуры не обязательно должны и часто не находятся полностью внутри поля ширины-высоты. |
| visBBoxUprightText | &H2 | Возвращает прямоугольник, являющийся наименьшим прямоугольником, параллельным местной системе координат родительского элемента фигуры, который заключает текст фигуры. |
| visBBoxExtents | &H4 | Возвращает прямоугольник, являющийся наименьшим прямоугольником, параллельным локальной системе координат родительского объекта фигуры, который заключает в себе контуры, обведенные геометрией фигуры. Он может быть больше или меньше вертикального поля ширины и высоты фигуры. Поле экстентов, определенное для фигуры типа visTypeForeignObject , равно прямому полю ширины и высоты этой фигуры. |
| visBBoxIncludeHidden | &H10 | Включает скрытую геометрию. |
| visBBoxIgnoreVisible | &H20 | Игнорирует видимую геометрию. |
| visBBoxIncludeDataGraphics | &H10000 | Включает фигуры выносок с данными-графики (и их подфигуры), которые применяются к фигурам в выделенной области. По умолчанию выключено. |
| visBBoxIncludeGuides | &H1000 | Включает экстенты для фигур типа visTypeguide. По умолчанию экстенты фигур типа visTypeGuide игнорируются. Если запрашиваются направляющие экстенты, то в возвращаемый прямоугольник влияют только положения x вертикальных направляющих и вертикальные положения по оси Y горизонтальных. Если указаны какие-либо вертикальные направляющие, возвращается бесконечный экстент y . Если указаны какие-либо горизонтальные направляющие, возвращается бесконечный экстент x . Если сообщается о каких-либо повернутых направляющих, возвращаются бесконечные экстенты x и y . |
| visBBoxDrawingCoords | &H2000 | Возвращает числа в системе координат страницы или master, фигуры которых рассматриваются. По умолчанию возвращаемые числа являются единицами измерения в местной системе координат родительского объекта рассматриваемых фигур. |
| visBBoxNoNonPrint | &H4000 | Игнорируются экстенты фигур, которые не печатаются. Фигура считается непечатаемой, если значение ее ячейки NonPrinting не равно нулю или она относится только к непечатаемым слоям. |
Прямоугольник экстентов определяется с помощью центра штрихов фигуры; При этом не учитывается ширина росчерков. Прямоугольник также не включает в себя области, покрытые тенями или маркерами концов линии. Microsoft Visio не предоставляет средства для определения поля "черных битов" фигуры, то есть поля экстентов, настроенных с учетом ширины штрихов, теней и концов линий.
Фигура может иметь контрольные точки или точки соединения, лежащие за пределами любого из ограничивающих прямоугольников, указанных фигурой. Положение контрольных точек и точек соединения можно определить, запросив результаты ячеек фигуры.
Пример
В описанной ниже процедуре размеры ограничивающего прямоугольника выделенной фигуры печатаются в окне интерпретации. Если в активном окне выделено несколько фигур, отображается окно сообщения об ошибке. Во всех случаях результаты отображаются в единицах документа страницы или master, к которым принадлежит фигура. Это означает, что если фигура является подфигурой группы, visBBoxDrawingCoords передается в качестве флага в метод BoundingBox .
Если фигура является направляющей, процедура передает visBBoxIncludeGuides в метод BoundingBox , так что фигура будет считаться имеющей экстент. Для фигуры указаны три прямоугольника:
visBBoxUprightWH : вертикальный прямоугольник, заключающий в себе поле ширины-высоты фигуры
visBBoxUprightText : вертикальная поле, окружающая текстовое поле фигуры
visBBoxExtents : вертикальная рамка, заключающая в себе контуры фигуры
Чтобы запустить этот макрос, убедитесь, что на странице документа Visio выбрана только одна фигура.
Public Sub BoundingBox_Example()
Dim vsoSelection As Visio.Selection
Set vsoSelection = ActiveWindow.Selection
vsoSelection.IterationMode = visSelModeSkipSub
If vsoSelection.Count <> 1 Then
MsgBox "BoundingBox_Example() expects exactly one selected shape."
Else
Dim vsoShape As Visio.Shape
Set vsoShape = vsoSelection(1)
Dim intFlags As Integer
intFlags = 0
If vsoShape.ContainingShape.Type = visTypeGroup Then
intFlags = visBBoxDrawingCoords
End If
If vsoShape.Type = visTypeGuide Then
intFlags = intFlags + visBBoxIncludeGuides
End If
Dim dblTop As Double
Dim dblBottom As Double
Dim dblLeft As Double
Dim dblRight As Double
vsoShape.BoundingBox intFlags + visBBoxUprightWH, dblLeft, dblBottom, dblRight, dblTop
Debug.Print "Upright WH "; _
"dblLeft:" & Application.FormatResult(dblLeft, "in", "", "#0.00 u"); _
"dblBottom:" & Application.FormatResult(dblBottom, "in", "", "#0.00 u"); _
"dblRight:" & Application.FormatResult(dblRight, "in", "", "#0.00 u"); _
"dblTop:" & Application.FormatResult(dblTop, "in", "", "#0.00 u")
vsoShape.BoundingBox intFlags + visBBoxUprightText, dblLeft, dblBottom, dblRight, dblTop
Debug.Print "Upright text "; _
"dblLeft:" & Application.FormatResult(dblLeft, "in", "", "#0.00 u"); _
"dblBottom:" & Application.FormatResult(dblBottom, "in", "", "#0.00 u"); _
"dblRight:" & Application.FormatResult(dblRight, "in", "", "#0.00 u"); _
"dblTop:" & Application.FormatResult(dblTop, "in", "", "#0.00 u")
vsoShape.BoundingBox intFlags + visBBoxExtents, dblLeft, dblBottom, dblRight, dblTop
Debug.Print "Bounding Box "; _
"dblLeft:" & Application.FormatResult(dblLeft, "in", "", "#0.00 u"); _
"dblBottom:" & Application.FormatResult(dblBottom, "in", "", "#0.00 u"); _
"dblRight:" & Application.FormatResult(dblRight, "in", "", "#0.00 u"); _
"dblTop:" & Application.FormatResult(dblTop, "in", "", "#0.00 u")
End If
End Sub
В следующем макросе метод BoundingBox и функция ShapesOverlap() используются для определения того, перекрывает ли одна фигура (vsoShape2) другую (vsoShape1).
Public Sub OverlappingShapes_Example()
Dim vsoShape1 As Visio.Shape
Dim vsoShape2 As Visio.Shape
Dim blsIsOverlapping As Boolean
Set vsoShape1 = Application.ActiveWindow.Page.Drop(Application.Documents.Item("BASIC_U.VSS").Masters.ItemU("Square"), 3, 9)
Set vsoShape2 = Application.ActiveWindow.Page.Drop(Application.Documents.Item("BASIC_U.VSS").Masters.ItemU("Pentagon"), 3, 8)
blsIsOverlapping = ShapesOverlap(vsoShape2, vsoShape1)
If blsIsOverlapping Then
Debug.Print "Shapes overlap."
Else
Debug.Print "Shapes don't overlap."
End If
End Sub
Private Function ShapesOverlap(vsoShape1 As IVShape, vsoShape2 As IVShape) As Boolean
Dim dblLeft1 As Double
Dim dblLeft2 As Double
Dim dblBottom1 As Double
Dim dblBottom2 As Double
Dim dblRight1 As Double
Dim dblRight2 As Double
Dim dblTop1 As Double
Dim dblTop2 As Double
vsoShape1.BoundingBox Flags + visBBoxExtents, dblLeft1, dblBottom1, dblRight1, dblTop1
vsoShape2.BoundingBox Flags + visBBoxExtents, dblLeft2, dblBottom2, dblRight2, dblTop2
If ((dblLeft2 >= dblLeft1 And dblLeft2 <= dblRight1) Or _
(dblRight2 >= dblLeft1 And dblRight2 <= dblRight1)) And _
((dblTop2 >= dblBottom1 And dblTop2 <= dblTop1) Or _
(dblBottom2 >= dblBottom1 And dblBottom2 <= dblTop1)) Then
ShapesOverlap = True
Else
ShapesOverlap = False
End If
End Function
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.