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

Форум по вопросам применения и программирования в Visio
Текущее время: 22 окт 2018, 17:59

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Прикрепление шейпа к конектору
СообщениеДобавлено: 22 июн 2016, 13:24 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Surrogate писал(а):
а если попробовать в шейпшите попробовать пересчитать значение с абсолютными координатами листа получается ересь
почему-то значения LocPinX и LocPinY стали отрицательными ?!?!? Изменил знак в последней части формулы в коде
sheet.3!Controls.TextPosition+sheet.3!PinX-sheet.3!LocPinX
sheet.3!Controls.TextPosition.Y+sheet.3!PinY-sheet.3!LocPinY
Код:
sSet mstObjConnector3 = ActiveDocument.Masters("LikeOK")
Set shpObjConnector3 = ActivePage.Drop(mstObjConnector3, 0, 0)
'Ïðÿ÷åì åãî
shpObjConnector3.SendToBack
'Íà÷àëî ê ïîðòó 1
shpObjConnector3.Cells("BeginX").GlueTo shpodf1.Cells("PinY")
'êîíåö ê ïîðòó 2
shpObjConnector3.Cells("EndX").GlueTo shpodf2.Cells("PinY")
shpObjConnector3.Cells("LineColor") = 2
shpObjConnector3.Cells("LineWeight") = 0.03
'---------------------------------------------------------------------------
'ñòàâèì çíà÷îê
'---------------------------------------------------------------------------------------------------
Set mstOK2 = ActiveDocument.Masters("OK")
Set shpOK2 = ActivePage.Drop(mstOK2, 0, 0)
stx = "sheet." & shpObjConnector3.ID & "!Controls.TextPosition+sheet." & shpObjConnector3.ID & "!Pinx-sheet." & shpObjConnector3.ID & "!LocPinx"
sty = "sheet." & shpObjConnector3.ID & "!Controls.TextPosition.y+sheet." & shpObjConnector3.ID & "!Piny-sheet." & shpObjConnector3.ID & "!LocPiny"
shpOK2.Cells("PinX").Formula = stx
shpOK2.Cells("Piny").Formula = sty
заработало. плюс данного решения: что теперь если претаскивать один из шейпов, к которым прилеплен коннектор, кружок будет сам перемещаться. почти как на картинке Геннадия Туманова


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Прикрепление шейпа к конектору
СообщениеДобавлено: 22 июн 2016, 13:53 
Не в сети

Зарегистрирован: 22 июн 2016, 06:08
Сообщений: 12
Использую Visio c: 2013
Уровнь квалификации: Начинающий
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
заработало. плюс данного решения: что теперь если претаскивать один из шейпов, к которым прилеплен коннектор, кружок будет сам перемещаться. почти как на картинке Геннадия Туманова

Огромное спасибо, работает! :D
Но можете прокомментировать код? Мне для общего понимания, возможно в будущем позволит избегать других вопросов


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
gvozd18 писал(а):
можете прокомментировать код?
наша цель получить абсолютные координаты точки привязки текста
(ищу картинку поясняющую это)
Изображение
на языке shapesheet™ эти абсолютные координаты будут выглядеть так
sheet.3!Controls.TextPosition+sheet.3!PinX-ABS(sheet.3!LocPinX)
sheet.3!Controls.TextPosition.Y+sheet.3!PinY-ABS(sheet.3!LocPinY)
в коде нам нужно определить Controls.TextPosition, PinX и LocPinX нарисованного ранее коннектора.
Код:
stx = "sheet." & shpObjConnector3.ID & "!Controls.TextPosition+sheet." & shpObjConnector3.ID & "!Pinx-ABS(sheet." & shpObjConnector3.ID & "!LocPinx)"
sty = "sheet." & shpObjConnector3.ID & "!Controls.TextPosition.y+sheet." & shpObjConnector3.ID & "!Piny-ABS(sheet." & shpObjConnector3.ID & "!LocPiny)"
для формирования данной формулы нам не хватает ссылки на сам шейп. самый простой способ сослаться на шейп - указать его ID - порядковый номер на листе (ID присваивает шейпу ядро визио, невозможно изменить ни программно, ни руками)
sheet.<ID> и будет ссылкой на наш коннектор
ID программно определяется кодом
Код:
shpObjConnector3.ID


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Прикрепление шейпа к конектору
СообщениеДобавлено: 22 июн 2016, 15:37 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Немножко причесал коннектор с Data Graphics. Можно попробовать.


Вложения:
ConnectorTest.vsd [50.5 Кб]
Скачиваний: 33
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Прикрепление шейпа к конектору
СообщениеДобавлено: 27 июн 2016, 12:19 
Не в сети

Зарегистрирован: 22 июн 2016, 06:08
Сообщений: 12
Использую Visio c: 2013
Уровнь квалификации: Начинающий
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Немножко причесал коннектор с Data Graphics. Можно попробовать.

Спасибо огромное!:)


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

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



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

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


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

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