exponenta event banner

копия

Копирование массива объектов в буфер обмена

Описание

пример

copy(clipboard,objArray) копирует объекты в массив objArray в буфер обмена. Чтобы вставить скопированные объекты, используйте команду 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.

Входные аргументы

свернуть все

Буфер обмена, указанный как Stateflow.Clipboard объект.

Объекты для копирования, указанные как массив объектов API Stateflow. Массив должен содержать только графические объекты или только неграфические объекты.

Графические объекты включают в себя:

К неграфическим объектам относятся:

Копирование графических объектов также копирует Stateflow.Data, Stateflow.Event, и Stateflow.Message объектов, которые содержат графические объекты. При копировании нескольких графических объектов значение их Subviewer свойство должно быть одинаковым.

Совет

Для ведения соединений перехода и связей оболочки между скопированными объектами необходимо:

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

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

См. также

Функции

Объекты

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