Simulink添加超链接出现失效的解决方式

给模块添加文字并且添加超链接,再次打开模型出现失效了。

原因是使用HTML方式添加出现失效,给修改成调用函数方式。

如果想给字体添加超链接,或者是字体颜色不能使用Simulink自带的属性,得使用HTML属性,这样会有导致连接失效风险。

可见下列代码添加模型的超链接。

toppaths = gcbp;
bplengths = getLength(toppaths);
blockpath = getBlock(toppaths,bplengths);
cellarray = convertToCell(toppaths);
systems = extractBefore(blockpath,'/');

% systems = inputdlg({'请输入顶层模型的名称:'},'Model Name.',[1 35],{'Top Model'});
% if isempty(systems)
%     systems = gcs;
% else
%     systems=systems{1};
% end
[models,blockpaths]=find_mdlrefs(systems,'AllLevels',0);
inports = find_system(systems,'BlockType','Inport');
pointsX = 1000;
pointsY = 500;
for jj=1:length(inports)
    posit = get_param(inports(jj),'Position');
    if pointsX >= posit{:}(1)
        pointsX = posit{:}(1);
        if pointsY >= posit{:}(2)
            pointsY = posit{:}(2);
        end
    end
end
pointsX=pointsX-500;
pointsX1 = pointsX;
pointsY1 = pointsY;
maxlengts = 0;
for ii=1:length(blockpaths)
    strs = extractAfter(blockpaths(ii),'/');
    bp = ['Simulink.BlockPath([parpath'',{''' blockpaths{ii} '''}])'];

    a = Simulink.Annotation(gcs,strs{:});
    a.UseDisplayTextAsClickCallback='off';
    a.Interpreter = 'rich';
    a.ClickFcn = ['toppaths = gcbp;' newline 'cellarray = convertToCell(toppaths);'...
        newline 'if length(cellarray)>1'...
        newline '  parpath = cellarray(1:end-1);'...
        newline 'else'...
        newline '  parpath = {};'...
        newline 'end'...
        newline 'hilite_system(' bp ',''find'');'];
% 使用调用函数方式可以防止连接失效。
    a.Name = strs{:};
%     a.Text = ['<a href="matlab:hilite_system(' bp ',''find'')' '">' strs{:} '</a>.'];
    numLe = length(strs{:});
    if maxlengts < numLe
        maxlengts=numLe;
    end
    a.MarkupType = 'markup';
    a.FontSize = 28;
    a.Position = [pointsX pointsY pointsX+numLe*9 pointsY + 14];
    pointsY = pointsY + 48;
    clear a
end
pointsY = pointsY + 48;
a= Simulink.Annotation(systems,'RemoveHighlighting');
a.UseDisplayTextAsClickCallback='off';
a.Interpreter = 'rich';

a.ClickFcn = ['SLStudio.Utils.RemoveHighlighting(get_param(''' systems ''',''handle''))'];
a.Name = 'RemoveHighlighting';
% a.Text = ['<a href="matlab:SLStudio.Utils.RemoveHighlighting(get_param(''' systems ''',''handle''))' '">RemoveHighlighting</a>.'];
numLe = length('RemoveHighlighting');
if maxlengts < numLe
    maxlengts=numLe;
end
a.MarkupType = 'markup';
a.FontSize = 28;
a.Position = [pointsX pointsY pointsX+numLe*10 pointsY + 14];

are = add_block('built-in/Area',[systems '/All modules are connected'],'Position',[pointsX1-90,pointsY1-50,pointsX+330+maxlengts,pointsY+50]);
set_param(are,'FontSize','28');

% view(a2)


% % deleteannotation
% h = find_system('Application_SWA_sim','FindAll','on','Type','annotation');
% for pp=1:length(h)
% a = get_param(h(pp),'Object');
% delete(a)
% end

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Simulink进行仿真时,偶尔会出现奇点的问题。奇点是指在仿真过程中出现计算结果异常的情况,这可能是由于方程的数值不稳定、模型中存在奇异点或数值积分过程中的触发引起的。 解决奇点问题的方法有以下几种: 1. 调整仿真参数:可以尝试减小步长和仿真时间,以提高数值计算的稳定性。还可以调整数值积分方法,如采用更精确的方法,例如Euler方法或四阶龙格-库塔方法,来避免数值积分中的奇点问题。 2. 修改模型:检查模型中是否存在奇异点,如除数为零或分母为零等。如果有,可以对这些奇异点进行特殊处理,比如添加分支判断条件或增加保护模块来规避奇点情况的发生。 3. 优化方程:对于数值不稳定的方程,可以尝试优化方程的形式,减小数值计算误差。可以考虑使用数值稳定性更好的算法或增加数值稳定性修正项来解决奇点问题。 4. 调试模型:通过断点和观察变量的方式,定位奇点发生的位置。查看模型中各个部分的输入、输出、参数等,检查是否存在不合理的数值范围或超出浮点数表示范围的情况,并进行适当的修正。 5. 增加条件判断和保护措施:在模型中添加有效的条件判断语句和保护措施,以防止输入超出范围或计算结果异常,从而可以避免奇点的产生。 总之,在Simulink仿真中遇到奇点问题时,我们可以根据具体情况采取相应的方法进行解决,提高仿真的稳定性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值