Скрипт-проект Altium Designer
Скриптпроект Altium Designer (<имя проекта>. PrjScr) представляет собой текстовое программное приложение, использующее так называемый интерфейс программирования приложений — API (Application Programming Interface) для управления процессами и модификации объектов в открытых проектах других видов (PCB, FPGA и др.).
Скриптсистема Altium Designer позволяет формировать программное приложение (скрипт) двух видов:
1. Script Unit — скриптединица — программное приложение, управляющее модификацией глобальных настроек (DXP Preferences), объектов в схемных документах, библиотеках или документе печатной платы выбранного активного проекта. В простейшем случае — это текстовое сообщение, выводимое на экран монитора поверх документа активного проекта.
2. Script Form — скриптформа — программное приложение, включающее диалоговое окно, которое пользователь программирует для управления работой собственно скриптпрограммы, включая в него виртуальные кнопки и другие экранные функции.
Для скриптпрограммирования доступны шесть языков высокого уровня:
- Borland Delphi Pascal — (DelphiScript);
- Java — (JScript);
- Visual Basic — (VBScript);
- Enable Basic — (EnableBasicScript);
- TCL — язык программирования TCL;
- Query Language — язык запросов Altium Designer.
В частности, входящая в поставку программного комплекса Altium Designer система формирования скриптов на языке Delphi включает следующие варианты скриптпроектов:
- General Scripts — скрипты общего назначения — вывод на экран текстовых надписей, изображений, модификация iniфайлов, архивация документов и др.;
- DXP Scripts — скрипты, управляющие настройками DXPплатформы;
- PCB Scripts — скрипты, управляющие модификацией объектов в документах печатной платы;
- SCH Scripts — скрипты, управляющие модификацией объектов в схемных документах;
- Processes Scripts — скрипты, управляющие процессами Altium Designer;
- Workspace Manager Scripts — скрипты, управляющие модификацией объектов рабочего пространства проектов.
В версиях программного комплекса по Summer 09 в поставку, в директорию …\Examples\Scripts\ включалась «Галерея примеров» из более чем 270 примеров скриптпрограмм, позволяющих освоить систему скриптпрограммирования в среде Altium Designer. В новых версиях, начиная с AD 10, данные примеры располагаются на интернетсайте производителя www.altium.com.
Прежде всего ознакомимся с терминологией, используемой в скриптсистеме Altium Designer.
- API (Application Programming Interface) — так называемый интерфейс программирования приложений, используемый для модификации объектов в документах проектов;
- интерфейсы API автоматически доступны для использования в скриптах;
- Altium Designer Runtime Library — библиотека интерфейсов API;
- каждая программаредактор Altium Designer имеет свой интерфейс API. Например, редактор печатных плат имеет интерфейс PCB API, редактор схем — интерфейс Schematic API и т.д.;
- Object Model — модель объекта, используемая интерфейсом API, состоит из интерфейсов объектов (Object Interface);
- Object Interface — интерфейс объекта. Состоит из методов (Methods) и свойств (Properties) и служит для отображения объектов, используемых в скриптах с целью извлечения и модификации данных в открытых проектных документах;
- Methods (Методы) — действия, которые может выполнять интерфейс объекта;
- Properties (Свойства) интерфейса объекта отображают данные, содержащиеся в объекте, представляемом интерфейсом;
- Script Form (Скриптформа) — диалоговое окно, программируемое пользователем с целью управления функциями скриптпрограммы;
- Components (Компоненты) — видимые в окне скриптформы объекты, помещаемые в форму из плавающей панели Tool Palette и служащие для управления работой скриптприложения. Называются также Controls (Управляющие воздействия);
- Events (События) — воздействия, на которые реагирует компонент в скриптформе;
- Processes (Процессы) — командные строки, применяемые для исполнения команд скриптприложения.
Формирование и исполнение скриптединицы
1. Командой главного меню File -> New -> Project -> Script Project образовать новый скриптпроект (рис. 1).
2. Щелчком правой кнопки на имени проекта Script_Project_1.PrjScr в панели Projects активизировать контекстное меню и командой Save Project As сохранить проект с новым именем.
3. Активизировать контекстное меню аналогично второму пункту и указать в нем цепочку подкоманд формирования скриптединицы (в нашем случае на языке программирования Delphi) Add New to Project -> Delphi Script Unit (рис. 2).
4. В панели Projects к дереву скриптпроекта присоединяется узел EditScript1.pas; одновременно в главном окне программы открывается одноименное поле для записи текста.
5. Предположим, что мы хотим вывести на экран приветствие: «Добро пожаловать в скриптсистему Altium Designer!» Для этого нужно ввести с клавиатуры в поле EditScript1.pas следующий текст скриптединицы:
Рис. 1. Образование нового скрипт-проекта
Рис. 2. Команда образования скрипт-единицы
Procedure ShowAMessage;
Var
DefaultMessage;
Begin
DefaultMessage := ‘Добро пожаловать в скриптсистему Altium Designer!’;
ShowMessage(DefaultMessage);
End;
6. Командой File -> Save As сохранить текстовый файл скриптединицы с новым именем, например, Welcome_to_AD.pas.
7. Для исполнения скриптединицы — вывода на экран приветствия — выполнить команду главного меню DXP -> Run Script, после чего в диалоговом окне выбора единицы для исполнения Select Item To Run указать имя процедуры ShowAMessage (рис. 3).
8. Поверх открытого документа активного PCBпроекта в окне DXP выводится запрограммированное сообщение.
Рис. 3. Исполнение скрипт-единицы
Формирование и исполнение скриптформы
Образуем скриптформу для вывода на экран того же приветствия «Добро пожаловать в скриптсистему Altium Designer!» под управлением двух экранных кнопок: Display (Показать) и Close (Закрыть). Для образования скриптформы в составе активного скриптпроекта следует:
1. Щелчком правой кнопки на имени проекта активизировать контекстное меню, указать в нем команду Add New To Project и выбрать подкоманду Delphi Script Form. К дереву документов проекта присоединяется новый узел EditScript1.pas.
2. Командой меню File -> Save As сохранить документ скриптформы с новым именем, например, Welcome_Form.pas.
3. В главном окне программы появляются две вкладки: Code — поле для составления текста программного приложения и Form — поле редактирования состава функций диалогового окна скриптформы. Выбираем вкладку Form (рис. 4) и переходим к редактированию диалогового окна скриптформы.
4. Кнопкой Script в обрамлении главного окна программы активизировать панель «Инспектор объектов» — Object Inspector (рис. 5).
Рис. 4. Дерево проекта и вкладки главного окна программы
Рис. 5. Редактирование свойств скрипт-формы
5. На вкладке Properties панели Инспектора выполним следующие настройки:
- в строку Caption (Заголовок) вводим имя для диалогового окна скриптформы, например Welcome, которое сразу отображается в заголовке окна;
- в строку Name вводим имя процедуры исполняемого программного приложения WelcomeForm1; после нажатия клавиши Enter в верхнем поле панели Инспектора отображается строка с именем процедуры:
WelcomeForm1:TWelcomeForm1
6. В нашем примере необходимо внести в диалоговое окно скриптформы две экранные кнопки. Для этого:
- кнопкой Script в правом нижнем углу главного окна программы активизируем контекстное меню и открываем панель рабочего пространства Tool Palette (рис. 6, правая панель), в которой размещены более ста пиктограмм инструментов управления для скриптформы (компонентов);
- выбираем в панели Tool Palette компонент TButton, перемещаем курсор в окно скриптформы и фиксируем кнопку Button1 в поле окна щелчком левой кнопки мыши;
- повторяем это действие еще раз и помещаем в окно скриптформы вторую кнопку — Button2 (рис. 6, в центре).
Рис. 6. Назначение инструментов управления для скрипт-формы
7. Далее следует присвоить кнопкам имена и обозначить выполняемые ими функции. Для этого:
- выбрать курсором кнопку Button1 (изображение кнопки отмечается значками«прищепками»);
- в панели Object Inspector (рис. 6, левая панель) отображаются свойства кнопки;
- в строку Caption ввести имя кнопки — Display;
- в строку Name ввести обозначение функции кнопки: bDisplay — в верхнем поле панели Инспектора отображается строка bDisplay:TButton;
- повторить все действия для второй кнопки, указав при этом имя Close и функцию bClose.
8. Теперь необходимо определить процедуры, которые выполняются по щелчку кнопок управления. Для этого:
- выбрать курсором кнопку Display и перейти в панели Инспектора на вкладку Events (События);
- выбрать на вкладке Events (События Mouse -> OnClick (по щелчку мыши) и двойным щелчком в поле с именем функции bDisplayClick открыть вкладку Code в главном окне программы;
- на вкладке Code открываются составленные программой при редактировании свойств кнопок процедуры обработки событий — щелчков на кнопках Display и Close (рис. 7);
Рис. 7. Заготовка процедур обработки событий
- тела процедур пока пусты, поскольку действия, производимые щелчком по каждой из кнопок, еще не запрограммированы;
- вводим в текст на экране тело каждой из двух процедур: для первой процедуры — это оператор ShowMessage — показать сообщение, а для второй — оператор Close (Закрыть), в результате чего текст на экране приобретает вид:
procedure TWelcomeForm1.bDisplayClick(Sender: TObject);
begin
ShowMessage(‘Добро пожаловать в скриптсистему Altium Designer!’);
end;
procedure TWelcomeForm1.bCloseClick(Sender: TObject);
begin
Close;
end;
9. В текст скриптприложения необходимо еще включить процедуру, дающую старт исполнению скриптформы по команде DXP -> Run Script:
Procedure RunWelcome_Form;
Begin
WelcomeForm1.ShowModal;
End;
10.Сохраним отредактированный файл скриптформы и командой DXP -> Run Script запускаем ее исполнение:
- в открывающемся окне выбора скрипта для исполнения (рис. 8) выбираем процедуру Welcome_Form.pas>RunWelcome_Form;
- по щелчку на OK открывается диалоговое окно скриптформы Welcome;
Рис. 8. Исполнение скрипт-формы
- по щелчку на кнопке Display открывается окно DXP с приветствием: «Добро пожаловать в скриптсистему Altium Designer!»;
- по щелчку на OK окно DXP с приветствием закрывается, но исполнение скриптформы на этом не заканчивается: повторным щелчком по кнопке Display вывод приветствия может быть повторен;
- если окно с приветствием закрыто, щелчком по кнопке Close исполнение скриптформы прекращается.
Покажем еще один пример выполнения скриптформы из «Галереи примеров», поставляемой с версией Altium Designer Summer 09, — редактирование диаметров отверстий на печатной плате, аналогичное выполнению в Altium Designer в панели PCB с использованием функции Hole Size Editor:
1. Откроем файл скриптпроекта, расположенный в памяти компьютера по адресу: …\Examples\Scripts\DelphiScript Scripts\PCB\Hole Size Editor\Hole Size Editor.PrjScr. Дерево проекта включает две скриптформы и одну скриптединицу:
- HSForm.pas — главное скриптприложение, код которого содержит все основные процедуры редактирования, взаимодействующие через интерфейс PCB API с объектами PCBдокумента;
- HSEditForm.pas — скриптформа, активизируемая из главной скриптформы HSForm.pas и осуществляющая непосредственное изменение диаметров отверстий;
- Customsort.pas — скриптединица, также активизируемая из главной скриптформы HSForm.pas и осуществляющая сортировку отверстий по размеру.
Программный код упомянутых скриптов не приводится, поскольку для его понимания от читателя требуется детальное знакомство с языком программирования DelphiScript, а научить ему в рамках нашей статьи не представляется возможным.
2. Активизируем документ печатной платы одного из PCBпроектов, доступных в панели Projects, и командой DXP -> Run Script запускаем исполнение скриптформы.
3. В окне Select Item To Run (рис. 9) указываем пункт RunHoleSizeEditor. По щелчку на OK открывается диалоговое окно Hole Size Editor скриптформы HSForm.pas. Видим, что окно насыщено большим количеством компонентов (инструментов управления):
Рис. 9. Редактирование диаметров отверстий в PCB-документе
- в поле Hole Sizes Found (Найденные размеры отверстий) — компонент TListBox — отображен список размеров отверстий на печатной плате;
- в поле Include (Включить) — компонент TGroupBox — расположены гнезда с флажками включения в список отверстий контактных площадок (Pads) и переходных отверстий (Vias) — компоненты TCheckBox;
- в поле Unit (Единицы измерения) расположены «радиокнопки» выбора дюймовой ( Imperial) и метрической систем единиц измерения ( Metric) — компоненты TRadioButton;
- кнопки Edit (редактировать), OK и Cancel — знакомые нам по предыдущему примеру компоненты TButton;
- в нижней части окна размещаются сведения о полном числе отверстий на плате — компоненты TLabel.
4. Выберем в списке один из размеров (отверстия данного размера отмечаются на плате цветными метками селекции) и кнопкой Edit запустим редактирование.
5. В открывающемся окне Edit Hole Size скриптформы HSEditForm.pas
изменяем диаметр отверстия и щелчками на OK последовательно закрываем окна обеих скриптформ, а с ними и операцию редактирования.
В заключение отметим, что здесь нам удалось получить лишь поверхностное знакомство с возможностями скриптсистемы Altium Designer. В данном изложении нет возможности рассмотреть такие вопросы, как синтаксис языков программирования скриптприложений, функции APIинтерфейса, модели объектов скриптсистемы, различные виды скриптов. Подробное рассмотрение всех этих вопросов можно найти в ХЕЛПдокументах или документах «Центра знаний» (Knowledge Center) на сайте фирмыпроизводителя
www.altium.com1.
По существу, скриптсистема представляет собой органически встроенный элемент клиентсерверной технологии, лежащей в основе всех функций Altium Designer, и является мощным средством управления, повышающим эффективность САПР при выполнении проектной работы и редактировании проектов и библиотек компонентной базы.