PlantUML:如何控制同一排列的类的对齐方式?

4

我最近发现Plantuml会将同一等级的所有类别进行排序。然后,每个类别都围绕着对应等级的无形线居中。

例如:

example 1

在这个例子中,Class 1、Class2、Class3和Class4具有相同的等级,并且围绕该等级的无形线居中。

在像这样简单的图表中,这不是什么问题,但在更复杂的图表中会变得有些棘手。

例如:

    @startuml

    skinparam linetype ortho

    namespace namespace1 {

    class ParentClass{
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    }

    ParentClass -- Class1
    ParentClass -- Class2
    ParentClass -- Class3
    ParentClass -- Class4


    class Class1{
    something
    something
    something
    something
    something
    somethins
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    something
    }

    class Class2{
    something
    something
    something
    something
    something
    something
    something

    }

    class Class3{
    something
    something
    something
    something
    }

    class Class4{
    something
    something
    }

    }

    namespace namespace2 {
    OtherParentClass -- Class1
    OtherParentClass -- Class2

    class Class1{
    something
    }

    class Class2{
    something
    }

    }
    @enduml

Imgur

在这个例子中,在命名空间2中,子类与父类之间的距离非常远。

有没有一种方法可以更好地控制这个过程?理想情况下,我希望能够将同等级别的所有类居中对齐,甚至可以重置不可见的排名线的位置(因此在命名空间2中,Class1、Class2的位置与命名空间1中的类的定位独立)。


你能发布你所使用的代码并告诉我们用什么工具绘制了这些图表吗? - khalito
1
我添加了代码。我使用PlantUML命令行工具生成了这些图表。 - Antoine Lefebvre
1个回答

2
我找不到控制那个无形排名线位置或对齐方式的方法。
我了解到,排名是Graphviz的一个特性,它用于为PlantUML进行图形布局。有一些hack可以强制Graphviz进行布局,但不能在PlantUML中使用(example 1example 2),但这些变通方法无法从PlantUML内部实现。
您可以更改连接线长度,这实际上会将元素放置在不同的排名上。这并不是您问题的真正解决方案,但在某些情况下可能是一种解决方法。
因此,如果在namespace1中使用---,在namespace2中使用--,则来自namespace2的类将位于来自namespace1的类之上。例如,您还可以为除namespace1 :: Class1之外的所有类使用短连接器。

Test with longer lines in namespace1

我根据如何在PlantUML类图中对齐块?的答案弄清楚了这个问题。

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