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

Форум по вопросам применения и программирования в Visio
Текущее время: 18 окт 2018, 19:37

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 23 янв 2015, 17:38 
Не в сети
Новичок

Зарегистрирован: 21 май 2014, 11:11
Сообщений: 45
Использую Visio c: 2005
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
День добрый уважаемые форумчане!

Есть линейный объект. К нему есть подпись и маркер (Controls) задающий положение подписи. Мне необходимо привязать перемещение маркера к контуру линейного объекта, нужным мне образом работает функция POINTALONGPATH(<Фигура>,<Смещение от 0 до 1>), но как использовать маркер для указания того самого положения!? Желательно при этом координаты этого самого маркера привязать к самому контуру фигуры ... чтобы он двигался как ползунок на регуляторе (не забываем, что фигура не обязательно прямолинейная)

Заранее всем спасибо!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 24 янв 2015, 15:33 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
До меня не дошло, что от чего зависит.
1. В зависимости от некоторого числа устанавливается положение маркера, а затем и надписи?
2. Или наоборот - мышкой тянется маркер-ползунок и нужно, чтобы он шел по нужной кривой?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 26 янв 2015, 14:36 
Не в сети
Новичок

Зарегистрирован: 21 май 2014, 11:11
Сообщений: 45
Использую Visio c: 2005
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Второй вариант в точку на 100%. Тянем за маркер, но он тянется не в любую сторону а только вдоль кривой.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 03 фев 2015, 15:43 
Не в сети
Новичок

Зарегистрирован: 21 май 2014, 11:11
Сообщений: 45
Использую Visio c: 2005
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Нет идей как это можно реализовать? Не обязательно готовое решение, достаточно идеи как это сделать.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 03 фев 2015, 16:33 
Не в сети
Ветеран

Зарегистрирован: 06 май 2013, 13:01
Сообщений: 746
Откуда: Россия
Использую Visio c: 2013
Очков репутации: 18

Добавить очки репутацииУменьшить очки репутации
У меня есть 2 идеи, что можно сделать:
1. Пересчитывать координаты маркера в координаты на линии (проекция) и использовать их.
2. Разрешить движение только по одной из осей, а вторую задать формулой.
А способа сказать маркеру двигаться только по конкретной линии я не видел.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 03 фев 2015, 20:16 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Нет идей как это можно реализовать? Не обязательно готовое решение, достаточно идеи как это сделать.

Немного поломал голову, но результата нет :(
Для прямой делается достаточно легко. Для кривых видно (пока) только громоздкий вариант - в параллель Visio рассчитывать зависимость Y от X. В принципе, это наверное решаемо, но как-то совсем не хочется.
Может быть со временем проклюнется что-то еще...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 03 фев 2015, 22:04 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 591
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
Привет.
Можно попробовать так. см. аттачмент (вроде работает)!

Что происходит:
1. На измение control point срабатывает User.SetPos (из-за DEPENDSON) -> в ячейку User.Pos записывается текущая ближайшая точка вдоль пути
2. На изменение этой позиции (опять же из-за DEPENDSON) срабатывают User.SetX и User.SetY, которые переписывают позицию control point

Угол текста задается через ANGLEALONGPATH(User.Pos)


Вложения:
2-3-2015 6-59-11 PM.png
2-3-2015 6-59-11 PM.png [ 32.06 Кб | Просмотров: 1821 ]
test.gif
test.gif [ 24.33 Кб | Просмотров: 1834 ]
Drawing1.vsd [17 Кб]
Скачиваний: 104

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 05 фев 2015, 10:37 
Не в сети
Новичок

Зарегистрирован: 21 май 2014, 11:11
Сообщений: 45
Использую Visio c: 2005
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
Привет.
Можно попробовать так. см. аттачмент (вроде работает)!


Примного благодарен! Теперь работа с маркерами стала гораздо удобней.

P.S.
Может кто-то знает как сделать позиционирование меню "Action Tags", зависимым от масштаба страницы?
У меня пока получается, что при уменьшении масштаба иконка "Action Tags" перекрывает фигуру и маркеры и с ней ничего не сделать. Приходиться приближать, брать за маркер и отдалять. Иллюстрация во вложении. Хотелось бы добиться фиксированного расстояния (в пикселях) от иконки до маркера при всех масштабах.


Вложения:
Sample.png
Sample.png [ 5.38 Кб | Просмотров: 1848 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 05 фев 2015, 14:19 
Не в сети
Новичок

Зарегистрирован: 21 май 2014, 11:11
Сообщений: 45
Использую Visio c: 2005
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
У меня в документе используется единица измерения миллиметры, а в примере дюймы. Подозреваю, что одна из функций работает только с дюймами, так как при повторном присвоении значения ячейке у меня маркер скачет между двумя положениями (нажали два раза Enter на ячейке в ShapeShet и маркер переместился, еще раз нажали - вернулся обратно)
Перерыл весь хелп но не смог найти явного упоминания в каких единицах параметры и результат в используемых функциях ... хотя может я не совсем верно перенес формулы!? ... я не использую раздел User& а все разместил в Scratch.

И еще один момент: если маркер стоит в начале или в конце линии, то перемещение маркера за пределы фигуры соответственно не обновляет "Pos" и маркер благополучно вылетает за пределы линии. Для меня это не критично, но хочется красивого решения

И спасибо всем откликнувшимся :) !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 06 фев 2015, 12:22 
Не в сети
Новичок

Зарегистрирован: 21 май 2014, 11:11
Сообщений: 45
Использую Visio c: 2005
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Не хватает моих познаний в Visio чтобы понять почему предложенный уважаемым "nbelyh" способ периодически не работает. Что в какой последовательности происходит понятно, формулы понятны, а результат непредсказуем. Маркеры, то выходят за границы фигуры, то вовсе зависимость формул рушится (будто dependson не прописан), и все это происходит без единого вмешательства в ShapeSheet - достаточно просто подольше потягать маркер туда-сюда, нет-нет да и произойдет какой ни будь глюк.

Пока сделал реализацию через смесь ShapeSheet и VBA:
В секцию Scratch в строку 8 в ячейки X Y A записал следующие формулы:
Код:
=POINTALONGPATH(Geometry1.Path,Scratch.A8)
=POINTALONGPATH(Geometry1.Path,Scratch.A8)
=NEARESTPOINTONPATH(Geometry1.Path,Controls.Label1,Controls.Label1.Y)

и соответственно в коде документа обработчик:
Код:
Public WithEvents MyPage As Visio.Page
Public WithEvents MyApplication As Visio.Application

' Для связи между обработчиками
Private Sub Document_DocumentOpened(ByVal Doc As IVDocument)
    Set MyApplication = Application
End Sub

' Для связи между обработчиками
Private Sub MyApplication_ViewChanged(ByVal Window As IVWindow)
    Set MyPage = ActivePage
End Sub

' Непосредственно наш обработчик
Private Sub MyPage_CellChanged(ByVal Cell As IVCell)
    Dim X, XOld As Cell
    Dim Y, YOld As Cell
    If Cell.Name = "Controls.Label1" Or Cell.Name = "Scratch.X8" Then
        Set XOld = Cell.Shape.CellsSRC(visSectionControls, Cell.Shape.CellsRowIndexU("Controls.Label1.X"), visX)
        Set X = Cell.Shape.CellsSRC(visSectionScratch, Cell.Shape.CellsRowIndexU("Scratch.X8"), visScratchX)
        If XOld.FormulaU <> X.FormulaU Then
            XOld.FormulaForceU = X.FormulaU
        End If
    End If
    If Cell.Name = "Controls.Label1.Y" Or Cell.Name = "Scratch.Y8" Then
        Set YOld = Cell.Shape.CellsSRC(visSectionControls, Cell.Shape.CellsRowIndexU("Controls.Label1.Y"), visY)
        Set Y = Cell.Shape.CellsSRC(visSectionScratch, Cell.Shape.CellsRowIndexU("Scratch.Y8"), visScratchY)
        If YOld.FormulaU <> Y.FormulaU Then
            YOld.FormulaForceU = Y.FormulaU
        End If
    End If
End Sub


Меня такой вариант вполне устраивает, так как кода у меня и без того полно и убиваться для избавления от него смысла нет. В дополнение, в будущем планирую в контекстное меню добавить команды для выравнивания меток по горизонтальной или вертикальной линии, а так же возможность точного позиционирования в виде указания расстояния от края в мм (но это потом).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 06 фев 2015, 13:01 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 591
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
Похоже что дело в том как оно зависимости пересчитывает - надо чтобы одновременно X и Y пересчитывало, похоже что это сейчас не так (или не всегда так?).
У тебя есть какой-нибудь файлик где этот глюк с левым позиционированием стабильно воспроизводится?

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 06 фев 2015, 15:19 
Не в сети
Новичок

Зарегистрирован: 21 май 2014, 11:11
Сообщений: 45
Использую Visio c: 2005
Очков репутации: 3

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 06 фев 2015, 23:14 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 591
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
Я запощу вопрос на visguy. Может что предложат.

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 07 фев 2015, 03:18 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 591
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
Упрощенная версия (по совету visguy)!

Просто проставляются координаты надписи, control point обратно не снапится. Вроде все просто тогда получается и работать должно быстро и надежно.


Вложения:
Drawing1.vsd [24 Кб]
Скачиваний: 100

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 07 фев 2015, 13:04 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Типа, "простенько и со вкусом"...
Красиво.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 07 фев 2015, 15:01 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
:(
Однако, кажется и здесь есть проблемы.
Шейп получается каким-то не очень копируемым. Возможно потому, что это не просто шейп, а еще и динамический коннектор.
Ячейки TxtPinX, TxtPinY при копировании вместо формул принимают значения, поэтому поведение дубля становится не таким, как у эталона.
(Обнаружено в Visio 2013).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 07 фев 2015, 15:47 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 591
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
Достаточно просто GUARD() на TxtPinX, TxtPinY поставить. Пофиксил.


Вложения:
Drawing1 (1).vsd [24 Кб]
Скачиваний: 111

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 08 фев 2015, 14:45 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 591
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
Топик тут кстати:
http://visguy.com/vgforum/index.php?topic=6279

Там еще один импрувмент сделали: чтобы маркер не дергался, а двигался плавно, можно выключить Misc.LiveDynamics.

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Движение маркера(Controls) вдоль кривой/пути
СообщениеДобавлено: 09 фев 2015, 19:06 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 591
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100603

Добавить очки репутацииУменьшить очки репутации
Еще одно улучшение (там же). Чтобы не сбрасывалось непонятно как (из-за зависимостей), можно пользовать черную магию вроде SETATREEXPR() и типа того.
Вроде в последней версии http://visguy.com/vgforum/index.php?top ... 5#msg25745 все красиво, и маркер ползает точно по кривой.

_________________
Инструменты для облегчения создания диаграмм, и статьи по Visio:
http://unmanagedvisio.com/


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

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



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

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


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

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