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

シェイプの表示状態を変更する

シェイプを表示する

複数のシェイプを表示する場合、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 オブジェクトの ShowShapesHideShapes メソッドの利用を検討してください。