Stateflow.Clipboard

Буфер обмена, чтобы скопировать и вставить объекты Stateflow

    Описание

    Используйте Stateflow.Clipboard копируемый объект и вставка графические и неграфические объекты в рамках того же графика, между графиками в том же Simulink® модель, или между графиками в различных моделях.

    Создание

    Существует только один Stateflow.Clipboard объект, который автоматически создан, когда вы запускаете Stateflow®. Чтобы получить доступ к этому объекту, вызовите sfclipboard функция:

    clipboard = sfclipboard;

    Функции объекта

    copyСкопируйте массив объектов к буферу обмена
    pasteToВставьте объекты в буфер обмена к заданному контейнерному объекту

    Примеры

    свернуть все

    Состояние группы A и скопируйте его содержимое, чтобы строить диаграмму ch. Когда вы группируете состояние, поле или графическую функцию, можно скопировать и вставить все объекты, содержавшиеся в сгруппированном объекте, а также все отношения среди этих объектов. Этот метод является самым простым способом скопировать и вставить объекты программно. Если состояние не сгруппировано, копирование состояния не копирует ни одного своего содержимого.

    Stateflow chart with a hierarchy of states. The outer state is called A. It contains two inner states called A1 and A2.

    1. Найдите Stateflow.State возразите названному A в графике ch.

      sA = find(ch,'-isa','Stateflow.State','Name','A');
    2. Состояние группы A и его содержимое путем установки IsGrouped свойство для sA к true. Сохраните предыдущую настройку этого свойства, таким образом, можно вернуться к нему позже.

      prevGrouping = sA.IsGrouped;
      sA.IsGrouped = true;
    3. Поменяйте имя состояния к 'Copy_of_A'. Сохраните предыдущее имя, таким образом, можно вернуться к нему позже.

      prevName = sA.Name;
      newName = ['Copy_of_' prevName];
      sA.Name = newName;
    4. Доступ к объекту буфера обмена.

      cb = sfclipboard;
    5. Скопируйте сгруппированное состояние в буфер обмена.

      copy(cb,sA);
    6. Восстановите свойства состояний к их исходным настройкам.

      sA.IsGrouped = prevGrouping;
      sA.Name = prevName;
    7. Вставьте копию объектов от буфера обмена до графика.

      pasteTo(cb,ch);
    8. Настройте свойства состояний нового состояния.

      sNew = find(ch,'-isa','Stateflow.State','Name',newName);
      sNew.Position = sA.Position + [400 0 0 0];
      sNew.IsGrouped = prevGrouping;

      Chart showing result of pasting a copy of state A and its contents.

    Копия утверждает A1 и A2, наряду с переходом между ними, к новому состоянию в графике ch. Чтобы сохранить связи перехода и отношения включения между объектами, скопируйте все подключенные объекты целиком.

    Stateflow chart with a hierarchy of states. The outer state is called A. It contains two inner states called A1 and A2.

    1. Найдите Stateflow.State возразите названному A в графике ch.

      sA = find(ch,'-isa','Stateflow.State','Name','A');
    2. Добавьте новое состояние под названием B. Позволять вставить других объектов в B, преобразуйте новое состояние в субдиаграмму.

      sB = Stateflow.State(ch);
      sB.Name = 'B';
      sB.Position = sA.Position + [400 0 0 0];
      sB.IsSubchart = true;
    3. Создайте массив под названием objArray это содержит состояния и переходы в A состояния. Используйте функцию setdiff удалить A состояния от массива копируемых объектов.

      objArrayS = find(sA,'-isa','Stateflow.State');
      objArrayS = setdiff(objArrayS,sA);
      objArrayT = find(sA,'-isa','Stateflow.Transition');
      objArray = [objArrayS objArrayT];
    4. Доступ к объекту буфера обмена.

      cb = sfclipboard;
    5. Скопируйте объекты в objArray и вставьте их в субдиаграмму B.

      copy(cb,objArray);
      pasteTo(cb,sB);
    6. Вернитесь B к состоянию.

      sB.IsSubchart = false;
      sB.IsGrouped = false;
    7. Измените местоположение состояний и переходов в B.

      newStates = find(sB,'-isa','Stateflow.State');
      newStates = setdiff(newStates,sB);
      newTransitions = find(sB,'-isa','Stateflow.Transition');
      newOClocks = get(newTransitions,{'SourceOClock','DestinationOClock'});
      for i = 1:numel(newStates)
      newStates(i).Position = newStates(i).Position + [25 35 0 0];
      end
      set(newTransitions,{'SourceOClock','DestinationOClock'},newOClocks);

      Chart showing result of copying contents of state A and pasting them into state B.

    Смотрите также

    Функции

    Объекты

    Представлено до R2006a