主要内容

Stateflow.Clipboard

剪贴板复制和粘贴Stateflow对象

    描述

    使用Stateflow.Clipboard对象复制粘贴图形和nongraphical对象在同一个图表,图表之间相同的仿真软件金宝app®图表之间的模型,或者在不同的模型。

    创建

    只有一个Stateflow.Clipboard对象,它是当你开始Stateflow自动创建的®。要访问这个对象,调用sfclipboard功能:

    剪贴板= sfclipboard;

    对象的功能

    复制 数组的对象复制到剪贴板
    pasteTo 粘贴剪贴板中的对象指定的容器对象

    例子

    全部折叠

    组状态并将其内容复制到图。当你组织一个状态,盒子,或图形函数,你可以复制粘贴的所有对象中包含分组对象,以及所有这些对象之间的关系。这种方法是最简单的复制和粘贴对象编程的方法。如果一个国家没有分组,复制的状态没有复制任何内容。

    Stateflow图表层次的状态。外州被称为a。它包含两个内心状态称为A1和A2。

    打开模型和访问Stateflow.Chart对象为图表。

    open_system (“sfHierarchyAPIExample”)ch =找到(sfroot,“是”,“Stateflow.Chart”);

    找到Stateflow.State对象命名一个

    sA =找到(ch,“是”,“Stateflow.State”、名称=“一个”);

    组状态一个通过设置及其内容IsGrouped财产sA真正的。保存以前的设置这个属性,这样你就可以恢复。

    prevGrouping = sA.IsGrouped;sA。IsGrouped = true;

    改变国家的名称Copy_of_A。保存以前的名字,这样你就可以恢复。

    prevName = sA.Name;新名称=“Copy_of_”+ prevName;sA。Name =新名称;

    访问剪贴板对象。

    cb = sfclipboard;

    分组状态复制到剪贴板。

    复制(cb、sA);

    恢复原来的状态属性设置。

    sA。IsGrouped = prevGrouping;sA。= prevName名称;

    从剪贴板粘贴复制的对象图表。

    pasteTo (cb、ch);

    调整状态属性的新状态。

    sNew =找到(ch,“是”,“Stateflow.State”Name =新名称);sNew。位置= sA。位置+ (400 0 0 0);sNew。IsGrouped = prevGrouping;

    图表显示的结果粘贴状态和其内容的副本。

    复制状态A1A2以及他们之间的过渡到一个新的状态图。保护过渡连接和控制对象之间的关系,复制所有的连接对象。

    Stateflow图表层次的状态。外州被称为a。它包含两个内心状态称为A1和A2。

    打开模型和访问Stateflow.Chart对象为图表。

    open_system (“sfHierarchyAPIExample”)ch =找到(sfroot,“是”,“Stateflow.Chart”);

    找到Stateflow.State对象命名一个

    sA =找到(ch,“是”,“Stateflow.State”、名称=“一个”);

    添加一个新的状态B。使粘贴其他对象B新状态转换为子图表。

    某人= Stateflow.State (ch);sB.Name =“B”;sB.Position = sA。位置+ (400 0 0 0);sB.IsSubchart = true;

    创建一个数组称为objArray包含状态的状态和转换一个。使用的函数setdiff删除状态一个从数组中复制的对象。

    对=找到(sA)“是”,“Stateflow.State”);对= setdiff(对,sA);objArrayT =找到(sA)“是”,“Stateflow.Transition”);objArray =[对objArrayT];

    访问剪贴板对象。

    cb = sfclipboard;

    复制对象objArray粘贴在子图表B

    复制(cb objArray);pasteTo (cb(某人);

    回复B一个国家。

    sB.IsSubchart = false;sB.IsGrouped = false;

    重新定位的状态和转换B

    newStates =找到(某人,“是”,“Stateflow.State”);newStates = setdiff (newStates,某人);newTransitions =找到(某人,“是”,“Stateflow.Transition”);newOClocks =得到(newTransitions, {“SourceOClock”,“DestinationOClock”});i = 1:元素个数(newStates) newStates(我)。位置= newStates(我)。位置+ (25 35 0 0);结束集(newTransitions, {“SourceOClock”,“DestinationOClock”},newOClocks);

    图表显示的结果复制的内容粘贴到状态B。

    版本历史

    之前介绍过的R2006a