В этом примере показано, как использовать API Simulink ® Requirements™ для создания и управления пользовательскими атрибутами для наборов ссылок и задания пользовательских значений атрибутов для ссылок.
Загрузить crs_req файл требований, описывающий систему круиз-контроля. Найти набор ссылок с именем crs_req и назначьте его переменной.
slreq.load('crs_req'); ls = slreq.find('Type','LinkSet','Name','crs_req')
ls =
LinkSet with properties:
Description: ''
Filename: '/tmp/BR2021ad_1657350_5204/mlx_to_docbook2/tp7613b4d1/slrequirements-ex23809012/crs_req.slmx'
Artifact: '/tmp/BR2021ad_1657350_5204/mlx_to_docbook2/tp7613b4d1/slrequirements-ex23809012/crs_req.slreqx'
Domain: 'linktype_rmi_slreq'
Revision: 8
Dirty: 0
CustomAttributeNames: {'Target Speed Change'}
В наборе ссылок существует пользовательский атрибут с именем Target Speed Change. Удалите пользовательский атрибут и подтвердите результаты, проверив существующие имена пользовательских атрибутов для набора ссылок.
deleteAttribute(ls,'Target Speed Change','Force',true); ls.CustomAttributeNames
ans = 0x0 empty cell array
Добавьте пользовательский атрибут каждого типа в набор ссылок. Создание Edit пользовательский атрибут с описанием.
addAttribute(ls,'MyEditAttribute','Edit','Description',['You can enter text as' ... ' the custom attribute value.'])
Создать Checkbox введите атрибут и задайте его DefaultValue свойство для true.
addAttribute(ls,'MyCheckboxAttribute','Checkbox','DefaultValue',true)
Создать Combobox пользовательский атрибут. Потому что первый вариант должен быть Unset, добавьте параметры 'Unset', 'A', 'B', и 'C'.
addAttribute(ls,'MyComboboxAttribute','Combobox','List',{'Unset','A','B','C'})
Создать DateTime пользовательский атрибут.
addAttribute(ls,'MyDateTimeAttribute','DateTime')
Проверьте пользовательские атрибуты для набора ссылок. Получить информацию о MyComboboxAttribute для просмотра параметров, добавленных в Combobox атрибут.
ls.CustomAttributeNames
ans = 1x4 cell
Columns 1 through 3
{'MyCheckboxAttr...'} {'MyComboboxAttr...'} {'MyDateTimeAttr...'}
Column 4
{'MyEditAttribute'}
atrb = inspectAttribute(ls,'MyComboboxAttribute')atrb = struct with fields:
name: 'MyComboboxAttribute'
type: Combobox
description: ''
list: {'Unset' 'A' 'B' 'C'}
Найдите ссылку в наборе ссылок и задайте значение пользовательского атрибута для всех четырех созданных пользовательских атрибутов.
lk = find(ls,'SID',3); setAttribute(lk,'MyEditAttribute','Value for edit attribute.'); setAttribute(lk,'MyCheckboxAttribute',false); setAttribute(lk,'MyComboboxAttribute','B');
Набор MyDateTimeAttribute с требуемым языковым стандартом для обеспечения установки даты и времени в правильном формате в системах других языковых стандартов. Дополнительные сведения см. в разделе Языковой стандарт.
localDateTimeStr = datestr(datetime('15-Jul-2018 11:00:00','Locale','en_US'),'Local'); setAttribute(lk,'MyDateTimeAttribute',localDateTimeStr);
Просмотрите значения атрибутов.
getAttribute(lk,'MyEditAttribute')ans = 'Value for edit attribute.'
getAttribute(lk,'MyCheckboxAttribute')ans = logical
0
getAttribute(lk,'MyComboboxAttribute')ans = 'B'
getAttribute(lk,'MyDateTimeAttribute')ans = datetime
15-Jul-2018 11:00:00
После определения пользовательского атрибута для набора связей можно внести ограниченные изменения в пользовательский атрибут.
Добавление описания к MyCheckboxAttribute и MyComboboxAttribute, затем измените список опций для MyComboboxAttribute. Поскольку вы не можете обновить значение по умолчанию Checkbox атрибуты, вы можете только обновить описание MyCheckboxAttribute. Просмотр изменений.
updateAttribute(ls,'MyCheckboxAttribute','Description',['The checkbox value can be' ... ' true or false.']); updateAttribute(ls,'MyComboboxAttribute','Description',['Choose an option from the ' ... 'list.'],'List',{'Unset','1','2','3'}); atrb2 = inspectAttribute(ls,'MyCheckboxAttribute')
atrb2 = struct with fields:
name: 'MyCheckboxAttribute'
type: Checkbox
description: 'The checkbox value can be true or false.'
default: 1
atrb3 = inspectAttribute(ls,'MyComboboxAttribute')atrb3 = struct with fields:
name: 'MyComboboxAttribute'
type: Combobox
description: 'Choose an option from the list.'
list: {'Unset' '1' '2' '3'}
Поиск в наборе ссылок для всех ссылок, где 'MyEditAttribute' имеет значение 'Value for edit attribute.'
lk2 = find(ls,'MyEditAttribute','Value for edit attribute.')
lk2 =
Link with properties:
Type: 'Derive'
Description: '#8: Set Switch Detection'
Keywords: {}
Rationale: ''
CreatedOn: 20-May-2017 13:14:40
CreatedBy: 'itoy'
ModifiedOn: 23-Apr-2021 10:46:04
ModifiedBy: 'batserve'
Revision: 5
SID: 3
Comments: [0x0 struct]
Поиск в наборе ссылок для всех ссылок, где MyCheckboxAttribute имеет значение true.
lkArray = find(ls,'MyCheckboxAttribute',true)lkArray=1×11 object
1x11 Link array with properties:
Type
Description
Keywords
Rationale
CreatedOn
CreatedBy
ModifiedOn
ModifiedBy
Revision
SID
Comments
Поиск в наборе ссылок для всех ссылок, где MyComboboxAttribute имеет значение 'Unset'.
lkArray2 = find(ls,'MyComboboxAttribute','Unset')
lkArray2=1×12 object
1x12 Link array with properties:
Type
Description
Keywords
Rationale
CreatedOn
CreatedBy
ModifiedOn
ModifiedBy
Revision
SID
Comments
Вы можете использовать deleteAttribute для удаления атрибутов. Однако, поскольку пользовательские атрибуты, созданные в этом примере, назначены ссылкам, необходимо задать Force кому true для удаления атрибутов. Удалить MyEditAttribute и подтвердите изменение.
deleteAttribute(ls,'MyEditAttribute','Force',true); ls.CustomAttributeNames
ans = 1x3 cell
{'MyCheckboxAttri...'} {'MyComboboxAttri...'} {'MyDateTimeAttri...'}
Добавьте новый пользовательский атрибут, но не устанавливайте значения пользовательских атрибутов для ссылок.
addAttribute(ls,'NewEditAttribute','Edit'); ls.CustomAttributeNames
ans = 1x4 cell
Columns 1 through 3
{'MyCheckboxAttr...'} {'MyComboboxAttr...'} {'MyDateTimeAttr...'}
Column 4
{'NewEditAttribute'}
Поскольку NewEditAttribute не используется никакими ссылками, его можно удалить с помощью deleteAttribute путем установки Force кому false. Подтвердите изменение.
deleteAttribute(ls,'NewEditAttribute','Force',false); ls.CustomAttributeNames
ans = 1x3 cell
{'MyCheckboxAttri...'} {'MyComboboxAttri...'} {'MyDateTimeAttri...'}
Очистите открытые наборы требований и наборы связей и закройте открытые модели без сохранения изменений.
slreq.clear;
bdclose all;addAttribute | deleteAttribute | getAttribute | inspectAttribute | setAttribute | slreq.LinkSet | updateAttribute