Функция Visio VBA, позволяющая узнать, есть ли фигура перед фигурой или позади нее.
Вопрос
Есть ли в Visio VBA способ узнать, есть ли фигура перед или за фигурой в Visio?
Я предполагаю, что мог бы написать что-то, что проверяет ограничивающую рамку каждой фигуры на странице, чтобы увидеть, занимает ли она то же пространство, что и моя фигура.Я бы предпочел использовать что-то встроенное, поскольку проверка каждой фигуры может занять много времени, поскольку в рисунке появляется все больше и больше фигур.
Решение
Свойство Shape.SpatialRelation сообщит вам, соприкасаются ли две фигуры.Свойство Shape.Index сообщит вам, что находится впереди или позади в z-порядке.
Вот простой пример:
Public Sub DoShapesIntersect(ByRef shape1 As Visio.Shape, ByRef shape2 As Visio.Shape)
'// do they touch?
If (shape1.SpatialRelation(shape2, 0, 0) <> 0) Then
'// they touch, which one is in front?
If (shape1.Index > shape2.Index) Then
Debug.Print shape1.Name + " is in front of " + shape2.Name
Else
Debug.Print shape1.Name + " is behind " + shape2.Name
End If
Else
Debug.Print "shape1 and shape2 do not touch"
End If
End Sub
Подробнее читайте здесь:
Не связан с StackOverflow