シェイプの表示状態を変更する
シェイプを表示する
複数のシェイプを表示する場合、IDiagram
オブジェクトの ShowShapes
メソッドを用います。
public void ShowShapes(ICommandContext c, ICommandParams p)
{
// 現在表示しているダイアグラムを取得します
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;
if (diagram == null)
{
// ダイアグラムを表示していない場合は処理を終了します
c.App.Output.WriteLine("sample", "ダイアグラムを表示していません。");
return;
}
// ダイアグラムに存在するシェイプを取得します
INodeCollection nodes = diagram.Nodes;
if (!nodes.Any())
{
// ダイアグラム上にノードが存在しない場合、処理を終了します
c.App.Output.WriteLine("sample", "現在表示しているダイアグラム上にシェイプが存在しません。");
return;
}
// ダイアグラム上で非表示となっているシェイプを表示します
c.App.Output.WriteLine("sample", $"以下のモデルに対応するシェイプを表示します。");
foreach (INode node in nodes.Where(n => !n.IsVisible))
{
c.App.Output.WriteLine("sample", $" - {node.Model.Name}");
// 単一のシェイプを表示したい場合は、IDiagram の ShowShape メソッドを用います。
// diagram.ShowShape(node);
}
diagram.ShowShapes(nodes);
}
シェイプを非表示にする
複数のシェイプを非表示にする場合、IDiagram
オブジェクトの HideShapes
メソッドを用います。
public void HideShapes(ICommandContext c, ICommandParams p)
{
// 現在表示しているダイアグラムを取得します
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;
// 現在選択しているシェイプを取得します
IEnumerable<INode> nodes = diagram.GetSelectedShapes().OfType<INode>();
// ダイアグラ ム上のシェイプを非表示にします
c.App.Output.WriteLine("sample", $"以下のモデルに対応するシェイプを非表示にします");
foreach (INode node in nodes)
{
c.App.Output.WriteLine("sample", $" - {node.Model.Name}");
// 単一のシェイプを非表示にしたい場合は、IDiagram の HideShape メソッドを用います。
// diagram.HideShape(node);
}
diagram.HideShapes(nodes);
}
注意
IShape
オブジェクトの SetVisible
メソッドでもシ ェイプの表示状態を変更することができますが、複数のシェイプの表示状態を変更する場合、性能問題が生じるため IDiagram
オブジェクトの ShowShapes
、HideShapes
メソッドの利用を検討してください。