Simulinkモデ​ル内のブロック名/信​号ラベル/ブロック注​釈の位置の取得方法

20 ビュー (過去 30 日間)
宗大
宗大 2024 年 8 月 19 日
コメント済み: Atsushi Ueno 2024 年 8 月 21 日
MATLAB 2022aのMATLABのコードから、Simulinkモデル内のブロック名/信号ラベル/ブロック注釈の位置の取得する方法教えていただきたいです。取得する方法がなければ無いとお答えいただきたいです。
  1 件のコメント
Atsushi Ueno
Atsushi Ueno 2024 年 8 月 21 日
(普通の直接的な)取得方法は無いです。なぜならモデルは冗長でない最低限の情報だけを含む仕様だからです。
「当該ブロックの位置・サイズ」「ブロックの向き」「フォントサイズ」「名前の位置(通常/反転)」などの情報から「ブロック名/ブロック注釈の位置」を計算する必要があります。
信号ラベルはもっと複雑で「Src/Dstブロックの位置・サイズ・向き・端子番号・信号名の位置(Src側/中央/Dst側・上/下)・折れ線情報(どこで曲がるか)」など多岐に渡る情報が必要です、https://stackoverflow.com/questions/19852758/how-to-get-location-of-signal-name-on-signal-line-matlab-simulink
「ブロック名/信号ラベル/ブロック注釈の位置」を計算出来た暁には、貴方はもうモデルビューアを作れる様になっている!かもしれません。
% 適当なサンプルモデルを開く(Simulinkモデルのサンプルといえばファン・デル・ポール振動子)
openExample('simulink_general/VanDerPolOscillatorExample','supportingFile','vdp');
% モデル内のブロックを得る
hBlcks = find_system('vdp','FindAll','on','Type','block');
% ブロックの位置・サイズ: [left top right bottom]
get_param(hBlcks, 'Position')
% ブロックの向き: {'right'} | 'left' | 'up' | 'down'
get_param(hBlcks, 'Orientation')
% ブロック名の位置: {'normal'} | 'alternate'
get_param(hBlcks, 'NamePlacement')
% 信号ラベルはもっと大変!まずはモデル内の信号を得る
hLines = find_system('vdp','FindAll','on','Type','line');
% 御後が宜しいようで...兎に角情報を集めて演算するしか方法が無い!
あとマニアックな方法として、MATLABのベースにあるJava環境から直接描画関連データを参照する事が出来ると思います。あまり詳しい事は知りません。https://undocumentedmatlab.com/

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File Exchangeビッグ データの処理 についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!