copy
オブジェクトの配列をクリップボードにコピー
説明
例
グループ化によるコピーと貼り付け
ステートをグループ化し、その内容をチャートにコピーします。ステート、ボックス、またはグラフィカル関数をグループ化すると、グループ化したそのオブジェクトに含まれるすべてのオブジェクトと、これらのオブジェクト間のすべての関係をコピーして貼り付けることができます。これは、プログラムによってオブジェクトのコピーと貼り付けを行う最も簡単な方法です。ステートがグループ化されていない場合、ステートをコピーしてもその内容はコピーされません。
モデルを開き、チャートの Stateflow.Chart
オブジェクトにアクセスします。
open_system("sfHierarchyAPIExample") ch = find(sfroot,"-isa","Stateflow.Chart");
A
という名前の Stateflow.State
オブジェクトを検索します。
sA = find(ch,"-isa","Stateflow.State",Name="A");
sA
の IsGrouped
プロパティを true
に設定し、ステート A
とその内容をグループ化します。後で戻せるように、このプロパティの前の設定を保存します。
prevGrouping = sA.IsGrouped; sA.IsGrouped = true;
ステートの名前を Copy_of_A
に変更します。後で戻せるように、前の名前を保存します。
prevName = sA.Name;
newName = "Copy_of_"+prevName;
sA.Name = newName;
クリップボード オブジェクトにアクセスします。
cb = sfclipboard;
グループ化されたステートをクリップボードにコピーします。
copy(cb,sA);
ステートのプロパティを元の設定に戻します。
sA.IsGrouped = prevGrouping; sA.Name = prevName;
クリップボードから、オブジェクトのコピーをチャートに貼り付けます。
pasteTo(cb,ch);
新しいステートのプロパティを調整します。
sNew = find(ch,"-isa","Stateflow.State",Name=newName); sNew.Position = sA.Position + [400 0 0 0]; sNew.IsGrouped = prevGrouping;
オブジェクトの配列のコピーと貼り付け
ステート A1
とステート A2
を、それらの間の遷移とともにチャートの新しいステートにコピーします。オブジェクト間の遷移接続および含有関係を保持するには、接続されているすべてのオブジェクトを一度にコピーします。
モデルを開き、チャートの Stateflow.Chart
オブジェクトにアクセスします。
open_system("sfHierarchyAPIExample") ch = find(sfroot,"-isa","Stateflow.Chart");
A
という名前の Stateflow.State
オブジェクトを検索します。
sA = find(ch,"-isa","Stateflow.State",Name="A");
B
という新しいステートを追加します。B
内で他のオブジェクトを貼り付けられるようにするために、この新しいステートをサブチャートに変換します。
sB = Stateflow.State(ch);
sB.Name = "B";
sB.Position = sA.Position + [400 0 0 0];
sB.IsSubchart = true;
ステート A
内のステートと遷移を含む objArray
という配列を作成します。関数setdiff
を使用して、コピーするオブジェクトの配列からステート A
を削除します。
objArrayS = find(sA,"-isa","Stateflow.State"); objArrayS = setdiff(objArrayS,sA); objArrayT = find(sA,"-isa","Stateflow.Transition"); objArray = [objArrayS objArrayT];
クリップボード オブジェクトにアクセスします。
cb = sfclipboard;
objArray
のオブジェクトをコピーし、サブチャート B
に貼り付けます。
copy(cb,objArray); pasteTo(cb,sB);
B
をステートに戻します。
sB.IsSubchart = false; sB.IsGrouped = false;
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);
入力引数
clipboard
— クリップボード
Stateflow.Clipboard
オブジェクト
クリップボード。Stateflow.Clipboard
オブジェクトとして指定します。
objArray
— コピー対象のオブジェクト
Stateflow® オブジェクトの配列
コピー対象のオブジェクト。Stateflow API オブジェクトの配列として指定します。配列に含まれるのは、グラフィカル オブジェクトのみ、または非グラフィカル オブジェクトのみでなければなりません。
グラフィカル オブジェクトには以下が含まれます。
非グラフィカル オブジェクトには以下が含まれます。
グラフィカル オブジェクトをコピーすると、グラフィカル オブジェクトに含まれている Stateflow.Data
、Stateflow.Event
、Stateflow.Message
の各オブジェクトもコピーされます。複数のグラフィカル オブジェクトをコピーする場合、それらの Subviewer
プロパティの値は同じでなければなりません。
ヒント
コピーしたオブジェクト間の遷移接続および含有関係を維持するには、以下を行う必要があります。
グループ化されたオブジェクトをクリップボードにコピーします。ステート、ボックス、またはグラフィカル関数をグループ化すると、グループ化したそのオブジェクトに含まれるすべてのオブジェクトと、これらのオブジェクト間のすべての関係をコピーして貼り付けることができます。詳細については、グループ化によるコピーと貼り付けを参照してください。
関連するオブジェクトをすべてコピーします。たとえば、遷移によって接続されている 2 つのステートを別のコンテナーにコピーするには、ステートと遷移の両方を含む配列を作成します。その後、その配列をクリップボードにコピーできます。詳細については、オブジェクトの配列のコピーと貼り付けを参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)