搜索此API

y.布局.外部
类总线路由器

java.lang.Object(java.lang.对象)由扩展 y.布局。抽象布局阶段
      由扩展 y.layout.router。总线路由器
所有实现的接口:
层外(Layour),布局阶段

公众阶级总线路由器
延伸抽象布局阶段

一种以正交总线方式路由图边缘的边缘路由算法。

仔细观察所得的总线表示,其中许多边段绘制在彼此的顶部,为合理解释边缘方向留下的空间很小。

请注意,类边缘路由器提供更新、改进的总线式支持(另请参见总线描述符)并且建议使用它来代替。

布局样式

边缘段绑定到总线。总线是由多条边共享的段连接到实际节点的较短线段将被附加。公交车和所有其他路段均已布线正交。

例如,可以在图的各个部分中创建总线,其中每个节点都连接到其他节点。不存在由同一总线的任何两个边缘路径引起的循环,也就是说,所有边缘路由的组合看起来像一棵正交树。

该算法尝试生成边尽可能多地共享其路径的路径。它产生了长线段(所谓的主干网段)理想情况下,除了所有边的第一段和最后一段之外,所有边都是路径被绘制在彼此的顶部(形成一个公共汽车),短连接分支到节点(总线连接)。这些短连接将节点入射边的第一段或最后一段捆绑在一起。

该算法不会以任何方式修改节点的位置或大小,但会对图形的边进行布线。


具有默认设置的总线式边缘布线


边缘布线示例,包括四条不同的总线

概念

该算法使用两阶段过程:

  1. 主干网选择:确定一组合适的初始主干段。
  2. 路由和重组:每个初始主干段连接到所有其他主干段,并且通过使用正交边路径到每个节点。然后,将生成的结构简化为主干段较长、节点连接较短的最佳结构。

特征

要确定哪些边属于公共总线,必须指定为每条边分配总线ID的映射使用总线描述符s.答数据提供程序举办总线描述符实例应为使用描述符密钥如果边缘没有单独的总线ID,则将创建仅由单个边缘组成的总线。

此算法支持端口约束s以及端口候选s控制边应连接到节点的位置。

注意,如果同一总线的边缘连接到公共节点,但端口不一致或矛盾约束/候选,则这些约束/候选中的任何一个都可以确定实际位置公共端口。此外,这同样适用于属于同一边缘组的边缘。

此外,使用端口候选集对象被解释为不同的总线ID(组ID),而不是边数。

该算法支持增量边缘布线,即扩展或更新现有的总线样式表示。这对于重新排列现有边或在中包含其他边很有用现有的公共汽车。
通过使用相应的BusDescriptor属性该算法计算未标记为固定边的路径。由固定边引起的结构必须正交且无循环。

 

现场总结
静态java.lang.Object EDGE_DESCRIPTOR_DPKEY边缘描述符
A类数据提供程序为每条边指定总线描述符对象的键这个总线描述符对于边缘,提供边缘的总线ID、其可选组ID以及是否边缘是否固定。
静态java.lang.Object 边缘_ UBSET_DPKEY
A类数据提供程序用于指定要布线的边子集的键如果没有使用定义用于指定子集的自定义键,则使用此键setSelectedEdgesDpKey(对象)
静态字节 范围_全部
一个范围说明符,定义输入图的所有边都将被路由。
静态字节 范围_ UBSET
一个范围说明符,定义只路由输入图的选定边。
 
从接口y.layout继承的字段。层外(Layour)
边缘_ID_DPKEY,节点ID_DPKEY,节点_类型_DP键,选定的边缘,所选节点
 
构造方法摘要
总线路由器()
创建的新实例总线路由器使用默认设置。
 
方法摘要
布尔值 can布局(LayoutGraph布局图图表)
接受可以由核心布局算法
受保护的正交边缘路由器 创建正交边缘路由器()
创建的已配置实例正交边缘路由器用于边缘的正交布线。
空隙 do布局(LayoutGraph布局图图表)
为给定输入图中的边计算类似公共汽车的路线。
双倍的 获取交叉成本()
返回每个边交叉的成本。
整数 获取网格间距()
返回水平网格线和垂直网格线之间的等距间距。
双倍的 获取最小主干段长度()
返回主干段的首选最小长度。
整数 获取最小总线连接计数()
返回主干段必须具有的最小总线连接数。
整数 获取到边缘的最小距离()
返回任意两条边线段之间的最小距离。
整数 获取到节点的最小距离()
返回边线段和节点之间的最小距离。
整数 获取首选主干段计数()
返回具有相同方向的选定主干线段的最大数目。
字节 getScope(获取范围)()
返回此路由算法的范围,该算法确定路由哪些边。
java.lang.Object(java.lang.对象) 获取选定边Dp键()
返回要注册的密钥数据提供程序用于将边缘标记为挑选出来的
布尔值 已启用网格路由()
指定是否仅在网格线上布线边缘线段。
布尔值 正在删除共线折弯()
指定是否从布局中删除共线折弯。
布尔值 重新路由已启用()
指定是否执行其他步骤以重新布线边,使减少了边缘交叉。
空隙 设置交叉成本(双倍成本)
指定每个边交叉的成本。
空隙 已启用设置网格路由(启用布尔值)
指定是否仅在网格线上布线边缘线段。
空隙 设置网格间距(int间距)
指定水平网格线和垂直网格线之间的等距间距。
空隙 设置最小主干段长度(双倍最小长度)
指定主干线段的首选最小长度。
空隙 设置最小总线连接计数(int minimumCount)
指定主干段必须具有的最小总线连接数。
空隙 设置到边缘的最小距离(整数距离)
设置任意两条边线段之间的最小距离。
空隙 设置到节点的最小距离(整数距离)
设置边线段和节点之间的最小距离。
空隙 设置首选BackboneSegmentCount(int preferredCount)
指定具有相同方向的选定主干线段的最大数量。
布尔值 设定属性(java.lang.String键,java.lang.Object值)
提供对仅用于内部目的的特定于实现的属性的访问。
空隙 设置删除共线折弯(布尔型移除共线折弯)
指定是否从布局中删除共线折弯。
空隙 设置重新路由已启用(启用布尔值)
指定是否执行其他步骤以重新布线边,使减少了边缘交叉。
空隙 setScope(设置范围)(字节范围)
设置此布管算法的范围,该算法用于确定布管的边。
空隙 设置所选边DpKey(java.lang.Object键)
指定要注册的密钥数据提供程序用于将边缘标记为挑选出来的
 
从y.layout类继承的方法。抽象布局阶段
can布局核心,doLayoutCore(do布局核心),获取核心布局器,设置核心层
 
从类java.lang.Object继承的方法
clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait
 

字段详细信息

范围_全部

公共静态最终字节范围_全部
一个范围说明符,定义输入图的所有边都将被路由。

另请参阅:
setScope(字节),常量字段值
示例图表:

初始图形

所有边缘均已布线

范围_ UBSET

公共静态最终字节范围_ UBSET
一个范围说明符,定义只路由输入图的选定边。

边的选择状态由返回的布尔值确定数据提供程序用密钥注册获取选定边DpKey()

所有其他未选择的边缘将被视为具有固定路线。

另请参阅:
setScope(字节),setSelectedEdgesDpKey(对象),边缘_ UBSET_DPKEY,常量字段值
示例图表:

初始图形,标记三条边

仅选择标记的边作为子集,因此,对其进行布线

EDGE_DESCRIPTOR_DPKEY边缘描述符

公共静态最终java.lang.ObjectEDGE_DESCRIPTOR_DPKEY边缘描述符
A类数据提供程序为每条边指定总线描述符对象的键

这个总线描述符对于边缘,提供边缘的总线ID、其可选组ID以及是否边缘是否固定。

 
需要边缘的总线ID来确定哪些边缘属于公共总线。在缺席的情况下对于边缘的单个总线ID,将创建仅由单个边缘组成的总线。

边缘_ UBSET_DPKEY

公共静态最终java.lang.Object边缘_ UBSET_DPKEY
A类数据提供程序用于指定要布线的边子集的键

如果没有使用定义用于指定子集的自定义键,则使用此键setSelectedEdgesDpKey(对象)

 
仅当范围设置为时才考虑指定的子集范围子集
另请参阅:
setScope(字节),setSelectedEdgesDpKey(对象)
建造商详图

总线路由器

公众的总线路由器()
创建的新实例总线路由器使用默认设置。

方法详细信息

创建正交边缘路由器

受保护的正交边缘路由器 创建正交边缘路由器()
创建的已配置实例正交边缘路由器其用于边缘的正交路由。

初始化总线路由器本身。可以重写它以创建自定义实现或内部路由算法的不同设置。

 
此路由算法的某些属性会立即映射到内部正交边缘路由器例如,设置交叉成本(双倍)setGridRoutingEnabled(布尔值)。因此总线路由器重写此方法并创建正交边缘路由器具有不同的初始设置。
退货:
已配置的正交边缘路由器实例

can布局

公共布尔值can布局(LayoutGraph布局图图表)
接受可以由核心布局算法

如果没有核心布局算法,接受所有图形。

参数:
图表-输入图形
退货:
真的如果没有核心布局算法或核心布局算法接受图形,否则
另请参阅:
Layouter.doLayout(布局图)

do布局

公共空虚do布局(LayoutGraph布局图图表)
计算给定输入图中边缘的总线状路由。

 
在边缘布线过程中不会复制给定的图形,结果将立即显示应用于输入图形。
参数:
图表-输入图形
另请参阅:
Layouter.canLayout(LayoutGraph)

设置网格间距

公共空虚设置网格间距(int间距)
指定水平网格线和垂直网格线之间的等距间距。

正值大于2是允许的。正值小于2被忽略,而负值映射到其绝对值。

 
只有在以下情况下,此选项才会生效网格布线已启用。
默认值:
默认值为10。
参数:
间距-栅格间距
另请参阅:
setGridRoutingEnabled(布尔值)
示例图表:

20

60

获取网格间距

公共int获取网格间距()
返回水平网格线和垂直网格线之间的等距间距。

正值大于2是允许的。正值小于2被忽略,而负值映射到其绝对值。

 
只有在以下情况下,此选项才会生效网格布线已启用。
退货:
网格间距
另请参阅:
setGridSpacing(int),setGridRoutingEnabled(布尔值)

已启用设置网格路由

公共空虚已启用设置网格路由(启用布尔值)
指定是否仅在网格线上布线边缘线段。

 
网格的间距可以通过以下方式控制setGridSpacing(int)
默认值:
默认值为false。边缘可以自由布线。
参数:
启用-真的如果边缘段应在网格上布线,否则
示例图表:

真的-边段位于栅格上

-边缘线段未与栅格对齐

已启用网格路由

公共布尔值已启用网格路由()
指定是否仅在网格线上布线边缘线段。

 
网格的间距可以通过以下方式控制setGridSpacing(int)
退货:
真的如果边缘段在网格上布线,否则
另请参阅:
setGridRoutingEnabled(布尔值)

设置到节点的最小距离

公共空虚设置到节点的最小距离(整数距离)
设置边线段和节点之间的最小距离。

正值大于2是允许的。正值小于2被忽略,而负值映射到其绝对值。

默认值:
默认值为10。
参数:
距离-边与节点之间的最小距离
示例图表:

10-边放置在高亮显示的节点之间,不违反最小距离

30-边不适合高亮显示的节点之间,因为这会违反最小距离

获取到节点的最小距离

公共int获取到节点的最小距离()
返回边线段和节点之间的最小距离。

正值大于2是允许的。正值小于2被忽略,而负值映射到其绝对值。

退货:
边与节点之间的最小距离
另请参阅:
将最小距离设置为节点(int)

设置到边缘的最小距离

公共空虚设置到边缘的最小距离(整数距离)
设置任意两条边线段之间的最小距离。

边缘布线算法尽可能遵循该值,但有选择地减小距离值,即,当没有足够的空间来找到具有适当值的路径时,仅适用于当前处理的边。

正值大于4是允许的。正值小于4被忽略,而负值映射到其绝对值。

默认值:
默认值为5。
参数:
距离-边缘之间的最小距离
示例图表:

最小边到边距离5

最小边到边距离20

获取到边缘的最小距离

公共int获取到边缘的最小距离()
返回任意两条边线段之间的最小距离。

如果可能的话,将边缘布线算法设置为该值,但有选择地减小距离值,即,当没有足够的空间来找到具有适当值的路径时,仅针对当前处理的边缘。

正值大于4是允许的。正值小于4被忽略,而负值映射到其绝对值。

退货:
边之间的最小距离
另请参阅:
设置到边缘的最小距离(int)

设置交叉成本

公共空虚设置交叉成本(双倍成本)
指定每个边交叉的成本。

成本价值为n个意味着改变其方向n个而不是穿越边缘。如果成本值设置为0,不执行全局交叉优化。

成本定义为非负值。

 
在方向改变次数和边缘路径交叉次数之间的一个很好的权衡是通过选择以下值实现13
 
此设置仅在路由和重组阶段考虑,并且不会影响初始主干段的选择。
默认值:
默认值为1.0。一个方向的改变优先于边缘的交叉。
参数:
成本-每个十字路口的非负成本值
投掷次数:
java.lang.Illegal参数异常-如果给定的成本值为负
示例图表:

3-中的个结果1十字路口

0-结果在5十字路口

获取交叉成本

公共双人间获取交叉成本()
返回每个边交叉的成本。

成本价值为n个意味着改变其方向n个而不是穿越边缘。如果成本值设置为0,不执行全局交叉优化。

成本定义为非负值。

 
在方向改变次数和边缘路径交叉次数之间的一个很好的权衡是通过选择以下值实现13
 
此设置仅在路由和重组阶段考虑,并且不会影响初始主干段的选择。
退货:
每个交叉口的非负成本值
另请参阅:
设置交叉成本(双倍)

设置重新路由已启用

公共空虚设置重新路由已启用(启用布尔值)
指定是否执行其他步骤以重新布线边,使减少了边缘交叉。

这一特点并不能保证交叉口的数量最少。

 
只有当值大于时,重新路由步骤才会生效0分配给交叉费用
默认值:
默认值为false。
参数:
启用-真的如果应启用重路由功能,否则
另请参阅:
设置交叉成本(双倍)

重新路由已启用

公共布尔值重新路由已启用()
指定是否执行其他步骤以重新布线边,使减少了边缘交叉。

这一特点并不能保证交叉口的数量最少。

 
只有在路由和重组阶段才考虑重路由不影响初始主干段的选择。
 
只有当值大于时,重新路由步骤才会生效0分配给交叉费用
退货:
真的如果启用了重路由功能,否则
另请参阅:
setReroutingEnabled(布尔值)

获取首选主干段计数

公共int获取首选主干段计数()
返回具有相同方向的选定主干线段的最大数目。

此设置定义由主干计算的相同方向的主干段数选择阶段。由于路由和复合阶段。

数字必须是大于或等于的值1

 
初始主干段越多,运行时间越长。不建议指定此设置的大值。
退货:
具有相同方向的骨干候选的最大数量
另请参阅:
setPreferredBackboneSegmentCount(int)

设置首选BackboneSegmentCount

公共空虚设置首选BackboneSegmentCount(int preferredCount)
指定具有相同方向的选定主干线段的最大数量。

此设置定义由主干计算的相同方向的主干段的数量选择阶段。由于路由和复合阶段。

数字必须是大于或等于的值1

 
初始主干段越多,运行时间越长。不建议指定此设置的值较大。
默认值:
默认值为2。
参数:
首选计数-具有相同方向的骨干候选的最大数量
投掷次数:
java.lang.Illegal参数异常-如果给定的首选数字小于1
示例图表:

1-生成的主干将高亮显示

2-生成的主干将高亮显示

获取最小主干段长度

公共双人间获取最小主干段长度()
返回主干段的首选最小长度。

该数字定义了由主干选择阶段计算的主干段的最小长度。由于路由和重组阶段的变化,一些最终主干段可能更短。

最小长度定义为大于或等于1

 
最小长度应至少与节点之间的典型距离一样大,以避免小型主干段。根据图表的边界框
退货:
主干段的首选最小长度
另请参阅:
设置最小骨架分段长度(双)

设置最小主干段长度

公共空虚设置最小主干段长度(双倍最小长度)
指定主干线段的首选最小长度。

该数字定义了由主干选择阶段计算的主干段的最小长度。由于路由和重组阶段的变化,一些最终骨干段可能更短。

最小长度定义为大于或等于1

 
最小长度应至少与节点之间的典型距离一样大,以避免小型主干段。根据图表的边界框
默认值:
默认值为100.0。
参数:
最小长度-主干段的首选最小长度
投掷次数:
java.lang.Illegal参数异常-如果给定的最小长度小于1
示例图表:

100

300

获取最小总线连接计数

公共int获取最小总线连接计数()
返回主干段必须具有的最小总线连接数。

如果主干网段的连接较少,则将其删除,受影响的节点将连接到另一个主干段。

最小连接计数的值必须大于或等于1

 
最小计数为4是小图形的好选择。对于较大的图形,较大的计数可能是合理的。
 
此设置仅在路由和重组阶段考虑不影响初始主干段的选择。
退货:
每个主干段必须具有的最小总线连接数
另请参阅:
setMinimumBusConnectionsCount(int)

设置最小总线连接计数

公共空虚设置最小总线连接计数(int minimumCount)
指定主干段必须具有的最小总线连接数。

如果主干网段的连接较少,则将其删除,受影响的节点将连接到另一个主干段。

最小连接计数的值必须大于或等于1

 
最小计数为4对于小型图形来说是一个不错的选择。对于较大的图形,较大的计数可能是合理的。
 
此设置仅在路由和重组阶段考虑不影响初始主干段的选择。
默认值:
默认值为3。
参数:
最小计数-每个主干段必须具有的最小总线连接数
投掷次数:
java.lang.Illegal参数异常-如果给定的最小计数小于1
示例图表:

2-生成两个主干(在本例中)

6-导致所有节点都连接到一个主干网(在本例中)

正在删除共线折弯

公共布尔值正在删除共线折弯()
指定是否从布局中删除共线折弯。

共线折弯是指与前一个折弯和后一个折弯位于公共线上的折弯。

如果一条边具有共线弯曲,则另一条边在此点具有实际弯曲,即弯道位置是公共汽车的交叉口。因此,它可能对某些应用程序有利保持这种弯曲。

退货:
真的如果删除共线折弯,否则
另请参阅:
setRemovingCollinerBends(布尔值)

设置删除共线折弯

公共空虚设置删除共线折弯(布尔删除共线折弯)
指定是否从布局中删除共线折弯。

共线折弯是位于与其前任折弯和后续折弯的公用线上的折弯。

如果一条边具有共线弯曲,则另一条边在此点具有实际弯曲,即弯道位置是公共汽车的交叉口。因此,它可能对某些应用程序有利保持这种弯曲。

默认值:
默认值为true。
参数:
拆除共线弯管-真的如果应拆除共线弯管,否则

获取选定边Dp键

公共java.lang.Object获取选定边Dp键()
返回注册密钥数据提供程序用于将边缘标记为挑选出来的

如果范围设置为范围_ UBSET,仅为注册的边数据提供程序收益真的将被路由。所有其他边缘将被视为具有固定路线。

退货:
这个数据提供程序边选择键
另请参阅:
setSelectedEdgesDpKey(对象)

设置所选边DpKey

公共空虚设置所选边DpKey(java.lang.Object键)
指定要注册的密钥数据提供程序用于将边缘标记为挑选出来的

如果范围设置为范围_ UBSET,仅注册的边缘数据提供程序收益真的将被路由。所有其他边缘将被视为具有固定路线。

默认值:
默认值为边缘_ UBSET_DPKEY
参数:
钥匙-的数据提供程序边选择键
投掷次数:
java.lang.Illegal参数异常-如果指定的键是无效的
另请参阅:
获取选定边DpKey()

getScope(获取范围)

公共字节getScope(获取范围)()
返回此路由算法的范围,该算法确定路由哪些边。

退货:
预定义范围值之一
另请参阅:
setScope(字节)

setScope(设置范围)

公共空虚setScope(设置范围)(字节范围)
设置此布管算法的范围,该算法用于确定布管的边。

默认值:
默认值为范围_全部
参数:
范围-预定义范围值之一
投掷次数:
java.lang.Illegal参数异常-如果给定未知范围

设定属性

公共布尔值设定属性(java.lang.String键,java.lang.Object值)
提供对仅用于内部目的的特定于实现的属性的访问。

参数:
钥匙-属性的键
价值-要与键关联的值

©版权所有2000-2022,
yWorks股份有限公司
保留所有权利。