Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 23 окт 2018, 09:50

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 08:34 
Подскажите как можно определить начальный и конечный шейп у стрелки?
Пробовал через Connects, FromConnects, но что-то пошло не так, теперь не могу таким образом определить, при попытке обратиться к объектам массива по номеру выдаёт ошибку.
В итоге мне надо получить шейп из которого выходит стрелка и в какой входит.


Последний раз редактировалось Surrogate 26 апр 2016, 12:45, всего редактировалось 1 раз.
уточнено название объекта


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 08:50 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1186
Очков репутации: 100588

Добавить очки репутацииУменьшить очки репутации
Sub ttt()
Debug.Print ActiveWindow.Selection(1).Connects(1).ToSheet, ActiveWindow.Selection(1).Connects(2).ToSheet
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 09:26 
Цитата:
Sub ttt()
Debug.Print ActiveWindow.Selection(1).Connects(1).ToSheet, ActiveWindow.Selection(1).Connects(2).ToSheet
End Sub

А это в каждом случае работает? То есть первым будет объект начала, а вторым объект конца всегда?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 09:28 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 897
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
добавлю:
.Connects(1).FromPart или .Connects(2).FromPart - какой частью стрелка конектится к шейпу (visBegin, visEnd)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 09:30 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 897
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
Bill17 писал(а):
А это в каждом случае работает? То есть первым будет объект начала, а вторым объект конца всегда?

нет. надо проверять как я написал выше


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 11:54 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1186
Очков репутации: 100588

Добавить очки репутацииУменьшить очки репутации
Цитата:
нет. надо проверять как я написал выше

Надо проверить, надо ли проверять :)
Сейчас плохо помню, но вроде бы когда-то давно я уже задавался таким вопросом. И получил неожиданный результат.
Если коннектор прилеплен одним концом, то тогда действительно нужно смотреть каким - началом или концом.
Но если приконнекчены оба конца, то Connects(1) - всегда начало, Connects(2) - всегда конец.
То есть проверять смысла нет.
----------
Вот только повторю, что смотрел я это давно и мог бы уже подзабыть. Так что для верности, прежде чем пользоваться, надо бы еще разок проверить данное утверждение.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 12:06 
Спасибо, это работает!

Так как рассматриваю общий случай, то проверку добавил, тоже работает.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 26 апр 2016, 12:25 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1186
Очков репутации: 100588

Добавить очки репутацииУменьшить очки репутации
Вот в этом файлике доказательство.
Нужно выполнить стартовый макрос ttt, потом поиграться коннектором.
Макрос выводит сначала Connects(1), потом Connects(2) (если их два).
И мы видим, что первым всегда выводится имя шейпа, подключенного к началу коннектора. Независимо от порядка подключения.


Вложения:
Connections.vsd [29 Кб]
Скачиваний: 52
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Определить начало и конец у стрелки
СообщениеДобавлено: 26 апр 2016, 13:03 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 897
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 120

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
То есть проверять смысла нет.

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 10 май 2016, 15:46 
Не в сети
Новичок

Зарегистрирован: 08 дек 2014, 13:45
Сообщений: 21
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
А как определить к какой точке (connectins point) элемента коннектор присоединен. Так то вся эта информация хранится в shapesheet коннектора в ячейке beginX/endX. Можно конечно считать и обработать строку, но ведь есть способ проще наверняка?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 10 май 2016, 16:44 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1186
Очков репутации: 100588

Добавить очки репутацииУменьшить очки репутации
Смотреть свойство ToPart
Цитата:
Constant Value
visConnectToError
-1
visToNone
0
visGuideX
1
visGuideY
2
visWholeShape
3
visGuideIntersect
4
visToAngle
7
visConnectionPoint
100 + row index of connection point

Которые больше 100 - это Connection Points.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 10 май 2016, 17:40 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
что-то я не осилил про ToParts, сделал в более явном виде
Код:
Sub nm()
Dim cnt As Connects, cnt1 As Connect, cnt2 As Connect
Dim sh As Shape
Set sh = ActiveWindow.Selection.PrimaryItem
Set cnt = sh.Connects
Set cnt1 = cnt.Item(1)
Set cnt2 = cnt.Item(2)
Debug.Print cnt1.FromCell.Name, cnt1.ToSheet.Name & "!" & cnt1.ToCell.Name
Debug.Print cnt2.FromCell.Name, cnt2.ToSheet.Name & "!" & cnt2.ToCell.Name
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как определить шейпы к которым приклеен коннектор
СообщениеДобавлено: 18 май 2016, 12:23 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
kin писал(а):
А как определить к какой точке (connectins point) элемента коннектор присоединен
статья на английском и код в виде бонуса
A Visio developer asked me if it is possible to get the name of connection points that a connector is glued to in Visio. Well, it is not possible directly from the ShapeSheet, but is easy if you use a little code.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB