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

Форум по вопросам применения и программирования в Visio
Текущее время: 27 фев 2021, 03:57

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос по слоям в ShapeSheet
СообщениеДобавлено: 27 янв 2021, 21:56 
Не в сети

Зарегистрирован: 30 окт 2020, 01:46
Сообщений: 10
Использую Visio c: 2003
Уровнь квалификации: чуть выше базового
Очков репутации: 0

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

Если фигуре назначить слои через контекстное меню (Формат => Слой...), то в ShapeSheet в разделе Layer Membership отображается лишь его номер, который присваивается слою на каждой странице документа (то есть даже на разных страницах одного документа один и тот же слой может иметь разные номера), а никак не название. Где хранится название слоя фигуры, я так и не нашёл.

В Layer Membership пробовал написать формулу типа "IF(prop.xxx=yyy,"слой1","слой2")". Результат этой формулы в виде "слой1" или "слой2" в итоге отображается в Layer Membership, однако на принадлежность фигуры к указанному слою это никак не влияет.

Единственный вариант, который приходит на ум, сводится к созданию формулы "setf("ThePage!Layers.Name".......)" в EventDrop, которая бы создавала на странице список слоёв с определённой нумерацией (тем самым за каждым слоем будет закреплён его постоянный индекс), и далее формула в Layer Membership выдавала бы значения в виде индексов слоёв, которые, в отличие от названий, обрабатываются корректно. Но тогда эту "операцию Ы" придётся провернуть со всеми элементами. Наверняка есть более изящный путь. Может, кто-то знает его?

P.S. Используется Visio 2007, если это важно в данном случае.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вопрос по слоям в ShapeSheet
СообщениеДобавлено: 28 янв 2021, 01:52 
Не в сети
Глав-тролль
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4116
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Expodroid писал(а):
в ShapeSheet в разделе Layer Membership отображается лишь его номер, который присваивается слою на каждой странице документа (то есть даже на разных страницах одного документа один и тот же слой может иметь разные номера), а никак не название.
Номера соответствуют порядку добавления слоев на странице.
Expodroid писал(а):
Наверняка есть более изящный путь. Может, кто-то знает его?
я тоже не нашел, думаю в ShapeSheet это невозможно сделать изящно. я в свое время делал что-то похожее, на ваш метод MS Visio: Назначить фигуру слою, в соответствии со значением выбранным в ShapeData используя только ShapeSheet. Работает в версиях до 2013.
в ShapeSheet нигде это в явном виде не хранится: программно можно сделать, предварительно получив список слоев на странице.
Дополнено позднее: вспомнил !
Surrogate в сообщении #15497 писал(а):
Изображение
можно попробовать формулу типа ThePage!Layers.Name[2].
число в квадратных скобках это порядковый номер слоя, если слой первый то формула будет короче ThePage!Layers.Name

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вопрос по слоям в ShapeSheet
СообщениеДобавлено: 28 янв 2021, 22:04 
Не в сети

Зарегистрирован: 30 окт 2020, 01:46
Сообщений: 10
Использую Visio c: 2003
Уровнь квалификации: чуть выше базового
Очков репутации: 0

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

Но ведь где-то всё-таки хранится. Причём в недрах самой фигуры. Когда в совершенно новый документ выносится фигура, у слоя уже есть название, которому присваивается номер! Да и в редактировании фигуры в наборе элементов слои тоже можно редактировать... И ведь не просто так сделали в ShapeSheet раздел "Layer Membership", дав возможность туда вписывать формулы.

Surrogate писал(а):
я в свое время делал что-то похожее, на ваш метод MS Visio: Назначить фигуру слою, в соответствии со значением выбранным в ShapeData используя только ShapeSheet. Работает в версиях до 2013.

А после 2013 не работает? Или там появился какой-то толковый инструмент для этих целей на замену этим костылям?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вопрос по слоям в ShapeSheet
СообщениеДобавлено: 29 янв 2021, 00:39 
Не в сети
Глав-тролль
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4116
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Expodroid писал(а):
Причём в недрах самой фигуры
нет, в недрах страницы: обратите внимание на префикс ThePage!Layers.Name[2]!
Expodroid писал(а):
Или там появился какой-то толковый инструмент для этих целей на замену этим костылям?
в целом наоборот
nbelyh в сообщении #3637 писал(а):
Движок старый (который еще в VISIO сделан был) жалко. Новый медленнее, особенно если массу операций делаешь.
А все ради чего - ради поддержки свистелок (ну, эффектов PowerPoint) типа этого..
IMHO начиная с этой версии визио начал терять статус толкового инструмента :wall:
Expodroid писал(а):
А после 2013 не работает?
до этой версии новые фигуры, а также слои получали порядковые номера так
Surrogate в сообщении #4738 писал(а):
Система нумерует шейпы по мере их появления на листе. Если в текущей сессии имеется N шейпов, например удаляется некоторое количество шейпов. то если после этого начать добавлять шейпы, то они будут получают ID из освободившегося диапазона по порядку. После завершения свободных ID, последующие номера будут N+1, N+2 и т.д.
если вы удалите фигуру или слой, а потом начнете добавлять новые. то новые фигуры займут "освободившиеся" порядковые номера
Изображение
в 2013 и далее после удаления и последующего добавления фигуры или слои будут получать новые, не используемые ранее номера! таким образом номера удаленных фигур/слоев останутся пропущеннными. так вот после удаления слоев, те мои костыли переставали работать ! :wall:

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


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

Зарегистрирован: 30 окт 2020, 01:46
Сообщений: 10
Использую Visio c: 2003
Уровнь квалификации: чуть выше базового
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
нет, в недрах страницы: обратите внимание на префикс ThePage!Layers.Name[2]!

Как же тогда объяснить тот факт, что, вытянув элемент на новый документ, в котором ещё нет никаких слоёв и который знать не знает, как там могут называться нужные мне слои, у слоёв появляются не только номера, но и названия?

Попутно возник ещё один вопрос: добавив через описанные в самом начале костыли список слоёв с их определённой нумерацией, возможно ли где-то что-то отметить, прописать и т.п., чтобы раздел Layers автоматически появлялся и на всех вновь созданных страницах этого же документа?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вопрос по слоям в ShapeSheet
СообщениеДобавлено: 29 янв 2021, 02:15 
Не в сети
Глав-тролль
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 4116
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
Expodroid писал(а):
Как же тогда объяснить тот факт, что, вытянув элемент на новый документ, в котором ещё нет никаких слоёв и который знать не знает, как там могут называться нужные мне слои, у слоёв появляются не только номера, но и названия?
при копировании фигуры относящейся к слою/слоям в новый документ (в одной из ячеек есть упоминание о принадлежности к слою, ядро визио добавляет на СТРАНИЦУ слои к которым относится добавляемая фигура.
не только лишь слои переносятся в новый документ при перетаскивании фигуры в новый документ. но и пользовательские свойства (user-defined cells), на этом построен обмен данными (описано в этой ветке)
Expodroid писал(а):
возможно ли где-то что-то отметить, прописать и т.п., чтобы раздел Layers автоматически появлялся и на всех вновь созданных страницах этого же документа?
этот раздел будет добавляться ТОЛЬКО на страницы куда добавляется фмгура, а не на все страницы документа...

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


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

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



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

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


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

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