メインコンテンツまでスキップ

コネクタのベンドを編集する

コネクタにベンドを追加する

コネクタにベンドを追加するには IConnector オブジェクトの AddBend メソッドを用います。
指定した座標に関連元シェイプを起点として一番最後にベンドが追加されます。

public void AddBend(ICommandContext c, ICommandParams p)
{
// 現在表示しているダイアグラムを取得します
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;
if (diagram == null)
{
// ダイアグラムを表示していない場合は処理を終了します
c.App.Output.WriteLine("sample", "ダイアグラムを表示していません。");
return;
}

// ダイアグラム上で選択しているコネクタを取得します
IConnector connector = diagram.GetSelectedShapes().OfType<IConnector>().FirstOrDefault();
if (connector == null)
{
// 選択していない場合は処理を終了します
c.App.Output.WriteLine("sample", "コネクタが選択されていません。");
return;
}

// コネクタに対し、座標を指定しベンドを追加します
connector.AddBend(100, 150);
}

複数のベンドを追加する場合、 IConnector オブジェクトの AddBends メソッドを用います。
System.Drawing.Point で指定した座標順に関連元シェイプを起点として一番最後にベンドが追加されます。

public void AddBends(ICommandContext c, ICommandParams p)
{
// 現在表示しているダイアグラムを取得します
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;

// ダイアグラム上で選択しているコネクタを取得します
IConnector connector = diagram.GetSelectedShapes().OfType<IConnector>().FirstOrDefault();
if (connector == null)
{
// 選択していない場合は処理を終了します
c.App.Output.WriteLine("sample", "コネクタが選択されていません。");
return;
}

// コネクタに対し、複数の座標を指定しベンドを追加します
System.Drawing.Point position1 = new System.Drawing.Point(0, 50);
System.Drawing.Point position2 = new System.Drawing.Point(50, 50);
connector.AddBends(new []{ position1, position2 });
}

コネクタのベンドを取得する

コネクタのベンドを取得するには IConnector オブジェクトの GetBends メソッドを用います。
コネクタの関連元シェイプを起点とした順番でベンドを取得できます。

public void GetBends(ICommandContext c, ICommandParams p)
{
// 現在表示しているダイアグラムを取得します
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;

// ダイアグラム上で選択しているコネクタを取得します
IConnector connector = diagram.GetSelectedShapes().OfType<IConnector>().FirstOrDefault();
if (connector == null)
{
// 選択していない場合は処理を終了します
c.App.Output.WriteLine("sample", "コネクタが選択されていません。");
return;
}

// コネクタが持つベンドの座標を取得します
int bendCount = 1;
IEnumerable<System.Drawing.Point> bendPositions = connector.GetBends();
foreach(System.Drawing.Point bendPosition in bendPositions)
{
c.App.Output.WriteLine("sample", $"ベンド{bendCount}の座標 X:{bendPosition.X} Y:{bendPosition.Y}");
bendCount++;
}
}

コネクタからベンドを削除する

コネクタが持つベンドを削除するには IConnector オブジェクトの ClearBends メソッドを用います。
コネクタが持つ全てのベンドが削除されます。ベンドを指定して削除することはできません。

public void ClearBends(ICommandContext c, ICommandParams p)
{
// 現在表示しているダイアグラムを取得します
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;

// ダイアグラム上で選択しているコネクタを取得します
IConnector connector = diagram.GetSelectedShapes().OfType<IConnector>().FirstOrDefault();
if (connector == null)
{
// 選択していない場合は処理を終了します
c.App.Output.WriteLine("sample", "コネクタが選択されていません。");
return;
}

// コネクタが持つベンドを全て削除します
connector.ClearBends();
}