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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 13:45

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 11:05 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Привет.
Группированный шей с полями. Предполагается, что будет их несколько экземпляров. Т.е. автобусов с пассажирами и багажом будет несколько (неизвестное значение).
Вопрос - как обращаться к такому объекту в коде?
Предлагаемый способ работает в случае выделения группового шейпа:
Код:
Dim sh As Shape
Set sh = ActiveWindow.Selection.PrimaryItem
' получить значения полей
Debug.Print sh.Cells("Prop.child"), sh.Cells("Prop.Adult"), sh.Cells("Prop.Bagage")
' задать значения поля
sh.Cells("Prop.Bagage") = 88


У меня же в программе все будет работать от кнопки, без выделений мышкой.
В данном случае я хочу такую реализацию - соединил любое количество автобусов особой линией и в...пусть в msgbox выдается сумма пассажиров и багажа.
Правильно ли я понимаю, что мне нужно сделать объект "связь"? И как быть с его идентификатором, если я его буду копировать?
И как быть с объектам "автобус" - у них есть поля, но нет какого-то...эээ...одного общего идентификатора, чтобы сделать нечто подобное - avtobus(1).Cells("Prop.Adult")+avtobus(2).Cells("Prop.Adult"), если они соединены объектом svyazka(1)
Хм...вроде объяснил, может и путано ))


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Вы же не каждый раз заново рисуете свой автобус? А, видимо храните в стенсиле готовый шейп. Так ведь? А это значит что общий идентификатор есть. И это - имя Мастер-шейпа.

_________________
GitHub
Yandex-диск с набором полезных утилит


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

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

Добавить очки репутацииУменьшить очки репутации
Если автобусы нужно соединять линией, значит предполагается, что таких групп автобусов будет несколько. Например, 5 автобусов соединены одной линией, еще 10 - другой и т.д.
Значит придется писать сканер, который просмотрит документ, выберет такие соединенные группы и сложит их в коллекции. Например, каждую связку в свою коллекцию.
Алгоритм сканирования будет не самым простым, но вполне разрешимым. Задача - отобрать в отдельную коллекцию все связанные автобусы.
Собрать все связи; отфильтровать - оставить только связи между автобусами; выбрать неразрывные цепочки (последовательным перебором с вычеркиванием).
Ну а когда в коллекции будут только связанные шейпы (автобусы), то просто перебирается коллекция шейпов и суммируются данные из нужных ячеек.
--
Возможны и другие подходы.
Можно группировать автобусы не соединяя их линией, а помещая в один контейнер. Тогда сканер будет попроще.
Или по типу SwimLine. Тогда отбирать по перекрывающему шейпу.
Или помещать группу автобусов на отдельный слой.
В любом из этих случаев алгоритм сканера будет попроще, чем при соединении линиями.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 12:43 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Вы же не каждый раз заново рисуете свой автобус? А, видимо храните в стенсиле готовый шейп. Так ведь? А это значит что общий идентификатор есть. И это - имя Мастер-шейпа.


Благодарю.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 12:46 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Если автобусы нужно соединять линией, значит предполагается, что таких групп автобусов будет несколько. Например, 5 автобусов соединены одной линией, еще 10 - другой и т.д.
Значит придется писать сканер, который просмотрит документ, выберет такие соединенные группы и сложит их в коллекции. Например, каждую связку в свою коллекцию.
Алгоритм сканирования будет не самым простым, но вполне разрешимым. Задача - отобрать в отдельную коллекцию все связанные автобусы.
Собрать все связи; отфильтровать - оставить только связи между автобусами; выбрать неразрывные цепочки (последовательным перебором с вычеркиванием).
Ну а когда в коллекции будут только связанные шейпы (автобусы), то просто перебирается коллекция шейпов и суммируются данные из нужных ячеек.
--
Возможны и другие подходы.
Можно группировать автобусы не соединяя их линией, а помещая в один контейнер. Тогда сканер будет попроще.
Или по типу SwimLine. Тогда отбирать по перекрывающему шейпу.
Или помещать группу автобусов на отдельный слой.
В любом из этих случаев алгоритм сканера будет попроще, чем при соединении линиями.


У меня линии ))) Вопрос в том, что это должна быть за линия? Хотя так же, как и с другими объектами, можно использовать имя мастера...чтобы понять, что за связь (у меня будут разные). А еще плз ткните в тему, где определяется объект начала и конца линии.


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Глянь здесь:
http://visio.getbb.ru/viewtopic.php?f=6&t=936&p=8932&hilit=tosheet#p8932

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 12:55 
Почему нельзя просто выделить автобусы мышью?
При рисовании отрезков соединяющих автобусы движений мышью будет больше!
При добавлении в контейнер всё равно придется их выделить мышью.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 12:56 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

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


Благодарю.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 12:59 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Гость писал(а):
Почему нельзя просто выделить автобусы мышью?
При рисовании отрезков соединяющих автобусы движений мышью будет больше!
При добавлении в контейнер всё равно придется их выделить мышью.


Потому что в реальности это, разумеется, будут не автобусы, а куча объектов, соединенных разными связями, в объектах будет куча полей. Все это хозяйство будет обрабатываться, согласно связям. Разумеется, на уровне 2-3 шейпов на листе можно было бы и мышкой, но не мой случай - у меня будет "сканер"...В принципе у меня это все уже есть в экселе, там именно сканер, смотрит структуру схемы, по ней строит таблицы что с чем и как соединено, далее это все обрабатывается и т.д. Хочется теперь это все сделать в нормальной среде рисования, ибо эксель - это было вынужденно и не слишком удобно...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 13:15 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

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


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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 13:35 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Что реально нарисовал в экселе схему с кучей автобусов соединенных тросами?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 13:36 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Нда...нифига не понял, как выдрать имя ((( попробовал потыкаться в Set a = ActiveWindow.Shape.Shapes("Sheet.97").Connects.Item(1).FromSheet
Но что с этим делать дальше - без понятия...где там имя...
Печально, опять как в сумерках человечества брожу ))) :wall:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 13:38 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Что реально нарисовал в экселе схему с кучей автобусов соединенных тросами?


Да, только вместо автобусов - реальные объекты, с которыми я работаю, и 4 типа связей между ними...Там все очень удобно в плане получения от чего и к чему стрелка идет, т.е. получить имя начального объекта и имя конечного - не вопрос...а тут для меня полный мрак...как-то уж очень сложно все реализовано в VISIO... :wall:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 14:21 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Я особо не пользуюсь коннекторами. Поиграл с кодом из ветки на которую давали ссылку, вроде всё ясно.
Ну ты крут, сделать такое в экселе!
Повторюсь: Визио не самый подходящий инструмент для твоих задач.

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 14:40 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Я особо не пользуюсь коннекторами. Поиграл с кодом из ветки на которую давали ссылку, вроде всё ясно.
Ну ты крут, сделать такое в экселе!
Повторюсь: Визио не самый подходящий инструмент для твоих задач.


К сожалению - самый...оптимальный...т.к. графический векторый редактор...а эксель - это лишь таблицы...Да и не так уж сложно там все делать...нарисовал схему, прога ее анализирует, формирует таблицы что с чем и как связано, потом делает расчетные листы для всех объектов и вставляет формулы, уже связанные между листами...У меня в работе это руками если делать - мрак и ошибки, а тут все в секунды...НО - это эксель и расчетные листы...Я же хочу сделать в визио, чтобы результаты расчетов были не в листах эксель, а прямо на шейпах в полях визуализированы - получится просто конфетка: собрал схемку, нажал кнопку, прога ее просмотрела, сделала все расчеты и результаты показала...типа - это автобус перегружен, а это еще примет пассажиров...

У меня не коннектор, а просто линия. Я ее цепляю к этим...точкам привязки и хочу узнать, что является ее началом и концом...


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

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

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

А при анализе соединений это без разницы.
С коннекторами важно понять, что есть такой объект "соединение". Как только коннектор к чему-то подключается, у него появляется этот объект. Подключится другим концом - появится второй.
Вот эти объекты Connects и нужно анализировать. Там есть свойства, от какого шейпа, к какому, от какой части шейпа, к какой и т.д.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Группированный шейп с полями
СообщениеДобавлено: 16 авг 2016, 15:42 
Не в сети
Просто PowerCat
Аватара пользователя

Зарегистрирован: 16 фев 2016, 10:11
Сообщений: 282
Использую Visio c: 2000
Очков репутации: 2

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

А при анализе соединений это без разницы.
С коннекторами важно понять, что есть такой объект "соединение". Как только коннектор к чему-то подключается, у него появляется этот объект. Подключится другим концом - появится второй.
Вот эти объекты Connects и нужно анализировать. Там есть свойства, от какого шейпа, к какому, от какой части шейпа, к какой и т.д.


Ну собственно это я и не понимаю как сделать ))) В примерах, к сожалению, не разобрался :(


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

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

Добавить очки репутацииУменьшить очки репутации
как-то делал для электрической схемы, состоящей из коннекторов или линий, соединенных друг с другом, проброс маркировок цепей (в виде текста над линией). просто брал первый отрезок, просматривал коллекции Connects/FromConnets, соответственно переходил через них на следующее соединение, проходил по всем коннекторам/линиям в цикле. так пронумеровывал все участки цепи.
тут ведь надо что-то подобное? проходить по схеме от объекта к объекту?
если да, тогда надо разбираться с тем что такое коллекции Connects/FromConnets. я в свое время просто посмотрел в самом визио через F1. вроде все было понятно.


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

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

Добавить очки репутацииУменьшить очки репутации
powercat писал(а):
Нда...нифига не понял, как выдрать имя ((( попробовал потыкаться в Set a = ActiveWindow.Shape.Shapes("Sheet.97").Connects.Item(1).FromSheet

а что здесь надо? какое имя? если имя первого в списке шейпа, к которому приклеен Sheet.97, то Connects(1).ToSheet.Name

коллекция Connects - соединения, которые создает сам шейп, например линия или коннектор, когда ты ими цепляешься к другому шейпу
коллекция FromConnects - соединения других шейпов к данному.
как-то так вкратце


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Может вот это поможет разобраться. Код не помню откуда. Точно не мой.


Вложения:
Connects.vsd [197 Кб]
Скачиваний: 106

_________________
GitHub
Yandex-диск с набором полезных утилит
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2, 3  След.

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



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

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


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

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