Форум пользователей Visio http://visio.getbb.ru/ |
|
Запретить концу стрелки сдвигаться при GlueToPos http://visio.getbb.ru/viewtopic.php?f=6&t=1048 |
Страница 1 из 1 |
Автор: | Bill17 [ 10 ноя 2016, 17:38 ] |
Заголовок сообщения: | Запретить концу стрелки сдвигаться при GlueToPos |
Бросаю на диаграмму несколько динамических коннекторов и склеиваю их между собой. При склейке двух коннекторов конец одного из них сдвигается. Можно ли как-то запретить меняться координатам при коннекте? |
Автор: | Tumanov [ 10 ноя 2016, 17:54 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
А вот у меня ничего не сдвигается. Значит, дело в каких-то особенностях: что клеится, к чему, каким методом и в каком окружении. В Вашем вопросе такая информация отсутствует. Хорошо бы было иметь образец файла и перечень действий, позволяющих однозначно воспроизвести ситуацию. |
Автор: | Bill17 [ 11 ноя 2016, 09:21 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
Собственно в том и проблема, что сдвигается не всегда. Вообще я формирую новый файл по данным из старого и эта проблема возникает в нём, возможно какие-то настройки не выставлены. Вот изначальная диаграмма: https://yadi.sk/d/kmNlfHiOyNXNc Проблема возникает со стрелкой "ММ". Ещё может быть я ошибаюсь с расчётом точки коннекта и поэтому идёт смещение. |
Автор: | Bill17 [ 11 ноя 2016, 09:35 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
Склеиваются две стрелки методом GlueToPos. А перечень действий таков: Дроп подряд всех фигур на диаграмме на новую диаграмму. стрелки склеиваются с теми фигурами с которыми они связаны. В результате одна стрелка "ММ" ошибается. Проблема возникает как я понимаю с системой из трёх стрелок. То есть есть стрелка, которую мы не рассматриваем, есть вторая, которая выходит из первой, она прямая и есть третья с углом, выходит из второй. В этой системе третья стрелка сдвигается |
Автор: | Shishok [ 11 ноя 2016, 11:23 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
Надо бы файлик в формате .vsd выложить. Не у всех же Visio 2013 и выше. |
Автор: | Surrogate [ 11 ноя 2016, 11:28 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
и конвертер снова перестал работать у меня Tumanov в сообщении #4480 писал(а): хоть снова запрещай выкладывать документы в vsdx/vsdm на форуме ? а вот на разных яндекс дисках то никак не запретишь !
|
Автор: | Tumanov [ 11 ноя 2016, 11:42 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
Цитата: Надо бы файлик в формате .vsd выложить Да, вот и я тоже смогу в этом формате посмотреть только вечером.Но запрещать смысла нет. Народ должен сам понимать, что при наличии правильного формата вероятность ответа повышается. |
Автор: | Surrogate [ 11 ноя 2016, 11:52 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
Tumanov писал(а): Народ должен сам понимать, что при наличии правильного формата вероятность ответа повышается. надо тогда где-то это большими и горящими буквами написать !!! сделал однако см. над заголовком темы
|
Автор: | Dmitrii [ 11 ноя 2016, 14:32 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
Bill17, файл в формате vsdx, и кода в нем конечно нет остается гадать что было в вашем коде ! Кстати ваша контора крутой продукт запилила ! |
Автор: | Bill17 [ 11 ноя 2016, 15:25 ] |
Заголовок сообщения: | Re: Запретить концу стрелки сдвигаться при GlueToPos |
Ну мне этот файл предоставили, в визио 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); |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |