find_system() for custom library
26 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ahmed Ellithy
le 7 Mai 2023
Réponse apportée : Ahmed Ellithy
le 7 Mai 2023
I made a custome Library block which is basically a masked subsystem. I've put the masked subsystem inside another subytem and in its initialization section i made a code that replicates and connect copies of the custome block according to the wished number.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1376864/image.jpeg)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1376869/image.jpeg)
In order to achieve this, all the blocks need to be deleted along with the lines connecting each block. To delete the lines i inserted the folowing code which works fine:
lines = find_system(gcb,'SearchDepth','1','LookUnderMasks','On','FindAll','On','Type','Line');
delete(lines);
Now for the customed blocks i can't do the same since it doesnt get recognized. Following code has been tried:
blks = find_system(sys,'SearchDepth','1','LookUnderMasks','On','FindAll','On', 'BlockType', 'SubSystem');
delete_block(blks);
Using Simulink.SubSystem.deleteContents(gcb) i was able to delete everything. However this deletes the ports as well which is something that i dont want to have since any conection with the main subsystem will be terminated. Any idea..?
0 commentaires
Réponse acceptée
Plus de réponses (1)
Fangjun Jiang
le 7 Mai 2023
The blks = find_system() will return 4 block handles. The first one is "sys" itself and the next three are the three customized blocks.
delete_block(blks) will delete "sys" first and then give an error message.
You could do delete_block(blks(2:end))
A better way is to give your customized block a unique tag so it is easy to find it. If it is a masked subsystem, then "MaskType" is the right one to use.
3 commentaires
Fangjun Jiang
le 7 Mai 2023
Modifié(e) : Fangjun Jiang
le 7 Mai 2023
If "gcb" here points to the block "Dynamic/Main System", then it is the same effect.
"MaskType" is at the document page of the Mask Editor. Make it "MyCustomBlock", then search your blocks like find_system(...,'MaskType','MyCustomBlock'). It is used similarly as find_system(...,'BlockType','Gain').
Voir également
Catégories
En savoir plus sur Subsystems dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!