exponenta event banner

sfclipboard

Объект буфера обмена

Описание

пример

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

Примеры

свернуть все

Состояние группы 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