скрипты для altium designer
Как я писал самый большой скрипт для Altium Designer
15680 строк, 800 053 знаков — именно такой величины сегодня мой скрипт, созданный внутри Altium Designer — системы по разработке печатный плат.
Начало
Был 2014 год, я работал инженером-конструктором, разрабатывал печатные платы. Военная приемка, оформление полной конструкторской документации (КД), нормоконтроль ЕСКД — все это заставляет трепетать заграничный австралийско-китайско-американский софт, коим является система Altium. Поскольку им чужды советские ГОСТы, старые инструкции и стандарты по оформлению чертежей. Один сотрудник нашего отдела порой тратил целую рабочую смену, чтобы чертеж платы удовлетворял всем нормам и правилам по оформлению КД.
Сейчас это делается минут за 10.
Потихоньку помаленьку я расширял свои знания в программировании, поскольку до этого особо с ним не сталкивался, в универе помню маятник написал за семестр и всё.
Первый интерфейс
Дошло до того, что нужно было делать интерфейс, в самом начале он был таким:
Эта версия уже умела рисовать размеры, выноски со стрелками.
Надо понимать, что особых разъяснений в документации не было, опыта ни у кого в использовании функций из API тоже не было, только некоторые скрипты на гитхабе и стандартные альтиумовские. Описание на wiki и по сей день из разряда:
И всё описание, хотя методом проб и ошибок получалось определять как это работает.
Каждый новый раз введение новых функций доставляло удовольствие, ведь когда ты видишь, как твоими трудами люди пользуются и всё получается — это ли не то, зачем создаются программы. На этом этапе время оформления чертежей уже удалось сократить почти вдвое.
Развитие
Следующая версия уже выглядела так:
Она уже умела вставлять листы внутрь платы, штриховать полигоны для чертежа, вставлять сетку и прочие элементы для чертежа.
Главная проблема заключалась в том, что среда разработки Altium — это система для разработки печатных плат. В ней недостаточно инструментов для оформления КД, и тем более по российским стандартам. В основном написание скриптов расширяло стандартный инструментарий среды для того, чтобы можно было ещё и разработать КД и вывести его на печать.
К примеру вставку листов разных форматов я внедрил прямо в код, не стал делать отдельных файлов. Применил для этого excel таблицы, вставил руками в файл pcb форматку, выделил все свойства всех линий, их координаты, ширины, координаты текстов и т.д. и внёс все это в обычный массив. Затем уже скрипт по порядку создавал каждую из линий форматки в самом файле платы. И так для каждого листа всех форматов.
Наши дни
Сейчас же программа выглядит уже вот так:
Я ни разу не дизайнер, кнопки пришлось иногда лепить куда попало, смотрел на самые известные САПР системы, как там сделаны меню, настройки, выпадающие кнопки и прочее.
Много нервов, сил, терпения, бессонных ночей — потрачено. Оформляем чертежи на работе — бесценно.
Скрипт пишется одним мною уже четвертый год, причем без применения гита, темных тем и прочего). Только паскаль, только хардкор. Спасибо, что долистали до конца, буду рад общению!
Writing Scripts in Altium Designer
Contents
Writing Scripts
There are a number of essential concepts and terms that apply to writing scripts:
Script Languages
The default scripting language is set to DelphiScript (*.pas). The scripting engine itself is written in Embarcadero Delphi, and the Tool Palette panel is based on the Delphi’s VCL (Visual Component Library).
A DelphiScript Unit
A quick and basic scripting exercise can be completed by first creating a new project and script file. Assuming the project and script file are set to the DelphiScript language, a simple ‘Hello World’ script can be entered as below.
Within the procedure, there is a standard DelphiScript ShowMessage function that opens a dialog with the «Hello World» message, as defined by the DefaultMessage variable.
Since all variables are of the variant type in scripts, there is no need to define the DefaultMessage variable type in the script.
Running the Script
To run one of the scripts, select File » Run Script from the main menus, then choose an available script procedure from the Select Item To Run dialog. When a version is run, a dialog will open to display the message.
Running a simple HelloWorld script unit from the File » Run Script menu.
A script can also be executed using the editor’s Run command, accessed by the Run button , the F9 shortcut key, or by selecting Run » Run from the main menus.
Along with the Run command itself, the dropdown Run menu offers a range of script control and debugging commands.
When the Run command is selected for the first time, the Select Item to Run dialog will open allowing you to specify a script’s main procedure ( ShowAMessage in this case). Once set, the script is easy to run repeatedly from the editor using the Run command. Use the Run » Set Project Startup Procedure to change the setting to a different procedure, or close and reopen the script project to clear the setting.
To stop a running script, use the Stop button , select Run » Stop from the main menu, or use the Ctrl+F3 shortcut.
A DelphiScript Form
Expanding on the HelloWorld project created above, a similar script can be created using a form unit.
A Script Form is a dialog window that can host a range of controls such as buttons, memos, and list boxes. It has event handlers that respond when a control has generated an event, such as when a button is clicked.
To create the new script form, right-click on the project name from the Projects panel, choose the Add New to Project option, and select Script Form. The script can be saved and renamed using File » Save As from the main menus.
With a new script project established, add a new script to the project.
To see and edit the property values for the currently focused form or its components, open the Object Inspector panel from the Panels button at the bottom of the design workspace. The Object Inspector panel is used to change the properties of the form and insert code in the event handlers associated with the current form.
The Script Form’s window configuration and properties are demonstrated in the Object Inspector panel.
Note that the Script Form offers two tabs at the bottom of the document: the Code and Form tabs.
The Code tab contains the event handlers and procedures as shown above, while the Form tab represents the dialog and has controls and associated event handlers. Use the tabs or the F12 shortcut key to change between the two.
The Object Inspector panel shows the values of the properties for the currently focused form or its components. For this form script, change the Caption properties of the form in the Object Inspector panel from HelloWorldForm to Hello World! as shown below. These strings match those used in the example event handler and procedure code shown further below.
Use the Object Inspector panel to configure the form dialog and its action.
Add and Configure Controls
With the basic form configured, controls can be added to the dialog as required by accessing the Tool Palette panel from the Panels button at the bottom-right of the design workspace.
The Tool Palette, based on the Delphi’s Visual Component Library, is a component palette that offers a wide range of window controls that are organized as component categories (see the Palette’s Component Reference for more details).
The Tool Palette panel sections can be expanded and collapsed using the section heading tabs.
Do this twice to place two buttons on the form. One button will be used to display a ‘Hello World!’ message on a separate dialog, and the second button is used to close the main dialog.
Select a component and edit its properties in the Object Inspector panel.
Using the Object Inspector panel, the two button configurations can be changed from their default names and captions.
Event handler code can be constructed by directly referencing the controls on the form. In this example, the Display button will instigate a ShowMessage dialog on top of the existing form, and the Close button action will close this form.
Event Handler Code
Double-clicking on the Display button will open the form in Code view and create the skeleton code for its event handler. Alternatively, select the button and then the Events tab in the Object Inspector panel. Double-clicking on the OnClick event in the panel will open the code view as above. Within the Code view, the ShowMessage statement can be included in the event handler as shown in the listing below.
With the event handlers defined, there needs to be a procedure in the script to be used as the starting point when calling up the dialog from the software. This is added at the end of the code script.
Note that the form name is HelloWorldForm and the procedure name in RunHelloWorld — it’s important to have unique form names in the same script to avoid form name clashes.
The script can be saved and then run from the main menus (File» Run Script) by running the RunHelloWorld procedure item under the HelloWorldDialog entry.
Alternatively, the procedure can be assigned to the Run command/button via the Run » Set Startup Project Procedure menu.
Running a HelloWorld form script, where the form Display button activates a ShowMessage dialog.
The Object Inspector panel makes it easy to change the properties and events of a form unit. For example, to change the position of the form in the workspace, use the panel to alter the poScreenCenter value for the form’s position property. The dialog will now be placed at the center of the desktop screen when the script is run.
Calling a Procedure
As mentioned above, any script (using the same language set) within a project has access to global variables and procedures, so a procedure in one script can call another procedure in a different script in the project.
This can be demonstrated by the additional ShowAParametricMessage code section in the HelloWorld example project:
This establishes a string variable ‘ S ‘ that can be passed to the ShowAParametricMessage procedure.
The passed string will be displayed using the ShowMessage dilaog function, whereas a simple If-Then-Else method causes a default ‘Hello World!’ message to display if the string is empty.
To see this in action, open the example project ( HelloWorld.PrjScr ) and add the grey highlighted line into the HelloWorldDialog script (not the HelloWorld script), as shown below.
When the HelloWorldDialog script is run and the Close button is clicked, the global ShowAParametricMessage procedure is called from the HelloWorld script.
A parametric procedure in the HelloWorld script is called from the HelloWorldDialog script.
The call passes ‘Goodbye World’ message string to the ShowAParametricMessage procedure, so this message is displayed when the Close button is clicked, prior to the form closing.
The script call shown above inserts a specified message in the HelloWoldDialog form close procedure.
Как работать со скриптами в Altium Designer
Как найти и добавить скрипты для Altium Designer.
Что такое скрипты
Скрипт – это программный код, созданный пользователем для автоматизации повторяющихся задач или для расширения существующих функциональных возможностей ПО, что позволяет сэкономить время при работе в этом ПО. Altium Designer обладает встроенным редактором создания скриптов, и пользователи могут создавать как собственные скрипты, так и использовать те, что созданы сообществом.
Как найти и скачать скрипты для Altium Designer
Так как большинство авторов скриптов хранит их в репозиториях на GitHub, то целесообразно установить программу Github Desktop (https://desktop.github.com/) для синхронизации с репозиториями и всегда иметь самую актуальную версию скриптов. Используя программу Github Desktop, выполните клонирование репозиториев со скриптами, которые вам понравились.
Для этого запустите команду File » Clone Repository и в открывшемся окне выберите вкладку URL и укажите ссылку на репозиторий с понравившимся скриптом. В поле Local Path укажите путь C:\Users\Public\Documents\Altium\ADScripts.
Подробнее про работу со скриптами можно найти в видео: Как создать первый скрипт и в документации: Scripting System Overview & Setup.
Если скрипты будут храниться на рабочей машине в папке C:\Users\Public\Documents\Altium\ADScripts, то вы можете загрузить файл с настройками (ссылка), в котором использованы возможности кастомизации интерфейса и добавлены кнопки для скриптов описанных в статье (файл с настройками будет обновляться по мере появления новых скриптов).
Как запускать скрипты в Altium Designer
Для быстрого запуска скриптов создан Toolbar и выпадающий список со скриптами, описанными в данной статье, а также назначены горячие клавиши на некоторые скрипты. Перечень репозиториев со скриптами которые используются в файле с настройками приведен в файле (ссылка).
Для загрузки настроек кастомизации:
Используя систему кастомизации можно создать пункты меню привязанные к скриптам самостоятельно. Для этого необходимо:
Дополнительные ссылки
Сообщество
Если вы не смогли самостоятельно разобраться со скриптами, то можете обратиться за помощью в сообщество в телеграмм чате: Altium&Electronics.
10 полезных скриптов для Altium Designer
Подборка скриптов для Altium Designer для автоматизации некоторых инженерных задач (создание планарных трансформаторов, расчет тока, копирование формата объектов, нанесение паяльной пасты и многое другое). Скрипты выложены в общий доступ и ими можно пользоваться уже сейчас.
В процессе работы инженера иногда возникают ситуации, когда необходимо автоматизировать многократно повторяющуюся задачу либо расширить функционал путем расчета координат и параметров примитивов на основе различных формул. Система создания сценариев имеет доступ к API редакторов Altium Designer.
Через API можно иметь прямой доступ к объектам редактора и вызывать имеющиеся функции. Язык написания скриптов — Delphi. На сегодняшний день основным репозиторием со скриптами является репозиторий на GitHub: Scripts-libraries, частные репозитории отдельных инженеров и набор скриптов-примеров от компании Altium: example script collection.
Скрипты для Altium Designer
Создание планарных спиралей (SpiralTrack)
Скрипт SpiralTrack разработан для упрощения создания спиральных планарных структур на печатной плате. После запуска скрипта будет предложено указать точку, в которой будет расположен центр спирали.
Затем откроется диалоговое окно, в котором будет предложено указать расстояние между витками спирали, ширину проводника, количество витков, размещаемый слой и размеры переходного отверстия в центре спирали. После нажатия на кнопку OK спираль будет сгенерирована и размещена в указанных координатах.
Скрипт доступен по ссылке: Zip-архив, Github.
Создание планарных трансформаторов (PlanarTX)
Скрипт PlanarTX разработан для упрощения создания планарных трансформаторов, выполненных проводниками в проводящем слое на печатной плате.
После запуска скрипта будет предложено указать точку, в которой будет центр трансформатора, затем откроется диалоговое окно, в котором будет предложено указать расстояние между витками, ширину проводника, количество витков, слой размещения, отступ от сердечника, радиус скругления сердечника и размеры сердечника в центре трансформатора.
После нажатия на кнопку OK витки трансформатора будут сгенерированы и размещены в указанных координатах.
Скрипт доступен по ссылке: Zip-архив, Github.
Расчет допустимого тока проводника (Current Calculator)
Скрипт Current Calculator разработан для автоматического расчета плотности тока (в амперах) выделенного проводника с учетом его допустимого перегрева на 1, 5, 10 и 20 градусов.
Скрипт определяет, находится ли дорожка на внутреннем или внешнем слое, определяет его длину и толщину и рассчитывает сопротивление.
Скрипт доступен по ссылке: Zip-архив, Github.
Перенумерация контактных площадок (RenumberPads)
Скрипт помогает перенумеровать контактные площадки в новом порядке. В основном применяется в библиотеках Altium PCBLib. Запустите скрипт, выберите начальный индекс и приращение.
Затем, щелкая по контактным площадкам в новом порядке выполняется перенумерация контактных площадок с новыми обозначениями.
Скрипт доступен по ссылке: Zip-архив, Github.
Поиск неиспользуемых переходных отверстий (SelectViaAntennas)
Этот скрипт выделяет неиспользуемые переходные отверстия на плате (переходные отверстия, соединенные только на одном слое). Такие переходные отверстия по факту являются паразитными антеннами и их желательно удалять.
В скрипте можно удалить последнюю строку Client.PostMessage(‘PCB:RunQuery’… тогда переходные отверстия вместо режима маскирования останутся выделенными.
Скрипт доступен по ссылке: Zip-архив, Github.
Копировать форматирование (FormatCopy)
Скрипт позволяет скопировать форматирование с одного объекта на другой. Работает с контактными площадками, переходными отверстиями, размерами, координатами, строками, регионами и полигонами в печатной плате и всех объектах редактора схем.
Принцип работы аналогичен подобным инструментам в других программах – выбираем объект-источник форматирования, затем выбираем объект-приемник форматирования.
Скрипт доступен по ссылке: Zip-архив, Github.
Этот скрипт имеет свежее обновление от BrettLMiller: Github (Обновлён 26/12/2020)
Конвертер единиц измерения Metric — Imperial (mil-mm-conv)
Простой в использовании калькулятор для перевода единиц измерения из метрической системы в британскую и наоборот. Он поддерживает кастомизацию. Подробнее на Wiki.
Как использовать:
Cкрипт доступен по ссылке: Zip-архив, Github.
Удаление всех выделенных объектов в библиотеке посадочных мест (DeleteAllSelectedItemsInPCBLib)
Этот скрипт можно использовать для удаления выбранных объектов в библиотеке посадочных мест. В настоящее время в Altium Designer можно удалять только выделенные объекты, которые являются частью видимого в данный момент посадочного места.
Этот скрипт удаляет выделенные объекты, которые находятся в других посадочных местах текущей библиотеки PCBLib. Выделение объектов в пределах всей библиотеки можно выполнить используя Find Similar Objects с установленным флагом Whole Library.
Cкрипт доступен по ссылке: Zip-архив, Github.
Этот скрипт имеет обновление от BrettLMiller: Github (обновлён 8 января 2021).
Обновление высоты посадочного места на основе высоты 3D-модели (UpdateFootprintHeightFrom3dModelHeight).
Скрипт обновляет высоту посадочного места в зависимости от высоты его 3D-модели (в библиотеке посадочных мест). Работает только с Extruded 3D моделями, копируется значение OverallHeight модели.
Cкрипт доступен по ссылке: Zip-архив, Github.
Создание перечня листов проекта (CreateTableOfContents)
Скрипт, который можно использовать для создания таблицы с перечнем листов проекта (Table Of Contents) на вновь созданном листе верхнего уровня в PCB Project. Запустите скрипт, введите параметры таблицы, выберите шрифт и нажмите на кнопку Create TOC.
Для работы скрипта необходимо, чтобы все листы схемы были открыты. Для быстрого открытия всех листов схем проекта, можно воспользоваться командой Open All Schematic Documents из контекстного меню папки Source Documents в панели Projects.
Cкрипт доступен по ссылке: Zip-архив, Github.
Проверка правил проектирования в определенной области (RunDesignRules)
Этот скрипт позволяет выполнить проверку правил проектирования в привязке к определенному объекту либо в определенной зоне печатной платы. Скрипт имеет две команды для запуска.
Первая команда просит указать объект для проверки правил проектирования, вторая команда просит указать область платы в которой необходимо выполнить проверку правил проектирования.
Cкрипт доступен по ссылке: Github
Скругление линий и дуг (FilletObjects).
Скрипт позволяет выполнять ряд геометрических операций при работе с линиями в Altium Designer. В скрипте содержится 4 процедуры:
Описание работы со скриптом доступно на сайте автора: cad-design
Cкрипт доступен по ссылке: Zip-архив, sourceforge, зеркало на Github.
Дополнительные ссылки
Сообщество
Если вы не смогли самостоятельно разобраться со скриптами, то можете обратиться за помощью в сообщество в телеграмм чате: Altium&Electronics.