【问题标题】:How to get location of signal name on signal line (MATLAB/Simulink)如何在信号线上获取信号名称的位置(MATLAB/Simulink)
【发布时间】:2013-11-20 02:11:14
【问题描述】:

我在为信号设置名称时遇到了一些关于信号名称的问题。

现在我可以通过

设置和获取信号名称
set_param(signal_h, 'SignalNameFromLabel', signal_name);

get_param(signal_h, 'Name');

但我无法设置或获取信号名称的位置。

我将 .mdl 作为文本打开(notepad++)然后我发现 *.mdl 在 Labels 参数中将信号名称的位置保留为矩阵

所以想请教大家,如何通过命令行设置或获取信号名的位置。

对不起我的英语水平。 谢谢大家的回答。

【问题讨论】:

  • 澄清一下:您想设置/获取模型中标签的图形位置吗?
  • 有趣的编辑,虽然 .mdl 文件即将被 .slx 替换(不再那么容易构建) - 我不知道它们保留 .mdl 多久。无论如何,到目前为止我看到的唯一解决方案是以编程方式直接修改 .mdl 文件。绝对可以检测到您的生产线并更改标签位置。但是,如果您还想考虑分支,那么您肯定需要编写一个繁重的脚本。如果没有分支,我认为这会容易得多,因为 label 属性始终遵循您用于检测的 name 属性。

标签: matlab simulink


【解决方案1】:

正如 thewaywewalk 所提到的,没有程序化的方式来做你想做的事(至少没有记录在案的)。您可以通过设置代表信号的端口或线路的名称参数以编程方式命名信号:

p = get_param(gcb, 'PortHandles')
l = get_param(p.Outport, 'Line')
set_param(l, 'Name', 's9')

但根据documentation,只能用鼠标交互移动信号标签:

移动信号标签

标签可以出现在水平线的上方或下方 或线段,以及垂直线或线的左侧或右侧 段。标签可以出现在任一端、中心或任何位置 这些位置的组合。

要移动信号标签,请将标签拖到线上的新位置。当您释放鼠标按钮时,标签会固定其位置 线附近。您不能将标签拖离其信号,而只能 到信号附近的不同位置。

【讨论】:

    【解决方案2】:

    当你inspect你的信号句柄时,当你修改信号位置时,你不会发现任何属性发生变化。所以我认为没有简单的方法可以做你想做的事。也许您可以使用底层的 java 对象,但这会很复杂。 (...我对此无能为力)

    我假设您以编程方式创建整个模型,不是吗?因此,您可以指定块的确切位置,并可能使用add_line 命令来绘制连接。为什么不考虑使用annotations 标记信号?你像以前一样命名你的信号,但你没有使标签可见。取而代之的是,您使用以编程方式生成的注释,就像上面链接的文档示例中一样:

    new_system('test')
    open_system('test')
    add_block('built-in/Gain', 'test/Gain', 'Position', ...
    [260, 125, 290, 155])
    add_block('built-in/Note','test/programmatically created', ...
    'Position', [550 0 0 180])
    

    【讨论】:

    • 这样做的唯一缺点是,如果您随后移动模块和/或信号线,注释将不会随之移动。但我同意,我认为没有办法指定信号名称出现在信号线上的什么位置。
    • 但是如果他用鼠标“移动”行,那么我看不到问题的重点,因为他也可以移动标签。但是,如果一切都被编程,他可以将每一代信号与新注释的生成“捆绑”在一起,并具有相关的位置。我猜交互性不是目标。
    • 是的...我只是觉得如果用鼠标移动线条时标签会跟随会很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多