Main Content

Modify Properties and Call Functions of Stateflow Objects

Stateflow® API objects have properties that correspond to the values you set in the Stateflow Editor. For example, to use the editor to change the position of a state, you click and drag the state. With the Stateflow API, you change the position of a state by modifying the Position property of the corresponding Stateflow.State object:

st.Position = [10 20 100 80];

Additionally, object functions provide services that correspond to actions in the Stateflow Editor. For example, to use the editor to open the Properties dialog box for a transition, you right-click the transition and select Properties. With the Stateflow API, you open this dialog box by calling the dialog function of the corresponding Stateflow.Transition object:

dialog(tr);

Call Object Functions

To call a function of an API object, use standard function-call notation. For example, to open the Chart properties dialog box, call the dialog function of the corresponding Stateflow.Chart object ch:

dialog(ch)

Access Properties by Using Dot Notation

To access a property of an API object, use dot notation. For example, to see the value of the StateMachineType property for the Stateflow.Chart object ch, enter:

ch.StateMachineType

Similarly, to change the action language of the chart, modify its ActionLanguage property:

ch.ActionLanguage = "MATLAB";

To access the subproperties of an API property, you can nest multiple property names in a single expression that uses dot notation. For example, you can set an entry breakpoint on a chart by changing the subproperty Debug.Breakpoints.OnEntry of the corresponding Stateflow.Chart object:

ch.Debug.Breakpoints.OnEntry = true;

When a property or function returns another API object, you can also access the properties and functions for the second object by using nested dot notation. For example, the Machine property of a Stateflow.Chart returns the Stateflow.Machine object that contains the corresponding chart. To access the Name property of this Stateflow.Machine object, enter the expression:

machineName = ch.Machine.Name;

Similarly, the defaultTransitions function returns an array of Stateflow.Transition objects that correspond to the default transitions in the chart. If the chart contains only one default transition, you can retrieve its label by entering:

label = defaultTransitions(ch).LabelString;

If the chart contains more than one default transition, you must first store the array and then use an array index to retrieve each label:

transitions = defaultTransitions(ch);
label1 = transitions(1).LabelString;
label2 = transitions(2).LabelString;

Get and Set the Values of Multiple Properties

You can access multiple properties of an API object in a single command by calling the get function. For example, to obtain the name and description for the Stateflow.Chart object ch, enter:

chartInfo = get(ch,{"Name","Description"});

You can also use the get to access properties of multiple API objects. For example, this command returns a cell array that contains the names and descriptions of the Stateflow.Chart objects in the array chartArray:

chartInfo = get(chartArray,{"Name","Description"});

Similarly, you can change the value of multiple properties by calling the set function. For example, to change the name and description of the Stateflow.Chart object ch, enter:

set(ch,{"Name","Description"},{"Rectifier","Half-wave rectifier."})

To set the names and descriptions of the Stateflow.Chart objects in the array chartArray, enter:

set(chartArray,{"Name","Description"},chartInfo)
In this command, chartInfo must be an N-by-2 cell array, where N equals the number of charts in chartArray. The first column in chartInfo contains the new chart names, and the second column contains the new descriptions.

See Also

Functions

Objects

Related Topics