I created two hacks to solve this, the first one uses the diamond as intermediary element between the elements, the second a rectangle, the diamond seems better. It would be nice to have a placeholder element that is invisible to help arranging elements, just like the invisible lines.
Diamond:
@startuml
!define INV_S(s) <color:#FFFFFFF>s<color:Black>
!define S |
!define SPACE_01 INV_S(S)
!define SPACE_02 INV_S(SS)
!define SPACE_03 INV_S(SSS)
!define SPACE_04 INV_S(SSSS)
!define SPACE_05 INV_S(SSSSS)
!define SPACE_06 INV_S(SSSSSS)
!define SPACE_07 INV_S(SSSSSSS)
!define SPACE_08 INV_S(SSSSSSSS)
!define SPACE_09 INV_S(SSSSSSSSS)
!define SPACE_10 INV_S(SSSSSSSSSS)
!define SPACER_C(s, l) l s l
skinparam linetype ortho
class User
abstract class Group
class Activity
class Item
User "*" o-r- "1" Group : SPACER_C(<&caret-left> has, SPACE_10)
Group "1" o-r- "*" Activity : SPACER_C(<&caret-left> has, SPACE_10)
Activity "1" -l-o "*" Item : SPACER_C(has <&caret-right>, SPACE_10)
/'
********************************************************************************
Inheritances
********************************************************************************
'/
<> PLACEHOLDER1
<> PLACEHOLDER2
<> PLACEHOLDER3
class Apartment
class Events
class Travels
object Type1
object Type2
object Type3
object Type01
object Type02
object Type03
PLACEHOLDER1 -d- Apartment
PLACEHOLDER1 -d- Events
PLACEHOLDER1 -d- Travels
PLACEHOLDER1 -u-|> Group
PLACEHOLDER2 -d- Type1
PLACEHOLDER2 -d- Type2
PLACEHOLDER2 -d- Type3
PLACEHOLDER2 -u-|> Activity
PLACEHOLDER3 -d- Type01
PLACEHOLDER3 -d- Type02
PLACEHOLDER3 -d- Type03
PLACEHOLDER3 -u-|> Item
@enduml
Generates:
Rectangle:
@startuml
!define INV_S(s) <color:#FFFFFFF>s<color:Black>
!define S |
!define SPACE_01 INV_S(S)
!define SPACE_02 INV_S(SS)
!define SPACE_03 INV_S(SSS)
!define SPACE_04 INV_S(SSSS)
!define SPACE_05 INV_S(SSSSS)
!define SPACE_06 INV_S(SSSSSS)
!define SPACE_07 INV_S(SSSSSSS)
!define SPACE_08 INV_S(SSSSSSSS)
!define SPACE_09 INV_S(SSSSSSSSS)
!define SPACE_10 INV_S(SSSSSSSSSS)
!define SPACER_C(s, l) l s l
skinparam linetype ortho
class User
abstract class Group
class Activity
class Item
User "*" o-r- "1" Group : SPACER_C(<&caret-left> has, SPACE_10)
Group "1" o-r- "*" Activity : SPACER_C(<&caret-left> has, SPACE_10)
Activity "1" -l-o "*" Item : SPACER_C(has <&caret-right>, SPACE_10)
/'
********************************************************************************
Inheritances
********************************************************************************
'/
skinparam rectangle {
BackgroundColor<<PLACEHOLDER>> #7777777
BorderThickness<<PLACEHOLDER>> 0
FontColor<<PLACEHOLDER>> #7777777
FontSize<<PLACEHOLDER>> 0
StereotypeFontColor<<PLACEHOLDER>> #7777777
StereotypeFontSize<<PLACEHOLDER>> 0
}
rectangle PLACEHOLDER1 <<PLACEHOLDER>> {
}
rectangle PLACEHOLDER2 <<PLACEHOLDER>> {
}
rectangle PLACEHOLDER3 <<PLACEHOLDER>> {
}
class Apartment
class Events
class Travels
object Type1
object Type2
object Type3
object Type01
object Type02
object Type03
PLACEHOLDER1 -d- Apartment
PLACEHOLDER1 -d- Events
PLACEHOLDER1 -d- Travels
PLACEHOLDER1 -u-|> Group
PLACEHOLDER2 -d- Type1
PLACEHOLDER2 -d- Type2
PLACEHOLDER2 -d- Type3
PLACEHOLDER2 -u-|> Activity
PLACEHOLDER3 -d- Type01
PLACEHOLDER3 -d- Type02
PLACEHOLDER3 -d- Type03
PLACEHOLDER3 -u-|> Item
@enduml
Generates: