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

エディタで開いているモデルを取得する

アクティブなエディタのモデルを取得する

アクティブなエディタ (最後にフォーカスがあたったエディタ) は、IWorkspaceWindowオブジェクトのEditorPage.CurrentEditorView.Editorプロパティを用いて取得できます。取得したIEditorオブジェクトに対し、Modelプロパティを用いてモデルを取得できます。

public void GetModelInEditor(ICommandContext c, ICommandParams p)
{
IEditor editor = c.App.Window.EditorPage?.CurrentEditorView?.Editor;
if (editor == null) {
c.App.Window.UI.ShowMessageBox("エディタを表示させてから実行してください。");
return;
}

var model = editor.Model;
c.App.Output.WriteLine("デフォルト", "編集対象モデル: " + model.Name);
c.App.Output.WriteLine("デフォルト", " 編集中のビュー: " + editor.ViewDefinition.DisplayName);
c.App.Output.WriteLine("デフォルト", " エディタの種類: " + editor.EditorType);
}
備考

上記のサンプルコードでは試験的に実装された次のAPIを使用しています。

  • IViewDefinition.DisplayName プロパティ

これらのAPIは品質保証しておらず、API仕様にも未記載のものです。ご利用される場合はユーザー様の責任でご利用ください。

メインエディタとサブエディタのモデルを取得する

メインエディタを取得するには、IEditorPageオブジェクトのMainEditorViewプロパティ、サブエディタを取得するには、SubEditorViewプロパティを用います。

public void GetModelInMainSubEditors(ICommandContext c, ICommandParams p)
{
IEditorPage editorPage = c.App.Window.EditorPage;

// メインエディタとサブエディタで開いている2つのモデルを取得します
var mainEditor = editorPage?.MainEditorView?.Editor;
var subEditor = editorPage?.SubEditorView?.Editor;
if ((mainEditor == null) || (subEditor == null))
{
c.App.Window.UI.ShowMessageBox("メインエディタとサブエディタにモデルを表示させてから実行してください。");
return;
}

c.App.Output.WriteLine("デフォルト", "メインエディタで編集中のモデル: " + mainEditor.Model.Name);
c.App.Output.WriteLine("デフォルト", "サブエディタで編集中のモデル: " + subEditor.Model.Name);
}