Подключения в Visio обрабатываются через объекты Connect. Каждая фигура имеет коллекцию входящих и исходящих объектов соединения. Их имена — FromConnects и Connects соответственно.
Каждый объект соединения имеет свойства FromSheet и ToSheet, которые являются просто указателями на объекты Shape, причем фигура FromSheet — это фигура, которая соединяется с фигурой ToSheet.
Итак, если у вас есть квадратная фигура (фигура1), соединенная с другой квадратной фигурой (форма2) соединительной линией (коннектором), на самом деле вы имеете следующее: соединитель соединен с фигурой1 соединитель соединен с фигурой2
Итак, в shape1 вы посмотрите на FromConnects и увидите один элемент Connects, где FromSheet ссылается на коннектор, а ToSheet ссылается на shape1. Форма 2 будет такой же. Если вы посмотрите на Connects на фигуре соединителя, вы увидите тот же элемент Connects с теми же ссылками на объекты.
Таким образом, выяснение того, соединяется ли shape1 с shape2 или наоборот, зависит от порядка на соединителе... Объект Connects 1 будет фигурой «From», а объект Connects 2 будет фигурой «To».
Вот две подпрограммы VBA, которые получают входящие и исходящие клеи для формы, которую вы передаете, и возвращают объект коллекции. Я знаю, вы сказали, что используете C#, но я использую VBA для Visio. Код просто иллюстрирует необработанную информацию о соединении. Я бы посоветовал вам попробовать разобраться в VBA и посмотреть, как все это работает, потому что это все еще меня смущает.
Public Function GetShapesThatConnectTo(TheShp As Visio.Shape) As Collection
Dim Result As Collection
Set Result = New Collection
For i = 1 To TheShp.FromConnects.Count
Result.Add TheShp.FromConnects.Item(i).FromSheet
Next i
Set GetShapesThatConnectTo = Result
End Function
Public Function GetWhatShapeConnectsTo(TheShp As Visio.Shape) As Collection
Dim Result As Collection
Set Result = New Collection
For i = 1 To TheShp.Connects.Count
Result.Add TheShp.Connects.Item(i).ToSheet
Next i
Set GetWhatShapeConnectsTo = Result
End Function
person
Jon Fournier
schedule
23.06.2011