Main Content

slreportgen.finder.StateFinder クラス

名前空間: slreportgen.finder

Stateflow ステートの検索

説明

Stateflow® ステートを検索します。

slreportgen.finder.StateFinder クラスは handle クラスです。

作成

説明

finder = StateFinder(diagram) は、指定されたチャート diagram 内でコメント解除された Stateflow ステートを既定ですべて検索するファインダーを作成します。検索を特定タイプのチャート図に制約するには、このファインダーのプロパティを使用します。

メモ

このファインダーには、検索結果の取得方法として次のオプションが用意されています。

  • 検索結果を配列として返すには、find メソッドを使用します。結果をレポートに直接追加するか、for ループで結果を処理します。

  • 一度に 1 つずつ結果を反復処理するには、while ループで hasNext メソッドと next メソッドを使用します。

これらのオプションに、パフォーマンス上の差はありません。

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

入力引数

すべて展開する

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

プロパティ

すべて展開する

検索するチャート図。次のいずれかの値として指定します。

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

  • Stateflow Chart ブロックへのパス

  • Stateflow チャート ID

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

コメントアウトされたステートを検索結果に含めるかどうかの選択。logical として指定します。false の場合、コメントアウトされたステートは検索結果から除外されます。

Container を検索するレベルの数。次のいずれかの値として指定します。

説明
[] (既定)

チャートの最上位から参照できる要素のみを検索します。検索には、入れ子形式のステート内にある要素が含まれますが、サブチャート内の要素は除外されます。

非負の整数

指定された数のレベルを検索します。

inf

すべてのレベルを検索します。

ファインダーの結果の並べ替えメソッド。次のいずれかの値として指定します。

説明
"none"結果を並べ替えません。
"alphabetical"結果を名前のアルファベット順に並べ替えます。
"systemAlpha"結果を親システム名のアルファベット順に並べ替えます。
"depth"結果をモデルの階層構造の深さ順に並べ替えます。並べ替えられたリストの最初の結果は、階層内で最上位のオブジェクトのものです。たとえば、モデルとそのサブシステムは、 myModelmyModel/subsystem1myModel/subsystem1/nestedSubststem の順に並べ替えられます。

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

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

メソッド

すべて展開する

すべて折りたたむ

sf_car モデルの shift_logic チャート内のすべての Stateflow ステートのプロパティを含むレポートを作成します。

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

model_name = "sf_car";
load_system(model_name);

rpt = slreportgen.report.Report("output","pdf");
open(rpt)

add(rpt, TitlePage(Title="States in "+model_name+" Model"));
add(rpt, TableOfContents);

chartFinder = ChartDiagramFinder(model_name);
charts = find(chartFinder);
while hasNext(chartFinder)
    diagram = next(chartFinder);
    stFinder = StateFinder(diagram.Object);
    states = find(stFinder);
    if ~isempty(states)
        chapter = Chapter(Title=diagram.Name);
        add(chapter,diagram)
        for state = states
           sect = Section(Title="States");       
           add(sect,states)
        end
        add(chapter,sect)
        add(rpt,chapter)
    end
end

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

バージョン履歴

R2017b で導入