How can I programmatically add a Stateflow.Data ?

7 vues (au cours des 30 derniers jours)
Houellebecq Vincent
Houellebecq Vincent le 18 Oct 2024
I used a Mathworks tutorial (in the link under) to copy a stateflow, but data (in the sybols Pane) aren't flollowing.
How I can Copy or add Stateflow.Data ?
Thanks

Réponses (1)

Shubham
Shubham le 18 Oct 2024
Modifié(e) : Shubham le 18 Oct 2024
As far as I understand, copying graphical objects also copies the Stateflow.Data objects contained by graphical objects. When you copy multiple graphical objects, the value of their Subviewer property must be the same. Also note that the array must contain only graphical objects or only nongraphical objects.
If the above conditions are satisfied, the Stateflow.Data should get copied.
For more information please check the documentation of objArray (the objects to copy) using the copy function: https://www.mathworks.com/help/stateflow/api/stateflow.clipboard.copy.html#mw_af87b90f-8fbe-430e-a5f0-03b56fe3978e
If you have further queries, please share the example you are using in order to reproduce the issue.
Happy coding!
  3 commentaires
Shubham
Shubham le 21 Oct 2024
Happy to know that the issue has been resolved!
Houellebecq Vincent
Houellebecq Vincent le 21 Oct 2024
sorry wrong handling I made a mistake
So I have 2 files .slx with chart:
file_1.slx :
file_2.slx :
My code :
open_system('File_1.slx')
open_system('File_2.slx')
ch = find(sfroot,'-isa','Stateflow.Chart');
sA = find(ch,'-isa','Stateflow.State','Name','Etat2Copie');
sB = find(ch,'-isa','Stateflow.State','Name','Etat_parent');
sB.IsSubchart = true;
% sB.IsGrouped = true;
objArrayS = find(sA,'-isa','Stateflow.State');
objArrayS = setdiff(objArrayS,sA);
objArrayT = find(sA,'-isa','Stateflow.Transition');
objArray = [objArrayS; objArrayT];
cb = sfclipboard;
copy(cb,objArray);
pasteTo(cb,sB);
sB.IsSubchart = false;
sB.IsGrouped = false;
Résults:
The problème is :
Symbols = find(sfroot,'-isa','Stateflow.Data')
Symbols =
0×1 empty handle
I expected the following result :
ans =
Path: 'ModeleTest/Chart1'
Id: 30
Machine: [1×1 Stateflow.Machine]
SSIdNumber: 15
Name: 'x'
Description: ''
SaveToWorkspace: 0
DataType: 'Inherit: Same as Simulink'
Props: [1×1 Stateflow.DataProps]
ParsedInfo: [1×1 Stateflow.DataParsedInfo]
CompiledSize: ''
CompiledType: 'unknown'
Tag: []
Document: ''
Port: 1
Scope: 'Output'
TestPoint: 0
OutputState: []
Debug: [1×1 Stateflow.DataDebug]
InitializeMethod: 'Expression'
UpdateMethod: 'Discrete'
LoggingInfo: [1×1 Stateflow.SigLoggingInfo]
Tunable: 1

Connectez-vous pour commenter.

Catégories

En savoir plus sur Model Compatibility dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by