генерируйте схему Visio на лету с.NET

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

8
задан John Saunders 12 May 2015 в 04:46
поделиться

1 ответ

На GitHub есть VisioAutomation . Если у вас установлен Visio, он может автоматизировать создание схемы. Если вы можете смоделировать диаграмму, которую хотите, в виде ориентированного графа, она может автоматически разметить диаграмму для вас (с помощью MSAGL).

Вот базовый пример создания ориентированного графа

        using VACONNECT = VisioAutomation.Shapes.Connections;
        var d = new VisioAutomation.Models.DirectedGraph.Drawing();

        var basic_stencil = "basic_u.vss";
        var n0 = d.AddShape("n0", "Node 0", basic_stencil, "Rectangle");
        n0.Size = new VA.Drawing.Size(3, 2);
        var n1 = d.AddShape("n1", "Node 1", basic_stencil, "Rectangle");
        var n2 = d.AddShape("n2", "Node 2", basic_stencil, "Rectangle");
        var n3 = d.AddShape("n3", "Node 3", basic_stencil, "Rectangle");
        var n4 = d.AddShape("n4", "Node 4\nUnconnected", basic_stencil, "Rectangle");

        var c0 = d.AddConnection("c0", n0, n1, "0 -> 1", VACONNECT.ConnectorType.Curved);
        var c1 = d.AddConnection("c1", n1, n2, "1 -> 2", VACONNECT.ConnectorType.RightAngle);
        var c2 = d.AddConnection("c2", n1, n0, "0 -> 1", VACONNECT.ConnectorType.Curved);
        var c3 = d.AddConnection("c3", n0, n2, "0 -> 2", VACONNECT.ConnectorType.Straight);
        var c4 = d.AddConnection("c4", n2, n3, "2 -> 3", VACONNECT.ConnectorType.Curved);
        var c5 = d.AddConnection("c5", n3, n0, "3 -> 0", VACONNECT.ConnectorType.Curved);

А затем его рисования:

        var options = new VisioAutomation.Models.DirectedGraph.MsaglLayoutOptions();

        var page = visio_app.ActivePage;
        d.Render(page,options);
7
ответ дан 5 December 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: