独自にモデルを検索する
APIからNext Designの検索機能を利用することができます。検索機能を利用するには、以下のような方法を用います。
- IApplicationの- Searchプロパティに対し- ISearchManager.Createメソッドを用いて検索オブジェクトを作成します。
- 1.で取得した検索オブジェクトに対し、ISearchオブジェクトのAddSearchResultメソッドを用いて検索結果を追加します。
- 検索が終了したら、1.で取得した検索オブジェクトに対し、ISearchオブジェクトのEndSearchメソッドを呼び出します。これにより、Next Designの画面に検索結果として表示されます。
public void SearchModels(ICommandContext c, ICommandParams p)
{
    // モデル名にキーワードが含まれるモデルを検索します
    const string KEYWORD = "TBD";
    const string FIELD_NAME = "Name";
    // 全モデルを取得します
    var allModels = c.App.Workspace.CurrentProject.GetAllChildren();
    // 検索を開始します
    var search = c.App.Search.Create();
    search.BeginSearch("モデル名のキーワード検索", "match");
    foreach (IModel model in allModels)
    {
        var fieldString = model.GetFieldString(FIELD_NAME);
        if (fieldString.Contains(KEYWORD)) {
            // キーワードにヒットすれば検索結果を登録します
            search.AddSearchResult(model, FIELD_NAME, $"モデル名: {model.Name}");
        }
    }
    // 検索を終了します
    search.EndSearch();
    // 検索結果を出力します
    foreach (ISearchResultEntry result in App.Search.AllResults)
    {
        c.App.Output.WriteLine("sample", $"{result.Type}, {result.Fields}, {result.Message}, {result.Model.ModelPath}");
    }
}