Форум пользователей Visio
http://visio.getbb.ru/

Эвристическая...MSAGL
http://visio.getbb.ru/viewtopic.php?f=6&t=1383
Страница 1 из 1

Автор:  Robink [ 11 окт 2018, 13:17 ]
Заголовок сообщения:  Эвристическая...MSAGL

Пробую MSAGL.
Хочу сделать как тут:
https://www.microsoft.com/en-us/researc ... 7-glee.pdf
Fig. 1 (приложил к посту)
В проекте на гитхаб есть пример:
https://github.com/Microsoft/automatic- ... /issues/44
Он не работает. Можно заставить соблюдать соотношение сторон, но только при помощи простого растяжения, простое растяжение отключить никак не смог.
Можно указывать вершины для выдвижения из ряда через LayerConstraints.
Для этого надо городить какой то свой алгоритм.
Может есть уже готовое решение? :)
Кто плавал, подскажите пожалуйста

Вложения:
heuristic.jpg
heuristic.jpg [ 144.02 Кб | Просмотров: 270 ]

Автор:  Tumanov [ 11 окт 2018, 13:51 ]
Заголовок сообщения:  Re: Эвристическая...MSAGL

Глобальное описание задачи - это, конечно, полезно... Но не прозвучал конкретный вопрос.
Что именно является проблемой?
И терминологию нужно бы пояснить. Что такое "простое растяжение" и почему оно не работает? Что за "вершины для выдвижения"?

Автор:  Robink [ 11 окт 2018, 14:11 ]
Заголовок сообщения:  Re: Эвристическая...MSAGL

Оно рисует как на Fig. 2. Надо как на Fig.1. Это все нужно для подгонки под определенное соотношение сторон. Простое растяжение, это просто смещение вершин (Nodes) : A, B, C то что в кружочках.
Просто растяжение как раз и работает, просто не отключается.
Приложил GIF

Вложения:
Комментарий к файлу: Это когда указал какие выдвинуть в другой слой (ряд)
h2.jpg
h2.jpg [ 376.89 Кб | Просмотров: 250 ]
heuristic.gif
heuristic.gif [ 852.97 Кб | Просмотров: 255 ]

Автор:  Tumanov [ 12 окт 2018, 14:02 ]
Заголовок сообщения:  Re: Эвристическая...MSAGL

Можно посмотреть вот такое дополнение
http://visio.artberg.ru/gum/6/importer_ru.htm
Там есть формочка для управления массивом шейпов.

Вложения:
form.gif
form.gif [ 611.27 Кб | Просмотров: 198 ]

Автор:  nbelyh [ 12 окт 2018, 22:01 ]
Заголовок сообщения:  Re: Эвристическая...MSAGL

Насколько я понял, ключевые слова - эвристика (heuristic layout), простое растяжение (simple strtch), ограничение по уровням (layer constraints), MSAGL
Я бы посоветовал тупо задать вопрос на сайте библиотеки (на GitHub), и надеяться что кто-то откликнется.
У меня честно говоря так руки и не дошли чтобы что-то попробовать сделать с MSAGL после того как ее исходники открыли на github, ничего не подскажу.

То есть, сделать-то всяко можно - все исходники открыты,
Но подозреваю что оно как в той байке про мужика и 1000 рублей - 1 рубль за удар, 999 рублей за знание места куда бить :)

Автор:  Robink [ 16 окт 2018, 17:47 ]
Заголовок сообщения:  Re: Эвристическая...MSAGL

Вопрос уже задавали, тема закрыта на github... Я уже основательно порылся, если что обращайтесь :)

Автор:  Robink [ 14 ноя 2018, 23:06 ]
Заголовок сообщения:  Re: Эвристическая...MSAGL

Есть другой путь:
Код:
     1       4
   /        /
A - 2   A - 5
  \        \
     3       6

var mg_graph = graph.GeometryGraph;
          
var geomGraphComponents = Microsoft.Msagl.Core.Layout.GraphConnectedComponents.CreateComponents(mg_graph.Nodes, mg_graph.Edges);
           
if (geomGraphComponents.ToList().Count > 1)
{
    foreach(var gg in geomGraphComponents.ToList())
        gg.UpdateBoundingBox();
              
    var settings = new Microsoft.Msagl.Layout.Layered.SugiyamaLayoutSettings();
    settings.AspectRatio = 0.66;
    settings.Transformation= PlaneTransformation.Rotation(Math.PI / 2);
                 
     // Pack the graphs using Golden Aspect Ratio
     Microsoft.Msagl.Layout.MDS.MdsGraphLayout.PackGraphs(geomGraphComponents, settings);
   
     //Update the graphs bounding box
     mg_graph.UpdateBoundingBox();
}

Автор:  Robink [ 05 дек 2018, 19:06 ]
Заголовок сообщения:  Re: Эвристическая...MSAGL

Одними LayerConstraints историю с длинными цепочками не победить, во всяком случае я не нашел способ, скачит оно по LR уровням.

Вложения:
step031.png
step031.png [ 136.89 Кб | Просмотров: 52 ]

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/