В этом примере показано, как использовать Simulink® Requirements™ API, чтобы создать и справиться, пользовательские атрибуты для ссылки устанавливает и устанавливать значения пользовательского атрибута для ссылок.
Загрузите crs_req файл требования, который описывает систему круиз-контроля. Найдите набор ссылки и присвойте его переменной.
slreq.load('crs_req'); ls = slreq.find('Type','LinkSet')
ls =
LinkSet with properties:
Description: ''
Filename: 'C:\Users\ahoward\OneDrive - MathWorks\Documents\MATLAB\Examples\slrequirements-ex23809012\crs_req.slmx'
Artifact: 'C:\Users\ahoward\OneDrive - MathWorks\Documents\MATLAB\Examples\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 = 0×0 empty cell array
Добавьте пользовательский атрибут каждого типа к набору ссылки. Создайте Edit пользовательский атрибут с описанием.
addAttribute(ls,'MyEditAttribute','Edit','Description','You can enter text as the custom attribute value.')
Создайте Checkbox атрибут type и набор его 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 = 1×4 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'} {'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'); setAttribute(lk,'MyDateTimeAttribute','15-Jul-2018 11:00:00');
Просмотрите значения атрибута.
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: 15-Jul-2020 08:38:26
ModifiedBy: 'ahoward'
Revision: 5
SID: 3
Comments: [0×0 struct]
Ищите набор ссылки все ссылки где MyCheckboxAttribute установлен в true.
lkArray = find(ls,'MyCheckboxAttribute',true)lkArray=1×11 object
1×11 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
1×12 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 = 1×3 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'}
Добавьте новый пользовательский атрибут, но не устанавливайте значения пользовательского атрибута для ссылок.
addAttribute(ls,'NewEditAttribute','Edit'); ls.CustomAttributeNames
ans = 1×4 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'} {'NewEditAttribute'}
Поскольку NewEditAttribute не используется никакими ссылками, можно удалить его с deleteAttribute установкой Force к false. Подтвердите изменение.
deleteAttribute(ls,'NewEditAttribute','Force',false); ls.CustomAttributeNames
ans = 1×3 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'}
Очистите открытые наборы требования и наборы ссылки, и закройте открытые модели, не сохраняя изменения.
slreq.clear;
bdclose all;addAttribute | deleteAttribute | getAttribute | inspectAttribute | setAttribute | slreq.LinkSet | updateAttribute