Форум пользователей Visio
http://visio.getbb.ru/

в группе фигур отключать видимой одной определенной фигуры
http://visio.getbb.ru/viewtopic.php?f=5&t=1277
Страница 1 из 2

Автор:  vtreg [ 19 янв 2018, 00:40 ]
Заголовок сообщения:  в группе фигур отключать видимой одной определенной фигуры

у меня вот такой вопрос. Я сгрупировал фигуру состояющую из многих фигур.
В свойствах сгрупированной фигуры соствавил список и при выборе определенного значения из списка должна отключатся одна определенная фируга из группы (Geometry1.NoShow).

Есть ли возможность это реализовать без макросов? Внутри свойств одной фигуры это просто, а в вот в группе фигур не могу сообразить возможно ли это.

Спасибо!

Автор:  Tumanov [ 19 янв 2018, 01:25 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Почти так же, но ссылка должна идти наверх, к шейпу-группе. Типа так:
Sheet.ID!CellName
где Sheet.ID - родительская группа.

Автор:  Гость [ 20 янв 2018, 18:51 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

спасибо за ответ, но у меня не получается внести такую формулу в ячейку Geometry1.NoShow.
может опишите более подробно, что то я не мойти дойти до решения

фирура из группы по умолчанию имеет слудущую установку
Geometry1.NoShow = FALSE

группа фигур имеет список
Prop.FigureWahl, Format = "фигура1;фигура2;фигура3"

как отлючить видимость фигуры 1 если выбрали в списке "фигура1"?

Автор:  Shishok [ 20 янв 2018, 19:38 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Как то так:

(Sheet.10 это имя группы)

Так у меня почему то не работает, хотя должно.
Prop.FigureWahl, Format = "фигура1;фигура2;фигура3" - это в ячейке группы
Geometry1.NoShow = IF(Sheet.10!Prop.FigureWahl="фигура1",TRUE,FALSE) - это в ячейке субфигуры

А вот так работает.
Prop.FigureWahl, Format = 1;2;3 - это в ячейке группы
Geometry1.NoShow = IF(Sheet.10!Prop.FigureWahl=1,TRUE,FALSE) - это в ячейке субфигуры

Автор:  Tumanov [ 20 янв 2018, 20:19 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Для строк сравнение немного не так делается.
=IF(STRSAME(Sheet.10!Prop.FigureWahl,"фигура1"),TRUE,FALSE)

Автор:  Shishok [ 20 янв 2018, 21:24 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Да, забыл про это функцию.
Тогда еще проще:
Geometry1.NoShow = STRSAME(Sheet.10!Prop.FigureWahl,"фигура1") - это в ячейке субфигуры

Автор:  Гость [ 21 янв 2018, 00:28 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Все гениальное просто! Спасибо огромное! Работает!

Автор:  vtreg [ 12 фев 2018, 01:39 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

добрый вечер,
у меня возникла проблема с более сложными фигурами.
Я ставлю свойство Geometry1.NoShow = TRUE, но фигура (точнение группированные фигуры) остаются видимыми.
Почему это может происходить? Как сделать чтобы фигура становилась невидимой?

Автор:  Shishok [ 12 фев 2018, 09:18 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Пример нужон.

Автор:  vtreg [ 13 фев 2018, 01:15 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

вот я загрузил пример на GoogleDrive:
https://drive.google.com/open?id=1brOjlviE9FaKtpsYhr7ts9xB96inlxIa

В этом примере есть простая группа фигур: круг, прямоугольник и триугольник. В свойствах группы можно выбирать фигуру которая становится невидимой. Работает благодоря советам выше на отлично.

Вторая фигура состоит из трех групп фигур, которые также в зависимости от выбора: Typ1 и Typ2 должны становится невидимыми. Но к сожалению это не работает для меня непонятным причинам. Пытался без успешно найти ответ также в интернете. В общем без помощи профессионала по-моему тут не обойтись. Спасибо заранее!

Автор:  Shishok [ 13 фев 2018, 09:24 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

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

Автор:  Tumanov [ 13 фев 2018, 10:28 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Цитата:
Вторая фигура состоит из трех групп фигур

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

Автор:  Гость [ 13 фев 2018, 12:38 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

спасибо за ответ! вторая фигура имела еще больше групп, которые я удалил. Идея выключать слои подходит мне, я начал со слоев потому-то не знал что можно через shape data выключать видимость.
Теперь конечно напрашивается слудующий вопрос: как влючать/выключать видимость слоя через свойства фигуры?
Идеально было бы это делать без макросов. Если ли решение также к этой задаче?

Автор:  Shishok [ 13 фев 2018, 13:12 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Вставить в шейп раздел Actions.
В ячейке Action прописать:
=SETF( GETREF(ThePage!Layers.Visible[5]), 0)
Число 5 для примера. Нужно вписать свое. Порядковый номер слоя на странице.

В ячейке Menu:
="Отключить слой Х"

Автор:  Tumanov [ 13 фев 2018, 13:23 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Цитата:
Число 5 для примера. Нужно вписать свое. Порядковый номер слоя на странице.

Вот это, к сожалению, не такой простой элемент. Должна быть гарантия, что слои будут именно таким и расположены именно в таком порядке.
Поэтому я рекомендовал бы рассмотреть также метод "сжатия в точку".
Суть метода в том, что, установив Width и Height группы в 0, мы практически делаем ее невидимой. Это, конечно, подходит не для всех групп, но в данном случае скорее всего будет работать.
И формулы проще. В Width будет If, который в зависимости от условия подставит либо 0, либо реальный размер. Чуть сложнее, чем в примере с геометрией.

Автор:  vtreg [ 14 фев 2018, 00:37 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

вот выложил мой пример в рекомендуемом формаете
https://drive.google.com/open?id=1-gF9Eg3Q_bpyRuh1z2nhsowizalR3SyB

в общем я итегрировал метод сжимания до точки, работает отлично но с один "но". При сжатии второй группы состоящей также из кругов остается видна одна линия, от которой я никак не смог избавится.

Так как в моем проекте будет много сложных групп, то наверное этот метот не совсем идеально будет работать.

Метод со слоями тоже подходит. Единственное я не понял как работает эта формула.
=SETF(GetRef(ThePage!Layers.Visible[5]),0)

Я включил раздел Actions и ввел ее в ячейку Action. Сделал в Shape Data выбор: fest или gleitend. И хотелось бы, если было выбрано "fest" то отключается слой #4, если иначе то слой #5. Как правильно это сделать? Спасибо огромное заранее!

Автор:  Shishok [ 14 фев 2018, 09:51 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Ну во первых. Где ты смотришь порядковые номера слоев?

Автор:  Shishok [ 14 фев 2018, 10:01 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Порядковые номера слоев надо смотреть именно в shapesheet страницы.
В ячейку Menu(в секции Actions) напиши что нибудь! Например "Переключение слоев".
Вот тебе формула для ячейки Action:
=SETF(GetRef(ThePage!Layers.Visible[4]),1)+SETF(GetRef(ThePage!Layers.Visible[5]),1)+IF(STRSAME(Prop.Rohrboden,"fest",TRUE),SETF(GetRef(ThePage!Layers.Visible[4]),0),SETF(GetRef(ThePage!Layers.Visible[5]),0))
Сначала выбираешь значение Тип дна, потом запускаешь свое меню - "Переключение слоев".
Ну как то так. :)

Автор:  Shishok [ 14 фев 2018, 10:17 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

Как писал выше Туманов, структуру слоев менять нельзя. Как минимум с 1 по 5. Новые добавлять можно.
Ну и можно добавить еще строку Actions:
Menu = "Включить все слои"
Action = SETF(GetRef(ThePage!Layers.Visible[4]),1)+SETF(GetRef(ThePage!Layers.Visible[5]),1)
Можно добавить и другие слои для включения, по тому же принципу.

Автор:  Shishok [ 14 фев 2018, 11:35 ]
Заголовок сообщения:  Re: в группе фигур отключать видимой одной определенной фигуры

А слои вроде надо переключать 5 и 9. Ну это сам поправишь.
Если хочешь чтобы слои переключались при изменении Типа дна, то:
В ячейке User.Row_3(или User.Row_4) измени формулу на:
=IF(STRSAME(Prop.Rohrboden,"fest"),1,0)+SETF(GetRef(ThePage!Layers.Visible[4]),1)+SETF(GetRef(ThePage!Layers.Visible[5]),1)+IF(STRSAME(Prop.Rohrboden,"fest",TRUE),SETF(GetRef(ThePage!Layers.Visible[4]),0),SETF(GetRef(ThePage!Layers.Visible[5]),0))

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/