このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
sfclipboard
クリップボード オブジェクト
説明
は、clipboard
= sfclipboardStateflow.Clipboard
オブジェクトを返します。Clipboard
オブジェクトを使用して、同じチャート内、同じ Simulink® モデル内のチャート間、または異なるモデル内のチャート間で、オブジェクトをコピーし、貼り付けます。
例
グループ化によるコピーと貼り付け
ステートをグループ化し、その内容をチャートにコピーします。ステート、ボックス、またはグラフィカル関数をグループ化すると、グループ化したそのオブジェクトに含まれるすべてのオブジェクトと、これらのオブジェクト間のすべての関係をコピーして貼り付けることができます。これは、プログラムによってオブジェクトのコピーと貼り付けを行う最も簡単な方法です。ステートがグループ化されていない場合、ステートをコピーしてもその内容はコピーされません。
モデルを開き、チャートの 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);
バージョン履歴
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)