Хабрахабр

[Из песочницы] Как я писал самый большой скрипт для Altium Designer

15680 строк, 800 053 знаков — именно такой величины сегодня мой скрипт, созданный внутри Altium Designer — системы по разработке печатный плат.

image

Начало

Был 2014 год, я работал инженером-конструктором, разрабатывал печатные платы. Военная приемка, оформление полной конструкторской документации (КД), нормоконтроль ЕСКД — все это заставляет трепетать заграничный австралийско-китайско-американский софт, коим является система Altium. Поскольку им чужды советские ГОСТы, старые инструкции и стандарты по оформлению чертежей. Один сотрудник нашего отдела порой тратил целую рабочую смену, чтобы чертеж платы удовлетворял всем нормам и правилам по оформлению КД.
Сейчас это делается минут за 10.

Начал разбираться, нашел, что есть открытый API, стал смотреть примеры и вуаля, мой первый скрипт для Altium уже рисует линию на плате -радости нет предела. Я решил, что можно упростить жизнь и себе, и ещё десятку человек на работе.

Потихоньку помаленьку я расширял свои знания в программировании, поскольку до этого особо с ним не сталкивался, в универе помню маятник написал за семестр и всё.

Первый интерфейс

Дошло до того, что нужно было делать интерфейс, в самом начале он был таким:

image

Эта версия уже умела рисовать размеры, выноски со стрелками.

Описание на wiki и по сей день из разряда: Надо понимать, что особых разъяснений в документации не было, опыта ни у кого в использовании функций из API тоже не было, только некоторые скрипты на гитхабе и стандартные альтиумовские.

SetState_Enabled method
(IPCB_Primitive interface)
Syntax
Procedure SetState_Enabled (Value : Boolean);
Description
Example
See also
IPCB_Primitive interface

И всё описание, хотя методом проб и ошибок получалось определять как это работает.

На этом этапе время оформления чертежей уже удалось сократить почти вдвое. Каждый новый раз введение новых функций доставляло удовольствие, ведь когда ты видишь, как твоими трудами люди пользуются и всё получается — это ли не то, зачем создаются программы.

Развитие

Следующая версия уже выглядела так:

image

Она уже умела вставлять листы внутрь платы, штриховать полигоны для чертежа, вставлять сетку и прочие элементы для чертежа.

В ней недостаточно инструментов для оформления КД, и тем более по российским стандартам. Главная проблема заключалась в том, что среда разработки Altium — это система для разработки печатных плат. В основном написание скриптов расширяло стандартный инструментарий среды для того, чтобы можно было ещё и разработать КД и вывести его на печать.

Применил для этого excel таблицы, вставил руками в файл pcb форматку, выделил все свойства всех линий, их координаты, ширины, координаты текстов и т.д. К примеру вставку листов разных форматов я внедрил прямо в код, не стал делать отдельных файлов. Затем уже скрипт по порядку создавал каждую из линий форматки в самом файле платы. и внёс все это в обычный массив. И так для каждого листа всех форматов.

Наши дни

Сейчас же программа выглядит уже вот так:

image

image

Я ни разу не дизайнер, кнопки пришлось иногда лепить куда попало, смотрел на самые известные САПР системы, как там сделаны меню, настройки, выпадающие кнопки и прочее.

Вот пример работы самого скрипта

image

image

Итого на борту:

  • Более 50 настроек, сохранение их внутри файла платы
  • Обновление чертежей при внесении изменений в плату
  • Автоматическая вставка видов в центр листов
  • Формирование PDF в одну кнопку
  • Редактирование размеров с пересчетом отклонений налету
  • Радиальная сетка, 4х сторонняя сетка, риски, настраиваемый шаг
  • Сохранение эскизных рисунков в txt формате для дальнейшего использования

и многое другое.

Оформляем чертежи на работе — бесценно. Много нервов, сил, терпения, бессонных ночей — потрачено.

Только паскаль, только хардкор. Скрипт пишется одним мною уже четвертый год, причем без применения гита, темных тем и прочего). Спасибо, что долистали до конца, буду рад общению!

Пример оформленного чертежа внутри PCB

Версия программы, чтобы попробовать

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»