|
<< Click to Display Table of Contents >> Navigation: Интерфейс редактора проекта > Операции в редакторе проекта > Скрипт C# > Общие сведения по работе со скриптами C# |
Все действия по автоматизации проекта должны быть реализованы внутри метода DoAction(), который добавлен в редактор по умолчанию:

В этом методе осуществляется программное взаимодействие с объектной моделью проекта - через неё можно получать, создавать, изменять и удалять элементы проекта, управлять их свойствами и настраивать взаимодействие между компонентами.
Для работы с деревом проекта необходимо получить ссылки на его основные элементы в объектной модели, определив переменные:
var rootItemModel = this.RootItemModel; //Переменная для обращения к дереву проекта (объектной модели) var systemRoot = rootItemModel.System; //Переменная для обращения к дереву системы var objectsRoot = rootItemModel.Objects; //Переменная для обращения к дереву объектов var libraryRoot = rootItemModel.Libraries; //Переменная для обращения к дереву библиотек |
Удалять и дублировать корневые элементы проекта нельзя. При попытке удаления и дублирования будет вызвано соответствующее предупреждение.
Для добавления различных элементов используются методы Add"Name", где Name - это тип добавляемого элемента. Возможность добавления зависит от типа родительского элемента.
Например:
•Добавления узла АРМ в систему:
systemRoot.AddARM("Новый_АРМ"); |
•Добавление объекта в дерево объектов:
var newObject = objectsRoot.AddObject("Новый_Объект"); |
В данном примере создается переменная, чтобы иметь возможность работать с этим элементом.
Если в аргументе метода добавления не указать имя, то имя будет добавлено по умолчанию, например
Помимо добавления можно создать цепочку вложенных добавлений. Например:
newObject.AddFolder().AddTagBase().AddFolder().AddParameter(); |
Для работы с существующими элементами необходимо получить их из проекта. Для этого можно использовать 3 метода:
•GetChildByName(имя искомого элемента) - метод получения дочернего элемента по имени;
•GetChildByNamePath(полный путь до элемента) - метод получения дочернего элемента по полному пути;
•GetItemById(Id искомого этемента) - метод получения элемента по Id.
Для обращения к элементам необходимо указывать его тип в формате:
var 'имя_переменной' = ('Тип_элемента') 'переменная_области_поиска'.GetChildByName('Имя_элемента');
Примеры использования методов:
var myObject = (ObjectItem)objectsRoot.GetChildByName("Объект 3"); // Получение объекта var tag = (TagItem)objectsRoot.GetChildByNamePath("Объекты.Объект 3.Базовый тег 1"); // Получение базового тега var item = rootItemModel.GetItemById(18216); // Получение элемента по Id |
Для удаления элементов используется метод Delete() . В общем виде команда будет выглядеть следующим образом:
'переменная_элемента'.Delete()
Пример использования метода:
newObject.Delete(); |
Для дублирования элементов используется метод Duplicate(). В общем виде команда будет выглядеть следующим образом:
'переменная_элемента'.Duplicate ('количество элементов')
В процессе дублирования действует следующий принцип: новому элементу присваивается имя в формате <Имя>N, где <Имя> - имя для данного типа элемента, а N – числовой индекс. Определяется максимальный индекс M. При отсутствии свободных числовых значений менее M, новому элементу присваивается индекс M+1. Если же среди чисел меньше M имеются «пропуски», то выбирается минимальное свободное число.
Пример использования метода:
newObject.Duplicate(2); // Будет создано 2 копии объекта |
Для вывода данных об элементах проекта в консоль используется метод WriteConsole.
Примеры использования метода:
this.WriteConsole("Имя объекта: " + obj.Name); // Вывод имени элемента с переменной obj this.WriteConsole("Полное имя: " + obj.FullName); // Вывод полного имени элемента с переменной obj this.WriteConsole("Тип: " + obj.TypeName); // Вывод типа элемента с переменной obj this.WriteConsole("\nнайден элемент - " + objectsRoot.GetChildByName("Объект 3").Name + "\n"); // Проверка на существование элемента по имени |
Смотрите также:
Объектная модель, классы, их свойства и методы
Соотношение элементов и типов объектной модели