c# - 使用 .NET 即时生成 visio 图

标签 c# .net architecture visio

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

最佳答案

VisioAutomation在 GitHub 上。如果您安装了 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);

关于c# - 使用 .NET 即时生成 visio 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2258882/

相关文章:

database - 用于在云上构建企业 Web (RIA) 应用程序的数据库架构(单一数据库与客户端特定数据库)

c# - 怎么办 "map chunks",像泰拉瑞亚或我的世界地图?

.net - 制作 Uri 对象的最通用方法?

visual-studio-2010 - 是否可以使用体系结构资源管理器创建依赖关系图?

c# - cshtml中 '@'标志是什么意思?

c# - 动态 - 它是引用类型还是值类型?

architecture - 我应该有多个 GraphQL 实例还是只有一个?

c# - C# 如何计算两个日期之间的月数

c# - 从网站远程启动桌面应用程序

c# - XElement.Parse NotSuportedException