主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

slreportgen.report.BusObject 类

命名空间: slreportgen.report
超类: slreportgen.report.Reporter

Simulink 总线对象报告器

描述

创建一个报告器,在报告中生成有关 Simulink.Bus 对象的信息。

注意

要在报告中使用总线对象报告器,您必须使用 slreportgen.report.Report 类或子类创建报告。

slreportgen.report.BusObject 类是 handle 类。

类属性

HandleCompatible
true

有关类属性的信息,请参阅类属性

创建对象

描述

reporter = slreportgen.report.BusObject 创建一个空的 slreportgen.report.BusObject 报告器对象。使用报告器对象属性自定义总线对象报告信息的内容和格式。在将报告器添加到报告之前,您必须将报告器的 Object 属性设置为指定 slreportgen.report.ModelVariableResult 对象的 Simulink.VariableUsageSimulink.Bus 对象。在报告中添加空的报告器会产生错误。

reporter = slreportgen.report.BusObject(object)Simulink.Busslreportgen.report.ModelVariableResult 对象指定的 Simulink.VariableUsage 对象创建一个报告器。请参阅 Object 属性。

示例

reporter = slreportgen.report.BusObject(Name=Value) 使用名称-值参量设置报告器属性。您可以按任意顺序指定多个名称-值参量。

属性

全部展开

指定要报告的 Simulink.Bus 对象的对象,指定为 slreportgen.finder.ModelVariableResult 对象或 Simulink.VariableUsage 对象。

此只读属性包含要报告的总线对象的名称,指定为字符串标量。

要报告的总线对象属性,指定为字符串数组或字符向量元胞数组。ReportedBusProperties 属性指定的属性由 PropertyFilterFcn 属性进一步过滤。如果 ReportedBusProperties 属性为空,则报告器将在报告中包含所有属性,但经 PropertyFilterFcn 属性过滤的属性除外。报告器排除任何对于总线对象无效的总线对象属性。

要报告的总线元素属性,指定为字符串数组或字符向量元胞数组。ReportedElementProperties 属性指定的属性会通过 PropertyFilterFcn 属性指定的函数或代码进行进一步过滤。如果 ReportedElementProperties 属性为空,则报告器将在报告中包含所有属性,但经 PropertyFilterFcn 属性过滤的属性除外。报告器排除任何对于总线元素无效的总线元素属性。

是否在报告中显示总线对象的名称,指定为 truefalse

是否在报告中包含表示总线层次结构的嵌套列表,指定为 truefalse

是否在报告中显示总线对象属性表,指定为 truefalse

是否在报告中显示总线元素属性表,指定为 truefalse

是否显示使用总线对象的模块列表,指定为 truefalse。如果将 ShowUsedBy 属性设置为 true,则报告器会在报告中包含使用总线对象的模块的列表。如果 ShowUsedBySnapshot 属性也设置为 true,则报告器将为使用总线对象的每个父子系统包含一个图快照。使用总线对象的模块在快照中突出显示。

是否显示父子系统的图快照并突出显示使用总线对象的模块,指定为 truefalse。如果将 ShowUsedBySnapshot 属性设置为 true,则报告将包含使用总线对象的每个父子系统的快照。使用总线对象的模块在快照中突出显示。如果父子系统有多个使用总线对象的模块,则报告器仅显示一个图快照,突出显示使用总线对象的模块。

是否为报告中有关总线对象的每一种信息类型创建单独的节。如果将 CreateSections 属性设置为 true,则报告器会为以下每种类型的信息创建一个带有标题的 mlreportgen.report.Section

  • 层次结构

  • 属性

  • 元素

  • 使用总线对象的模块

如果将 CreateSections 属性设置为 false,则报告器会为表格和列表生成标签。对于表格,报告器会生成表格标题。对于列表,报告器会生成列表前面的文本。

列表格式化程序,用于格式化生成的总线层次结构,指定为 mlreportgen.dom.UnorderedList 对象或 mlreportgen.dom.OrderedList 对象。该属性的默认值是 mlreportgen.dom.UnorderedList 的对象。要自定义列表格式,请修改列表对象属性或将列表对象替换为不包含列表项的自定义列表对象。

列表格式化程序,用于格式化使用总线对象的模块的生成列表,指定为 mlreportgen.dom.UnorderedList 对象或 mlreportgen.dom.OrderedList 对象。该属性的默认值是 mlreportgen.dom.UnorderedList 的对象。要自定义列表格式,请修改列表对象属性或将列表对象替换为不包含列表项的自定义列表对象。

表格报告器用于格式化总线对象属性表,指定为 mlreportgen.report.BaseTable 对象。该属性的默认值是 BaseTable 对象,其 TableStyleName 属性设置为 BusObjectPropertiesTable 样式,该样式在 BusObject 报告器的默认模板中定义。

要自定义表格的外观,请修改默认表格报告器的属性或将其替换为自定义的表格报告器。如果您向默认或自定义表格报告器的 Title 属性添加内容,则该内容将显示在生成的报告中的表格标题前面。

表格报告器用于格式化总线元素属性表,指定为 mlreportgen.report.BaseTable 对象。该属性的默认值是 BaseTable 对象,其 TableStyleName 属性设置为 BusObjectElementsTable 样式,该样式在 BusObject 报告器的默认模板中定义。

要自定义表格的外观,请修改默认表格报告器的属性或将其替换为自定义的表格报告器。如果您向默认或自定义表格报告器的 Title 属性添加内容,则该内容将显示在生成的报告中的表格标题前面。

是否在元素属性表中水平显示属性,指定为 truefalse

如果将 HorizontalElementsTable 属性设置为 true,则该表为每个属性都有一列。例如:

Table with columns for each property, as when the HorizontalElementsTable property is set to true

如果将 HorizontalElementsTable 属性设置为 false,则该元素行中的属性和值单元格将被拆分为多行。例如:

Table with value cells split into multiple rows, as when the HorizontalElementsTable property is set to false

CreateSections 属性设置为 true 时用于格式化节的报告器,指定为 mlreportgen.report.Section 对象。要自定义截面的外观,请修改默认截面报告器的属性或将其替换为自定义截面报告器。

用于从报告中过滤已报告总线或总线元素的属性的函数或表达式。指定一个函数作为函数句柄。指定一个表达式作为字符向量或字符串标量。

如果提供函数句柄,则关联函数必须:

  • 接受以下参量:

    • variableName - 指定正在报告的总线或总线元素的模型变量的名称

    • variableObject - 正在报告的总线或总线元素

    • propertyName - 正在报告的总线或总线元素的属性名称

  • 返回 true 以从报告中过滤指定属性,或返回 false 以将该属性包含在报告中。

例如,此代码可防止显示总线对象的 HeaderFileDescription 属性以及总线元素的 Complexity 属性:

import slreportgen.finder.*
import slreportgen.report.*

rpt = slreportgen.report.Report('busrpt','pdf');

model = load_system('sldemo_bus_arrays');

modelVariableFinder = ModelVariableFinder(model);
results = find(modelVariableFinder);
for result = results
    if isa(getVariableValue(result),'Simulink.Bus')
        busRptr = slreportgen.report.BusObject(result);
        busRptr.PropertyFilterFcn = @busPropertyFilter;
        % Create a Chapter
        chapter = mlreportgen.report.Chapter(busRptr.Name);
        add(chapter, busRptr);   
        add(rpt,chapter)
    end
end
close(rpt);

close_system(model);
rptview(rpt);

function tf = busPropertyFilter(~, variableObject,propertyName)
if isa(variableObject, 'Simulink.Bus')
    tf = (propertyName == "HeaderFile") ||  ...
        (propertyName == "Description");
else
    % Filter Simulink.BusElement Complexity property
    tf = propertyName == "Complexity";
end
end

如果您提供字符串标量或字符向量,它必须包含表达式。表达式:

  • 可以使用变量 variableNamevariableObjectpropertyName

  • 必须将变量 isFiltered 设置为 true 才能从报告中过滤指定的属性,或者将变量设置为 false 才能将属性包含在报告中

例如,此代码从报告中过滤掉总线对象的 HeaderFile 属性:

import slreportgen.finder.*
import slreportgen.report.*

rpt = slreportgen.report.Report('busrpt','pdf');

model = load_system('sldemo_bus_arrays');

modelVariableFinder = ModelVariableFinder(model);
results = find(modelVariableFinder);
for result = results
    if isa(getVariableValue(result),'Simulink.Bus')
        busRptr = slreportgen.report.BusObject(result);
        busRptr.PropertyFilterFcn = "isFiltered = " + ...
            "isa(variableObject, 'Simulink.Bus') && " + ...
            "propertyName == 'HeaderFile';";
        % Create a Chapter
        chapter = mlreportgen.report.Chapter(busRptr.Name);
        add(chapter, busRptr);   
        add(rpt,chapter)
end
end
close(rpt);

close_system(model);
rptview(rpt);

此报告器的模板来源,以下列方式之一指定:

  • 字符向量或字符串标量,指定包含此报告器模板的文件的路径

  • 此报告器使用的模板或其模板库中包含此报告器模板的报告器或报告

  • 文档对象模型 (DOM) 文档或文档部分,该报告器使用其模板或其模板库包含该报告器的模板

指定的模板必须与您附加此报告器的报告类型相同。例如,对于 Microsoft® Word 报告,TemplateSrc 必须是 Word 报告模板。如果 TemplateSrc 属性为空,则此报告器将使用默认报告器模板作为报告的输出类型。

属性:

GetAccess
公共
SetAccess
公共
NonCopyable
true

此报告器的模板名称,指定为字符向量或字符串标量。此报告器的模板必须位于此报告器 TemplateSrc 属性所指定模板的模板库中。

属性:

GetAccess
公共
SetAccess
公共

数据类型: char | string

此报告器的超链接目标,指定为指定链接目标 ID 的字符向量或字符串标量,或 mlreportgen.dom.LinkTarget 对象。字符向量或字符串标量值转换为 LinkTarget 对象。链接目标紧接在输出报告中此报告器的内容之前。

属性:

GetAccess
公共
SetAccess
公共

方法

全部展开

示例

全部折叠

通过使用模型变量查找器查找模型中使用的所有变量,然后为每个总线对象变量创建一个总线报告器,报告模型中的总线对象。

% Create a Report
rpt = slreportgen.report.Report("MyReport","pdf");
open(rpt);

% Load a model
model_name = "sldemo_bus_arrays";
load_system(model_name);

% Find all variables used by the model
finder = slreportgen.finder.ModelVariableFinder(model_name);

% Create a Bus object reporter object for all results representing a
% Simulink.Bus object
while hasNext(finder)
    result = next(finder);
    if isa(getVariableValue(result), "Simulink.Bus")
        % Create a Bus object reporter
        busReporter = slreportgen.report.BusObject(result);
        % Create a Chapter
        chapter = mlreportgen.report.Chapter(busReporter.Name);
        % Add bus to chapter
        add(chapter, busReporter)
        % Add chapter to the report
        add(rpt,chapter);
    end
end

% Close and view the report
close(rpt);
rptview(rpt);

通过设置总线对象报告器的属性来自定义报告的内容和内容的格式。此示例使用 ReportedElementProperties 属性来约束报告的元素属性。它使用 HorizontalElementsTable 属性来生成一个属性表,每个属性有一列。

% Create a Report
rpt = slreportgen.report.Report("MyReport","pdf");
open(rpt);

% Load a model
model_name = "sldemo_bus_arrays";
load_system(model_name);

% Find all variables used by the model
finder = slreportgen.finder.ModelVariableFinder(model_name);

% Create a Bus object reporter object for all results representing a
% Simulink.BusObject object
while hasNext(finder)
    result = next(finder);
    if isa(getVariableValue(result), "Simulink.Bus")
        % Create a Bus object reporter
        busReporter = slreportgen.report.BusObject(result);
        % Limit the properties that are reported
        busReporter.ReportedElementProperties = {'Name','DataType','Min','Max'};
        % Display element properties horizontally
        busReporter.HorizontalElementsTable = true;
        % Create a Chapter
        chapter = mlreportgen.report.Chapter(busReporter.Name);
        % Add bus to chapter
        add(chapter, busReporter)
        % Add chapter to the report
        add(rpt,chapter);
    end
end

% Close and view the report
close(rpt);
rptview(rpt);

版本历史记录

在 R2019b 中推出