![]() |
Форум visio.getbb.ru |
О форумах
Библиотека | Частые вопросы | Литература | Склад материалов Visio Navigator | Blog | Полезные ссылки | О сайте История Visio | Продукты Visio |
Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
10.11.2021
27.03.2020
08.03.2020
15.01.2020
16.12.2019
17.11.2019
17.04.2014
03.02.2012
21.01.2011
24.06.2010
31.05.2010
22.07.2009
27.03.2009
25.09.2008
22.09.2008
14.06.2008
Фиксированный список в ShapeData и единицы измерения - ошибка конвертирования
Замечено, что в некоторых случаях Visio нежелательно конвертирует фиксированный список в ShapeData. Это происходит,если значение похоже на числовое значение с единицами измерения. Например, значения из списка Prop.fieldValue.Format="25P;13IN" конвертируются в "25 p", "13 in".
Варианты исправления ситуации: 1. В случаях, когда возможна угроза нежелательного конвертирования, использовать явно текстовый формат. Например, вместо "25P;13IN" использовать """25P"";""13IN""". Тогда в окне ShapeData вместо 25 p будет видно "25P". Если все-таки при чтении данных необходимо получить именно 25P, то использовать формулу =SUBSTITUTE(Prop.Row_1,Chr(34),"") или =MID(Prop.Row_1,2,LEN(Prop.Row_1)-2) В случае SUBSTITUTE предполагается, что сами значения не должны содержать кавычек. Иначе данные будут искажены. 2. Другой вариант - экранировать значения спецсимволом. Например знак "_" в конце значения или (по аналогии с Excel) знак апострофа в начале значения. То есть "25P_;13IN_" или "'25P;'13IN". Соответственно удаление экранирующего символа производить формулой
=SUBSTITUTE(Prop.Row_1,"_","") или =IF(RIGHT(Prop.Row_1,1)="_",LEFT(Prop.Row_1,LEN(Prop.Row_1)-1),Prop.Row_1) или =IF(LEFT(Prop.Row_1,1)="'",RIGHT(Prop.Row_1,LEN(Prop.Row_1)-1),Prop.Row_1)
источник: http://visguy.com/vgforum/index.php?topic=8634.msg37648
Как вычислить факт подключения динамического коннектора
Я пытаюсь заставить динамический коннектор показывать другой цвет, если он не подключен к шейпам обоими концами. Насколько я могу судить, единственное, что изменяется при соединении - это то, что в ячейках BeginX, EndX литеральные значения изменяются на функции. Существует ли функция, которую можно использовать, чтобы отличить функцию от литерала (или есть какой-либо другой способ)?
Можно использовать EndTrigger/BeginTrigger в секции GlueInfo.
LineColor=IF(BegTrigger+EndTrigger>=3,2,0)
Да, вроде бы это работает. Но мой Visio показывает _XFTrigger(Connector!EventXFMod) или _XFTRIGGER(Sheet.17!EventXFMod). Получается, что это как-то превращается в 1/2?
То, что вы видите - это формулы. Щелкните правой кнопкой на ячейке и выберите "show values". Или нажмите F5 для переключения формула/значение.
Как задать фиксированное расстояние Connection points на коннекторе
Я пытаюсь сделать смарт-шейп, который автоматически корректируется в зависимости от данных, поступающих из БД. Одна из последних задач - сделать на коннекторе две точки соединения, чтобы одна была на 10 мм от начала коннектора, а вторая - на 10 мм от конца. Проблема в том, что точки соединения не остаются на коннекторе или нарушается расстояние.
Если у вас Visio 2010 или старше, можно использовать функцию pointalongpath. Только нужна небольшая добавка, потому что эта функция принимает процент от пути, а не абсолютное расстояние. Поэтому нужно 10 мм преобразовать в процент.
User.Pathlength = Guard(PathLength(Geometry1.Path)+0 mm) User.Percentile = Guard(10 mm/User.Pathlength) Connections.Port1 X = Guard(Pointalongpath(Geometry1.Path,User.Percentile)) Connections.Port1 Y = Guard(Pointalongpath(Geometry1.Path,User.Percentile)) Connections.Port2 X = Guard(Pointalongpath(Geometry1.Path,1-User.Percentile)) Connections.Port2 Y = Guard(Pointalongpath(Geometry1.Path,1-User.Percentile))
Источник - http://visguy.com/vgforum/index.php?topic=8717