2008-09-30 9 views
4

Есть ли способ в Visio VBA, чтобы увидеть, есть ли форма перед или позади фигуры в Visio?Функция Visio VBA, чтобы увидеть, есть ли форма перед/позади формы

Я предполагаю, что могу написать что-то, что проверяет ограничительную рамку каждой фигуры на странице, чтобы увидеть, занимает ли она то же пространство, что и моя форма. Я предпочел бы использовать что-то встроенное, так как проверка каждой фигуры может занять много времени, поскольку рисунок получает все больше и больше фигур.

ответ

3

Свойство 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 

Подробнее здесь:

Shape.SpatialRelation Property on MSDN