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

Форум по вопросам применения и программирования в Visio
Текущее время: 13 дек 2018, 16:50

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 01 июн 2016, 17:45 
Программно добавляю стрелку(коннектор) на диаграмму, затем добавляю в цикле строки "LineTo" и записываю данные в ячейки X и Y.
При открытии диаграммы значения в ячейках совсем не такие какими должны быть.
Подскажите в чём ошибка
Код:
                            for (int i = 15; i < shapeData.Length; i += 2)
                            {
                                shape.AddRow((short)VisSectionIndices.visSectionFirstComponent, (short)VisRowIndices.visRowLast, (short)VisRowTags.visTagLineTo);

                                cell = shape.CellsSRC[(short)VisSectionIndices.visSectionFirstComponent, (short)VisRowIndices.visRowLast, (short)VisCellIndices.visX];

                                cell.Formula = shapeData[i];

                                cell = shape.CellsSRC[(short)VisSectionIndices.visSectionFirstComponent, (short)VisRowIndices.visRowLast, (short)VisCellIndices.visY];
                                cell.Formula = shapeData[i + 1];
                            }


Последний раз редактировалось Surrogate 03 июн 2016, 16:10, всего редактировалось 1 раз.
Название темы изменено, на более подходящее по смыслу


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 01 июн 2016, 18:00 
Да, если можно, то напишите рабочий пример как это действие должно выглядеть.
Хоть код и на шарпе, vba тоже подойдёт.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 01 июн 2016, 18:31 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Bill17 писал(а):
Программно добавляю стрелку(коннектор) на диаграмму
коннектор - в смысле динамический коннектор ?
Bill17 писал(а):
При открытии диаграммы значения в ячейках совсем не такие какими должны быть.
и в чем это заключается ?
ss87 в сообщении #1799 писал(а):
Вот обычная ломаная линия, строится из массива (одномерный)
было из этой серии


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 08:59 
Да, динамический коннектор.
Заключается в том, что значения x и y абсоютно не такие. То есть отличаются цифры, иногда знаки.
Цитата:
было из этой серии
Не совсем то, это рисование линии, а мне надо вставлять строки в имеющуюся линию.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 11:11 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Bill17 писал(а):
Да, динамический коннектор.
Заключается в том, что значения x и y абсоютно не такие. То есть отличаются цифры, иногда знаки.
Surrogate в сообщении #5927 писал(а):
коннектор это вещь в себе, поведение которой описывается неким аддоном визио. как он работает, знают только разработчики MS.
меня там поправили, что коннектор это элемент ядра визио. но суть от этого не меняется!
ты можешь сколько угодно дорисовывать к нему дополнительных участков, а ядро их изменяет по какому-то своему фирменному алгоритму!
nbelyh в сообщении #7629 писал(а):
Обрати внимание, что она фиксированная будет.
Если уберешь фиксированность, то Visio ее может перестроить по своему усмотрению.
поэтому не удивляйся, что x,y будут не те


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 11:16 
Хм, а вот это интересно. А можно запретить визио трогать мою геометрию?
Я уже выставляю какой-то запрет, но не знаю работает ли, в геометрии в итоге совпадает только конечная точка.
Код:
shape.CellsSRC[
                                (short)Visio.VisSectionIndices.visSectionObject,
                                (short)Visio.VisRowIndices.visRowShapeLayout,
                                (short)Visio.VisCellIndices.visSLOConFixedCode
                            ].FormulaU = "2";

Я знаю, что как-то можно выставить геометрию как хочется, но пока не понимаю как такое сделать.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 12:29 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Bill17 писал(а):
Я знаю, что как-то можно выставить геометрию как хочется
на чем основана такая уверенность ?


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


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


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 13:08 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Bill17 писал(а):
что знакомый так делал, но у него не спросить, к сожалению.
печально!
Bill17 писал(а):
Похоже разобрался в причине этой ерунды, почему-то значения не сохраняются в свойствах шейпа.
какие значения, какие свойства ?
Bill17 писал(а):
Защиту полностью снял, руками в файле проставляется, ячейка точно существует, в чём ещё может быть причина?
а точно суслик есть ?
Surrogate в сообщении #5567 писал(а):
Цитата:
Ты суслика видишь?
— Нет.
И я нет. А он есть!

похоже в этом вся глубина глубин©®


цитата из фильма «ДМБ»©®


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 13:29 
В общем проблема в том, что в ячейку не могу записать никакое значение. Ячейка точно существует, ибо получить значение из неё я могу.
То есть cell.FormulaU = "1" я пишу, тут же проверяю, а в ячейке ничего не лежит.
Защиту снял, при попытке ставить значения в FormulaForceU выпадает исключение, дословно: "Возникло исключение"
Есть какие-нибудь идеи?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 13:41 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Bill17 писал(а):
Ячейка точно существует
какая конкретно ячейка ?
Bill17 писал(а):
Защиту снял, при попытке ставить значения в FormulaForceU выпадает исключение, дословно: "Возникло исключение"
Рубен Вартанович Хачикян писал(а):
Валик-джан, я тебе один умный вещь скажу, но только ты не обижайся!

я так думаю!

цитата из фильма «Мимино»©®
я так думаю: т.к. управляет поведением коннектора само ядро визио, возможно писать в нее может только оно.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 14:01 
Ну ячейка с координатой x или y.

Не, руками же можно выставить любые значения, значит не только ядро может туда значения писать.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 14:08 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Bill17 писал(а):
Ну ячейка с координатой x или y.
какая ячейка ? секция Geometry или PinX ?
Bill17 писал(а):
руками же можно выставить любые значения, значит не только ядро может туда значения писать.
когда ты мышкой двигаешь что-то, разве не ядро визио интерпретирует эти телодвижения и записывает новые значения в shapesheet фигуры ?!?!? или я что-то не понимаю в этой жизни :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 14:13 
секция Geometry.

Само собой если двигать мышкой, то ядро само обсчитывает координаты и заносит в ячейки. Но их можно и самому задавать, в этом случае ядро будет по ним геометрию обсчитывать. То есть можно туда значения заносить, а ядро должно их обсчитать корректно, но у меня не получилось пока.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 14:56 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
И я не могу значение занести в FormulaU

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


Вложения:
w1.gif
w1.gif [ 51.36 Кб | Просмотров: 601 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 15:43 
Не в сети
Ветеран

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

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


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

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

Ну я добавляют строки сам и лишних строк у меня нету, поэтому на это я не жалуюсь. Жалуюсь на то, что координаты неверные.

Цитата:
.Formula вроде как принимает строковое значение. если ты пишешь в ячейку числа, то они должны быть в дюймах и писаться через .ResultIU

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


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 02 июн 2016, 18:29 
Не в сети
Administrator

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

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

Скорее всего он добавляет ее далеко не всегда, а только в определенных случаях. Наверное и разбирать надо именно какой-то конкретный случай.
А если не конкретно, то есть следующие предположения...
1. Visio должен пытаться сделать непротиворечивыми две секции: ту, где заданы координаты начала и конца, и последовательность шагов по секции геометрии. Если он увидит, что геометрия пришла не туда, то будет либо добавлять строки, либо корректировать какое-то значение (наверно последнее).
2. Пока работает макрос или другая программа, Visio не может заняться своим анализом. (Если ему не отдать управление специально). Но если программу (например, макрос) выполнять пошагово, то он получит возможность встрять на любом шаге. То есть гладкое и пошаговое выполнение могут дать разные результаты.
Таким образом, если так рассчитать геометрию, что последний шаг остановится в точке EndX, EndY, и заполнить всю геометрию единым скриптом без разрывов, то Visio скорее всего будет доволен и не станет ничего добавлять :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Неправильное значение координат у динамического коннектора
СообщениеДобавлено: 03 июн 2016, 09:50 
Tumanov писал(а):
Цитата:
Так, после последних изменений у меня ошибка только с координатой X. Визио добавляет какую-то константу фиксированную к иксу.

Скорее всего он добавляет ее далеко не всегда, а только в определенных случаях. Наверное и разбирать надо именно какой-то конкретный случай.
А если не конкретно, то есть следующие предположения...
1. Visio должен пытаться сделать непротиворечивыми две секции: ту, где заданы координаты начала и конца, и последовательность шагов по секции геометрии. Если он увидит, что геометрия пришла не туда, то будет либо добавлять строки, либо корректировать какое-то значение (наверно последнее).
2. Пока работает макрос или другая программа, Visio не может заняться своим анализом. (Если ему не отдать управление специально). Но если программу (например, макрос) выполнять пошагово, то он получит возможность встрять на любом шаге. То есть гладкое и пошаговое выполнение могут дать разные результаты.
Таким образом, если так рассчитать геометрию, что последний шаг остановится в точке EndX, EndY, и заполнить всю геометрию единым скриптом без разрывов, то Visio скорее всего будет доволен и не станет ничего добавлять :)

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


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

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



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

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


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

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