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;
Assertion failed: Deviant 'root deviant' not opened for transactions. Attempt to modify object of type 'StateflowDI.Transition' [id = -1 ] at kernel/deviant/Deviant.cpp:70: Assertion failed: Deviant 'root deviant' not opened for transactions. Attempt to modify object of type 'StateflowDI.Transition' [id = -1 ] at kernel/deviant/Deviant.cpp:70: Assertion failed: Deviant 'root deviant' not opened for transactions. Attempt to modify object of type 'StateflowDI.State' [id = -1 ] at kernel/deviant/Deviant.cpp:70: Assertion failed: Deviant 'root deviant' not opened for transactions. Attempt to modify object of type 'StateflowDI.State' [id = -1 ] at kernel/deviant/Deviant.cpp:70:
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);
入力引数
クリップボード。Stateflow.Clipboard
オブジェクトとして指定します。
コピーしたオブジェクトの親。次のいずれかのタイプの Stateflow® API オブジェクトとして指定します。
クリップボード内のオブジェクトがすべてグラフィカル (ステート、ボックス、関数、注釈、遷移、またはジャンクション) である場合、このオブジェクトはチャートまたはサブチャートでなければなりません。
ヒント
グラフィカル オブジェクトを貼り付ける場合、新しい親はチャートまたはサブチャートでなければなりません。ステート、ボックス、またはグラフィカル関数をサブチャートに変換するには、その IsSubchart
プロパティを true
に設定します。貼り付け後、IsSubchart
プロパティと IsGrouped
プロパティを false
に設定することで、親を元に戻すことができます。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)