我正在使用PlantUML制作简单的类图,并且该工具非常棒,但除了将它们放入包或使用像Alice -left- * Bob之类的关系之外,我找不到任何方法将类彼此对齐。我需要的是:
@startuml
class Bob
class Alice
class Dan
**Dan aligned Alice: horizontally**
'or using a grid?
**Bob at grid (2, 3)**
@enduml
有办法吗?
答案 0 :(得分:11)
不,没有办法做到这一点,对不起:( PlantUML背后的想法是你不应该太在意布局渲染。
实际上,早期版本的PlantUML用于对齐类,但这是一个问题:当存在许多不相关的类时,图表往往非常大且非常薄。因此添加了一个补丁来组织一个正方形的类。
您希望图表中有多少个类?当然可以禁用例如组织补丁。 3到5个班级。您可以向the forum发布建议,以了解其他用户对此的看法。
答案 1 :(得分:5)
使用-[hidden]
关系可以完成此工作:
@startuml
class Bob
class Alice
class Dan
class Foo
class Bar
class Foobar
Bob -[hidden] Alice
Bar -[hidden] Foobar
@enduml
答案 2 :(得分:3)
一种更清洁的方法是将它们放在隐藏的程序包中,这更合乎逻辑。
@startuml
skinparam shadowing false
skinparam package<<Layout>> {
borderColor Transparent
backgroundColor Transparent
fontColor Transparent
stereotypeFontColor Transparent
}
package x <<Layout>>{
class A
class B
}
A .. D
B .. C
C .. D
A1 .. D1
B1 .. C1
C1 .. D1
@end
答案 3 :(得分:2)
您不需要hidden package
,请使用together
关键字:
together {
class A
class B
}
答案 4 :(得分:1)
您可以通过更改行号(例如'-','。'等)来对齐元素。
@startuml
class A
A ..> B
C ---> B
D ...> B
E ----> B
F ----> B
G ----> B
@enduml
答案 5 :(得分:1)
这是一个解决方案。
@startuml
foo -left-> dummyLeft
foo -right-> dummyRight
foo -up-> dummyUp
foo -down-> dummyDown
@enduml
对您的问题:
@startuml
class Bob
class Alice
class Dan
Alice -left[hidden]-> Bob
Alice -right[hidden]-> Dan
@enduml
它也可能有用:
@startuml
class Bob
class Alice
class Dan
Bob -right-|> Alice
Alice -right-> Dan
interface Friend
Dan -up..> Friend
interface Person
Friend -left-> Person
interface Object
Person -down-> Object
interface Native
Object -right-> Native
@enduml