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

Форум по вопросам применения и программирования в Visio
Текущее время: 29 мар 2024, 14:53

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Не получается программная приклейка линии к объекту
СообщениеДобавлено: 17 янв 2010, 11:35 
Не в сети

Зарегистрирован: 05 янв 2010, 23:05
Сообщений: 11
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Здравствуйте еще раз. Пишу скрипт для черчения с автоматической привязкой, есть у меня "жирная точка" с четырьмя клеевыми точками, есть линия... Пытаюсь перетащить на лист жирную точку, нарисовать линию, а затем конец линии приклеить к одной из клеевых точек на моей жирной точке. Код такой:

Код:
Application.ActiveWindow.Page.DrawLine X1, Y1, X2, Y2
Count = ActivePage.Shapes.Count
ActivePage.Drop Application.Documents.Item("Точки соединения.vss").Masters.ItemU("Master.8"), X2, Y2
Dim vsoCell1 As Visio.Cell, vsoCell2 As Visio.Cell
' Count мы считали после того как нарисовали линию
Set vsoCell1 = ActivePage.Shapes(Count).CellsU("EndX")
' А объект перетащили уже после того как считали Count
Set vsoCell2 = ActivePage.Shapes(Count + 1).CellsSRC(7, 0, 0) ' Значения 7, 0, 0 взял из записанного мною макроса
vsoCell1.GlueTo vsoCell2


А в результате получаю сообщение

Ячейка по ссылке Sheet.5!Connections.X1 не существует

Судя по дебаггеру, сообщение вызывается именно последней приведенной мною строкой программы

З.Ы. Чуть не забыл самое главное - помогите пожалуйста :)))


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не получается программная приклейка линии к объекту
СообщениеДобавлено: 17 янв 2010, 12:11 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Зачем Вам все эти счетчики?
Корректнее работать непосредственно с объектами. Типа вот так:
Dim vsoShape1 As Visio.Shape
Set vsoShape1 = ActivePage.Drop(Application.Documents.Item("Точки соединения.vss").Masters.ItemU("Master.8"), X2, Y2)
Тогда хотя бы будете уверены, что шейпы те, которые нужно.
А если сейчас попадаете не в тот шейп, то ячейки CellsSRC(7, 0, 0) в нем скорее всего просто нет.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не получается программная приклейка линии к объекту
СообщениеДобавлено: 17 янв 2010, 12:26 
Не в сети

Зарегистрирован: 05 янв 2010, 23:05
Сообщений: 11
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Код:
Dim vsoLine As Visio.Shape
Set vsoLine = Application.ActiveWindow.Page.DrawLine(X1, Y1, X2, Y2)
Dim vsoShape As Visio.Shape
Set vsoShape = ActivePage.Drop(Application.Documents.Item("Точки соединения.vss").Masters.ItemU("Master.8"), X2, Y2)
vsoLine.CellsU("EndX").GlueTo vsoShape.CellsSRC(7, 0, 0)


Аналогичная ситуация... Причем когда записываю макрос при соединении рисованной линии к этому шейпу-точке, то там отображается именно CellsSRC (7, n, 0), где n от 0 до 3-х, в зависимости от точки привязки (их 4 штуки на шейпе)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не получается программная приклейка линии к объекту
СообщениеДобавлено: 17 янв 2010, 12:44 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Вот сейчас проверил такой код:
Код:
Sub ttt()
    Dim vsoLine As Visio.Shape
    Set vsoLine = Application.ActiveWindow.Page.DrawLine(X1, Y1, X2, Y2)
    Dim vsoShape As Visio.Shape
    Set vsoShape = ActivePage.Drop(Masters.ItemU("shcon"), X2, Y2)
    vsoLine.CellsU("EndX").GlueTo vsoShape.CellsSRC(7, 0, 0)
End Sub

Все работает и ошибок нет.
(Я беру мастер из Document Stencil)
Значит скорее всего у Вас ошибается в выражении Application.Documents.Item("Точки соединения.vss").
Либо там сидит другой шейп. Без точек соединения.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не получается программная приклейка линии к объекту
СообщениеДобавлено: 17 янв 2010, 12:59 
Не в сети

Зарегистрирован: 05 янв 2010, 23:05
Сообщений: 11
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Да вроде сам шейп то перетаскивается, и при соединении линии к его точке соединения запись макроса показывает именно тот самый Line.CellsU("EndX").GlueTo Shape.CellsSRC(7, 0, 0)... А макрос не работает... Макрос у меня без привязки пока работает, то есть он набрасывает в нужные места точки соединения, и линии разбивает, если точка получается в середине линии... А вот чтобы прицепить линию к точке соединения - не получается, а это в общем то важно, иначе весь смысл точек привязки теряется, схему "тянуть" потом не получится...


Вложения:
Комментарий к файлу: Слева направо - до макроса, после макроса
.JPG
.JPG [ 52.23 Кб | Просмотров: 353 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не получается программная приклейка линии к объекту
СообщениеДобавлено: 17 янв 2010, 13:11 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
1. Попробуйте работать с мастером из Document Stencil. Если картина изменится, значит возможно проявляется взаимовлияние (если, например, трафарет недавно менялся).
2. Просмотрите ShapeSheet точки после переноса ее на лист рисунка макросом. Есть ли там нужная секция и нужные строки в ней.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не получается программная приклейка линии к объекту
СообщениеДобавлено: 18 янв 2010, 08:33 
Не в сети

Зарегистрирован: 05 янв 2010, 23:05
Сообщений: 11
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо, все получилось :)


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

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



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

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


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

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