Создание и удаление объектов Stateflow

Stateflow® API состоит из объектов, которые представляют графические и неграфические объекты диаграммы Stateflow. Для примера объекты API типа Stateflow.State и Stateflow.Transition представление состояний и переходов на диаграмме Stateflow.

Создание объектов Stateflow

Объекты Stateflow API организованы в иерархии ограничений, описанной в Иерархии объектов Stateflow API. Чтобы создать объект Stateflow в качестве дочернего объекта родительского объекта, начните с доступа к родительскому объекту. Затем используйте родительский объект в качестве входного параметра к функции, которая создает th дочерний объект. Например, чтобы добавить новую Stateflow.State объект в Stateflow.Chart объект, выполните следующие шаги:

  1. Доступ к родительскому объекту ch как описано в разделе «Доступ к объектам на диаграмме Stateflow».

  2. Вызовите Stateflow.State функция, использующая родительский объект ch как аргумент.

    st = Stateflow.State(ch);
  3. Отобразите новое состояние в редакторе Stateflow путем вызова view функция. Используйте Stateflow.State объект как аргумент функции.

    view(st)

  4. Внесите изменения в состояние путем изменения свойств Stateflow.State объект. Для примера можно задать имя и положение состояния путем изменения Name и Position свойства. Чтобы задать Position свойство задает новую позицию как вектор с четырьмя элементами, в котором первые два значения являются (x, y) координатами верхнего левого угла состояния, а последние два значения являются шириной и высотой состояния.

    st.Name = 'A';
    st.Position = [30 30 90 60];

    Можно также соединить новое состояние с другими состояниями или соединениями на графике путем создания Stateflow.Transition объект и установка его Source или Destination свойства для st.

Пример добавления состояний, переходов и объектов данных к графику см. в разделе Создание графиков при помощи Stateflow API.

Содержимое графического объекта

Когда вы создаете графический объект, такой как состояние, функция, прямоугольник, соединение или аннотация, он появляется в левом верхнем углу его родительского объекта. Можно переместить графический объект в другое место, изменив его Position свойство, как объяснено в предыдущем примере.

Когда вы создаете переход, он появляется в левом верхнем углу графика или субдиаграммы, где можно просмотреть родительский объект. Можно переместить переход в другое место путем установки его источника и назначения или путем изменения его SourceEndPoint, MidPoint, и DestinationEndPoint свойства.

Графический объект должен располагаться внутри контура его родительского элемента. Изменение положения графического объекта может изменить его родительский элемент или привести к неопределенной родительской ошибке. Можно проверить это условие, исследуя значение BadIntersection свойство объекта. Это свойство true если ребра графического объекта перекрываются с другим графическим объектом. Установите положение и размер объектов так, чтобы они были отделены от других объектов.

Вы не можете переместить объект в состоянии, кубе или графической функции на другой уровень иерархии графика путем изменения его положения. Вместо этого скопируйте и вставьте объект из одного родительского объекта в другой. Затем удалите исходный объект. Для получения дополнительной информации смотрите Копировать и Вставить по Группировке и Копировать и Вставить массив объектов.

Защита неграфических объектов

Когда вы создаете неграфические объекты, такие как данные, события или сообщения, они появляются в Model Explorer и в панели символов на иерархическом уровне их родительского объекта. Расположение родительского объекта можно также увидеть, осмотрев Path свойство объекта.

Вы не можете программно изменить родительский элемент неграфического объекта. Вместо этого используйте Model Explorer. Для получения дополнительной информации смотрите Использование Model Explorer с объектами Stateflow.

Удаление объектов Stateflow

Вы можете удалить большинство объектов на диаграмме Stateflow, вызвав функцию delete. Например, чтобы удалить Stateflow.State st объекта, введите:

delete(st);

После удаления состояния переменная st все еще существует в MATLAB® рабочая область, но она больше не связана с состоянием.

Примечание

Вы не можете использовать delete функция для удаления объектов следующих типов:

  • Simulink.Root

  • Stateflow.Machine

  • Stateflow.Chart

  • Stateflow.EMChart

  • Stateflow.StateTransitionTableChart

  • Stateflow.TruthTableChart

  • Stateflow.Clipboard

  • Stateflow.Editor

См. также

Функции

Объекты

Похожие темы