使用.NET实时生成Visio图表

8

如果我有客户端应用程序、服务和数据库的列表,是否有一种好的方式可以生成一个构架的visio图(具有良好的布局)?我认为应该有一种不错的方法可以动态生成它。


1
“csharp”和“dotnet”标签在这里完全不适用。你已经使用这个网站很长时间了,应该知道得更清楚些。 - Joel Coehoorn
我认为我读到过这些会通过一个循环脚本被解决成正确的。 - leora
1
我已经使用Aspose.Diagram取得了良好的结果:http://www.aspose.com/.net/diagram-component.aspx - Adam
1个回答

7

在 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);

1
这是纯粹的链接答案的定义。 - John Saunders
正是我所需要的,谢谢。 - eka808

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接