Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

slreportgen.finder.DiagramFinder クラス

パッケージ: slreportgen.finder
スーパークラス:

ブロック線図のファインダーを作成する

説明

Simulink® ブロック線図と Stateflow® チャートを検索します。

作成

finder = DiagramFinder(container) は、指定された container 内のコメントのない Simulink ブロック線図と Stateflow チャート図をすべて既定で検索するファインダーを作成します。特定タイプのブロック線図を含めるように検索を制約するには、このファインダーのプロパティを使用します。

メモ

このファインダーは、検索モードまたは反復子モードのいずれかで動作可能です。検索モードでは、その find メソッドを使用して、検索結果を結果の配列として返します。反復子モードでは、その hasNext メソッドと next メソッドを使用して、検索結果を 1 つずつ返します。多数のモデル参照をもつモデルを検索する場合は、反復子モードを使用します。反復子モードではモデルのコンパイルと検索の後にモデルを閉じますが、検索モードでは検索したすべてのモデルを開いたままにします。開いたモデルが多数あると、すべてのシステム メモリが消費され、レポート生成が遅くなる可能性があります。反復子モードは検索モードより遅いため、他のモデルをほとんど、またはまったく参照しないモデルを検索するには検索モードを使用します。

finder = DiagramFinder(Name=Value) は、名前と値のペアを使用してプロパティを設定します。複数の名前と値のペアの引数を任意の順序で指定できます。

入力引数

すべて展開する

Container プロパティを参照してください。

プロパティ

すべて展開する

検索の対象となるモデル コンテナー。次のいずれかの値として指定します。

  • Simulink モデル、サブシステム、またはモデル ブロックのハンドル

  • Simulink モデル、サブシステム、またはモデル ブロックへのパス

  • Stateflow Chart ブロックのハンドル

  • Stateflow Chart ブロックへのパス

  • Stateflow チャート ID

  • Stateflow チャート オブジェクト

システム ブロック線図の検索の深さ。inf または正の整数として指定します。SearchDepth は、ブロック線図コンテナーをブロック線図について検索するレベルの深さを指定します。すべてのレベルを検索するには、inf を使用します。

マスク サブシステムを検索するかどうかの選択。logical として指定します。このプロパティが true の場合、ファインダーはブロック線図コンテナー内のマスク Subsystem ブロックを検索します。指定された SearchDepth まで検索し、見つかったブロック線図を検索結果に含めます。

参照モデルを検索するかどうかの選択。logical として指定します。このプロパティが true の場合、ファインダーはブロック線図コンテナー内で参照されるモデルを検索します。指定された SearchDepth まで検索し、見つかったブロック線図を検索結果に含めます。

Simulink ライブラリ リンクを検索するかどうかの選択。logical として指定します。このプロパティと IncludeMaskedSubsystems がいずれも true の場合、ファインダーはブロック線図コンテナー内にある、Simulink ライブラリの Subsystem ブロックとマスク Subsystem ブロックの両方へのリンクを検索します。指定された SearchDepth まで検索し、見つかったブロック線図を検索結果に含めます。このプロパティが trueIncludeMaskedSubsystemsfalse の場合、ファインダーは Simulink ライブラリの Subsystem ブロックへのリンクのみを検索します。

ユーザー ライブラリ リンクを検索するかどうかの選択。logical として指定します。このプロパティが trueIncludeMaskedSubsystems プロパティが true の場合、ファインダーはブロック線図コンテナー内にある、ユーザー ライブラリの Subsystem ブロックとマスク Subsystem ブロックへのリンクを検索します。指定された SearchDepth まで検索し、見つかったブロック線図を検索結果に含めます。このプロパティが trueIncludeMaskedSubsystems プロパティが false の場合、ファインダーはユーザー ライブラリの Subsystem ブロックへのリンクのみを検索します。

コメントアウトされたブロック線図を検索結果に含めるかどうか。logical として指定します。false の場合、コメントアウトされたブロック線図は検索結果から除外されます。

ブロック線図を検索するためのバリアント。string または文字ベクトルとして指定します。既定値は Active です。有効な値は次のとおりです。

  • All — すべてのバリアント

  • Active — アクティブなバリアントのみ

  • ActivePlusCode — すべてのアクティブなバリアントとコード バリアント

検索対象とするオブジェクトのプロパティ。名前と値のペアの cell 配列として指定します。ファインダーは、指定のプロパティが指定の値をもつオブジェクトのみを返します。

例: finder.Properties = {'Gain','5'}

モデルを閉じるかどうか。true または false として指定します。true の場合、ファインダーの next メソッドは、検索対象の次のモデルに移動する前に現在開いているモデルを閉じます。モデルを閉じることで、多数のモデルを参照するモデルを検索する際にメモリが過剰に消費されるのを防止します。

メモ

ファインダーの find メソッドはこのプロパティを無視し、すべての参照モデルを開いたままにします。このため、多数のモデル参照があるモデルの検索では find メソッドを使用すべきではありません。

メソッド

results = find(finder) は、指定された container 内でブロック線図を検索します。finderslreportgen.finder.DiagramFinder オブジェクトです。results は、それぞれにこのメソッドで検出されたブロック線図が含まれる slreportgen.finder.DiagramResult オブジェクトの配列です。この配列をレポートまたはレポーターに追加すると、これに含まれるすべてのブロック線図のイメージが追加されます。このメソッドの results を追加できるレポートは、slreportgen.report.Report タイプのレポートか、または slreportgen.report.Chapter レポーターのような別のレポーター オブジェクトです。

メモ

find メソッドは、最上位モデルとそれが参照するすべてのモデルを開いてコンパイルします。このメソッドは検索の完了時にすべてのモデルを開いたままにするため、多数のモデル参照を含むモデルについてのレポートは遅くなる場合があります。この低速化を避けるには、hasNext メソッドと next メソッドを使用して、こうしたモデルを検索します。

tf = hasNext(finder) は、ファインダーが検索するコンテナーに少なくとも 1 つのブロック線図が含まれているかどうかを判定します。コンテナーに少なくとも 1 つのブロック線図がある場合、hasNext メソッドはそのブロック線図を、next メソッドが返す次のブロック線図としてキューに入れます。その後、hasNext メソッドは true を返します。next メソッドを使用してこのブロック線図を取得します。後続の呼び出しで、hasNext メソッドは、next によってまだ取得されていないブロック線図がコンテナーにあるかどうかを判定します。next メソッドの取得するブロック線図をキューに入れ、true を返します。取得するブロック線図がなくなったら、このメソッドは false を返します。コンテナーでブロック線図を順次検索するには、while ループ内で hasNext メソッドを next メソッドと共に使用します。

メモ

現在の結果が、現在のモデルに対する検索キューの最後の結果であり、AutoCloseModel プロパティが true である場合、このメソッドは次のモデルを開く前に現在のモデルを閉じます。これによって検索時間は長くなりますが、多数の他のモデルを参照する最上位モデルを検索する際には、メモリ消費が削減されます。モデルで多数の他のモデルを参照しない場合は、検索の速度を上げるために AutoCloseModel プロパティを false に設定するか、find メソッドを使用します。

result = next(finder) は、次の検索の resulthasNext メソッドで作成された結果キューに返します。検索結果には、結果のブロック線図が含まれます。この result オブジェクトをレポートまたはレポーターに追加すると、そのブロック線図用にブロック線図レポーターが追加されます。

コピーのセマンティクス

ハンドル。ハンドル クラスがコピー操作に与える影響の詳細については、オブジェクトのコピーを参照してください。

すべてのブロック線図と Stateflow チャートの検索

slrgex_sf_car モデル内のすべてのブロック線図のイメージを含むレポートを作成します。この例で使用するモデルにはモデル参照はありませんが、反復子モードを使用して構文を説明しています。

import mlreportgen.report.*
import slreportgen.report.*
import slreportgen.finder.*

model_name = 'slrgex_sf_car';
load_system(model_name);
rpt = slreportgen.report.Report('output','pdf');
add(rpt, TitlePage(Title=sprintf('%s Systems',model_name)));

finder = DiagramFinder(model_name); 
while hasNext(finder)
    add(rpt,next(finder));
end    

close(rpt);
close_system(model_name);
rptview(rpt);

サブシステムのすべてのブロック線図の検索

slrgex_sf_car モデルを開き、その Engine サブシステム内のすべてのブロック線図を検索します。サブシステムへのパスか、またはそのハンドルを使用します。その後、結果をレポートに含めることができます。

slrgex_sf_car

% Use path 
enginePath = "slrgex_sf_car/Engine";
finder = slreportgen.finder.DiagramFinder(enginePath);
results = find(finder);

% or use handle
engineHandle = get_param("slrgex_sf_car/Engine","Handle");
finder = slreportgen.finder.DiagramFinder(engineHandle);
results_enginehandle = find(finder);

特定のプロパティ値をもつブロック線図要素の検索

特定のプロパティ値をもつ要素を検索するには、slreportgen.finder.DiagramElementFinder クラスのオブジェクトを使用します。f14 モデルを開き、値 Zw をもつ Gain ブロックをすべて検索します。

model = 'f14';
load_system(model);
finder = slreportgen.finder.DiagramElementFinder(model)
finder.Properties = {'Gain','Zw'};
results = find(finder);

バージョン履歴

R2017b で導入