copy

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

Синтаксис

Описание

пример

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