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)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.