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

独自にモデルを検索する

APIからNext Designの検索機能を利用することができます。検索機能を利用するには、以下のような方法を用います。

  1. IApplicationSearchプロパティに対しISearchManager.Createメソッドを用いて検索オブジェクトを作成します。
  2. 1.で取得した検索オブジェクトに対し、ISearchオブジェクトのAddSearchResultメソッドを用いて検索結果を追加します。
  3. 検索が終了したら、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}");
}
}