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

Форум по вопросам применения и программирования в Visio
Текущее время: 24 май 2017, 06:15

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Запретить концу стрелки сдвигаться при GlueToPos
СообщениеДобавлено: 10 ноя 2016, 17:38 
Бросаю на диаграмму несколько динамических коннекторов и склеиваю их между собой.
При склейке двух коннекторов конец одного из них сдвигается. Можно ли как-то запретить меняться координатам при коннекте?


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

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Запретить концу стрелки сдвигаться при GlueToPos
СообщениеДобавлено: 11 ноя 2016, 09:21 
Собственно в том и проблема, что сдвигается не всегда. Вообще я формирую новый файл по данным из старого и эта проблема возникает в нём, возможно какие-то настройки не выставлены.
Вот изначальная диаграмма: https://yadi.sk/d/kmNlfHiOyNXNc
Проблема возникает со стрелкой "ММ".

Ещё может быть я ошибаюсь с расчётом точки коннекта и поэтому идёт смещение.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Запретить концу стрелки сдвигаться при GlueToPos
СообщениеДобавлено: 11 ноя 2016, 09:35 
Склеиваются две стрелки методом GlueToPos.
А перечень действий таков: Дроп подряд всех фигур на диаграмме на новую диаграмму. стрелки склеиваются с теми фигурами с которыми они связаны.
В результате одна стрелка "ММ" ошибается.
Проблема возникает как я понимаю с системой из трёх стрелок. То есть есть стрелка, которую мы не рассматриваем, есть вторая, которая выходит из первой, она прямая и есть третья с углом, выходит из второй. В этой системе третья стрелка сдвигается


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 403
Использую Visio c: 2008
Очков репутации: 79

Добавить очки репутацииУменьшить очки репутации
Надо бы файлик в формате .vsd выложить. Не у всех же Visio 2013 и выше.


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
и конвертер снова перестал работать у меня
Tumanov в сообщении #4480 писал(а):
хоть снова запрещай выкладывать документы в vsdx/vsdm на форуме ? а вот на разных яндекс дисках то никак не запретишь !


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

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

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


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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Запретить концу стрелки сдвигаться при GlueToPos
СообщениеДобавлено: 11 ноя 2016, 14:32 
Bill17,
файл в формате vsdx, и кода в нем конечно нет :(
остается гадать что было в вашем коде !
Кстати ваша контора крутой продукт запилила !


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Запретить концу стрелки сдвигаться при GlueToPos
СообщениеДобавлено: 11 ноя 2016, 15:25 
Ну мне этот файл предоставили, в визио 2010 я с ним не работал, поэтому не знаю воспроизводится ли ошибка.
https://yadi.sk/d/PCP_xpUFyPXY9
Сконвертировал в 2010.

На вход поступает:
Код:
Visio.Shape thisShape, Visio.Shape fromToShape, double xCoord, double yCoord, Visio.VisCellIndices cellIndices

Вот код метода, который склеивает стрелки с другими фигурами
Код:
x1 = fromToShape.Cells["BeginX"].ResultIU;
x2 = fromToShape.Cells["EndX"].ResultIU;
y1 = fromToShape.Cells["BeginY"].ResultIU;
y2 = fromToShape.Cells["EndY"].ResultIU;
                if (Math.Abs(Math.Round(x1, 3) - Math.Round(x2, 3)) < VisioUtility.ТочностьПоУмолчанию) //ТочностьПоУмолчанию = 0.01
                    x1 = x2;
                if (Math.Abs(Math.Round(y1, 3) - Math.Round(y2, 3)) < VisioUtility.ТочностьПоУмолчанию)
                    y1 = y2;
           
            Visio.Cell cell = VisioUtility.ПолучитьЯчейку(thisShape, Visio.VisSectionIndices.visSectionObject, Visio.VisRowIndices.visRowXForm1D, cellIndices);
            double xPos, yPos;

            //Если цепляемся к стрелке и она прямая, то берём значение по умолчанию, оно не влияет на координату крепления
            if (Math.Round(xCoord - x1, 4) == 0 && Math.Round(x2 - x1, 4) == 0 || Math.Round(x2 - x1, 4) == 0)
                xPos = 0.5;
            else
                xPos = Math.Round((xCoord - x1) / (x2 - x1), 2);
            if (Math.Round(yCoord - y1, 4) == 0 && Math.Round(y2 - y1, 4) == 0 || Math.Round(y2 - y1, 4) == 0)
                yPos = 0.5;
            else
                yPos = Math.Round((yCoord - y1) / (y2 - y1), 2);
           
            cell.GlueToPos(fromToShape, xPos, yPos);


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

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



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

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 2


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

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