ポートの位置を変更する
ポートの位置を変更する
ポートの位置を変更するにはIPort
オブジェクトのSetLocationRatio
メソッドを用います。ポートの位置は0~1の間のdouble値の割合で設定します。
public void SetLocationRatio(ICommandContext c, ICommandParams p)
{
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;
if (diagram == null) return;
// 選択されているノードを取得します
var nodes = diagram.GetSelectedShapes().OfType<INode>();
// ノードごとに処理をします
foreach (INode node in nodes)
{
IPortCollection ports = node.Ports;
int count = 0;
int max = ports.Count();
// ノードの持つポートごとに処理をします
foreach (IPort port in ports)
{
double ratio = (double)count / (double)max;
port.SetLocationRatio(ratio);
c.App.Output.WriteLine("sample", $"ポート位置の割合 : {port.LocationRatio}");
count++;
}
}
}
ポートを整列する
ポートを整列するにはINode
オブジェクトのRelocatePorts
を用います。PortOrientation
列挙型で整列対象の辺を指定できます。指定できる列挙値は以下です。
列挙値 | 整列対象 |
---|---|
Top | 上辺 |
Left | 左辺 |
Bottom | 下辺 |
Right | 右辺 |
All | 4辺すべて |
public void RelocatePorts(ICommandContext c, ICommandParams p)
{
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;
if (diagram == null) return;
var nodes = diagram.GetSelectedShapes().OfType<INode>();
foreach (INode node in nodes)
{
// ノードのポートを整列します
node.RelocatePorts(PortOrientation.All);
}
}