エディタで開いているモデルを取得する
アクティブなエディタのモデルを取得する
アクティブなエディタ (最後にフォーカスがあたったエディタ) は、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("デフォルト", "