pasteTo
クリップボード内のオブジェクトを指定したコンテナー オブジェクトに貼り付け
説明
例
グループ化によるコピーと貼り付け
ステートをグループ化し、その内容をチャートにコピーします。ステート、ボックス、またはグラフィカル関数をグループ化すると、グループ化したそのオブジェクトに含まれるすべてのオブジェクトと、これらのオブジェクト間のすべての関係をコピーして貼り付けることができます。これは、プログラムによってオブジェクトのコピーと貼り付けを行う最も簡単な方法です。ステートがグループ化されていない場合、ステートをコピーしてもその内容はコピーされません。
モデルを開き、チャートの 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
オブジェクトとして指定します。
parent
— コピーしたオブジェクトの親
Stateflow.Chart
オブジェクト | Stateflow.State
オブジェクト | Stateflow.Box
オブジェクト | Stateflow.Function
オブジェクト | ...
コピーしたオブジェクトの親。次のいずれかのタイプの Stateflow® API オブジェクトとして指定します。
クリップボード内のオブジェクトがすべてグラフィカル (ステート、ボックス、関数、注釈、遷移、またはジャンクション) である場合、このオブジェクトはチャートまたはサブチャートでなければなりません。
ヒント
グラフィカル オブジェクトを貼り付ける場合、新しい親はチャートまたはサブチャートでなければなりません。ステート、ボックス、またはグラフィカル関数をサブチャートに変換するには、その IsSubchart
プロパティを true
に設定します。貼り付け後、IsSubchart
プロパティと IsGrouped
プロパティを false
に設定することで、親を元に戻すことができます。
バージョン履歴
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)