レベル範囲制約 (HL)

レイアウト・アルゴリズムのステップ 1 (レベル付けフェーズ) で、ノードはレベルに分割されます。 これらのレベルは 0 から順にインデックス付けされます。 例えば、方向選択が下向きの場合は、レベル・インデックスが 0 のノードは一番上の水平レベル線に配置され、 レベル・インデックスが大きいノードはレベル・インデックスが小さいノードよりも下の位置に配置されます (レベル・インデックスおよび位置インデックス を参照)。 レイアウト・アルゴリズムはこれらのレベル・インデックスを自動的に計算します。
一部のノードに対してレベル・インデックスの範囲を指定することで、レベルがどのように分割されるかを選択できます。 ノードは、インデックスが指定範囲内にあるレベルに配置されます。 レベルの最小インデックスおよび最大インデックスを指定する必要があります。
レベルの最小インデックスおよび最大インデックスを指定するには、以下のようにします。
以下を呼び出します。
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, 7));
ノードをちょうどレベル 5 に配置する場合は、以下を呼び出します。
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, 5));
または、以下を呼び出すこともできます。
layout.setSpecNodeLevelIndex(node, 5);
これは同じ意味になります。
ノードがレベル 5 以上になるように強制する場合は、UNSPECIFIED を最大レベルとして設定します。
以下を呼び出します。
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED));
ノードがレベル 5 以下 (すなわち、レベル 0 から 5) になるように強制する場合は、UNSPECIFIED を最小レベルとして設定します。次に例を示します。
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED, 5));
この特別なケースでは、レベル・インデックスは 0 から開始するため、ゼロ (0) を最小レベルとして使用することもできます。
複数のノードを持つグループに制約を一度に適用できます。 これは、グループに属する各個別ノードに制約を指定するのと同じ効果ですが、よりメモリー効率に優れており、また簡便な方法です。 例えば、3 つのノードを持つグループをレベル 5 から 7 に強制する場合は、以下のようにします。
これらのパラメーターを指定するには、以下のようにします。
3 つのノードの NodeGroup オブジェクトを作成して (ノード・グループ を参照)、以下のように、 それを制約に追加します。
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(nodeGroup, 5, 7));