复制和粘贴Stateflow对象
访问剪贴板对象
剪贴板对象(只有一个存在)提供了一个接口用于Stateflow复制到剪贴板®对象。你不能直接创建或摧毁剪贴板对象作为你其他Stateflow API对象。然而,你可以使用附加的句柄复制Stateflow对象的属性和方法。
您创建一个处理到剪贴板对象使用sfclipboard
函数如下:
cb = sfclipboard;
剪贴板对象有两个方法,复制
和pasteTo
,一起提供的功能复制对象从一个对象到另一个地方。的复制
方法将指定对象复制到剪贴板对象,和pasteTo
方法粘贴剪贴板的内容到一个新的容器。
复制
方法的局限性
的复制
所有对象的方法是受到这些限制:
你复制的对象必须是所有图形(州、盒子、函数、过渡连接)所有nongraphical(数据、事件消息)。
你不能复制的图形和nongraphical对象在同一拷贝到剪贴板操作。
保持过渡连接和控制复制对象之间的关系,你必须复制整个相关对象的数组。
所有相关对象的对象必须是数组的一部分复制到剪贴板。举个例子,如果你试图复制两种状态过渡到另一个容器连接,你只能做到这一点通过复制状态和过渡在同一时间。也就是说,你必须做一个副本一个数组包含状态和过渡连接。
如果你将分组状态复制到剪贴板,你复制中包含的所有对象的状态,以及所有分组中对象之间的关系状态。看到复制的分组。
复制的图形对象
的复制
方法是受到这些限制对所有图形对象:
复制图形对象也复制数据、事件和消息的对象包含的图形对象。
如果所有复制对象图形,他们都必须是可见的在相同的子视图。
换句话说,所有图形对象复制在一个复制命令必须在同一个图表或子图表。
复制的分组
复制在Stateflow分组状态图副本不仅国家,它的所有内容。通过分组状态复制它之前,你可以复制它和它的所有包含的对象容器的各级Stateflow API。这种方法是最简单的方法复制对象。尽可能的使用它。
使用布尔IsGrouped
房地产的国家集团。如果你设置IsGrouped
财产状态值为真的(= 1),它是分组。如果你设置IsGrouped
值为假(= 0),国家不分组。
这个示例程序状态图表X通过分组副本。在这个例子中,假设您已经有一个句柄状态,并通过MATLAB图表X®变量sA
和chX
分别为:
如果复制的状态是没有分组,组以及其内容通过设置
IsGrouped
属性的状态为true (= 1)。prevGrouping = sA.IsGrouped;如果(prevGrouping = = 0)。IsGrouped = 1;结束
处理到剪贴板对象。
cb = sfclipboard;
复制到剪贴板使用剪贴板对象分组状态。
cb.copy (sA);
粘贴分组对象新的容器。
cb.pasteTo (chX);
设置复制状态及其源状态之前
IsGrouped
属性值。sA.IsGrouped = prevGrouping;sNew = chX.find(‘是’,‘Stateflow.State’,‘名’,sA.Name);sNew.IsGrouped = prevGrouping;
单独复制对象
你可以复制特定对象从一个对象到另一个。然而,为了保护过渡连接和控制对象之间的关系,你必须复制所有的连接对象。为此,使用附加的一般技术对象从MATLAB工作区中的连续发现越来越多的对象之前将完成的对象数组复制到剪贴板。
使用的例子Stateflow图表的在图表创建新对象,你可以复制A1、A2和连接他们过渡到另一个状态,B,这些API命令,sA
和某人
对象句柄状态A和B分别。
对= sA.find(“是”、“Stateflow.State”,“深度”,1);objArrayT = sA.find(“是”、“Stateflow.Transition”,“深度”,1);sourceObjs =[对;objArrayT];cb = sfclipboard;cb.copy (sourceObjs);cb.pasteTo(某人);
您还可以复制nongraphical数据、事件和消息对象。然而,由于这些对象没有办法找到他们的新主人,您必须确保您复制每一个对象分别对其适当的所有者对象。
请注意
复制对象分别是比复制分组对象。看到复制的分组。