15680 строк, 800 053 знаков — именно такой величины сегодня мой скрипт, созданный внутри Altium Designer — системы по разработке печатный плат.
Начало
Был 2014 год, я работал инженером-конструктором, разрабатывал печатные платы. Военная приемка, оформление полной конструкторской документации (КД), нормоконтроль ЕСКД — все это заставляет трепетать заграничный австралийско-китайско-американский софт, коим является система Altium. Поскольку им чужды советские ГОСТы, старые инструкции и стандарты по оформлению чертежей. Один сотрудник нашего отдела порой тратил целую рабочую смену, чтобы чертеж платы удовлетворял всем нормам и правилам по оформлению КД.
Сейчас это делается минут за 10.
Я решил, что можно упростить жизнь и себе, и ещё десятку человек на работе. Начал разбираться, нашел, что есть открытый API, стал смотреть примеры и вуаля, мой первый скрипт для Altium уже рисует линию на плате -радости нет предела.
Потихоньку помаленьку я расширял свои знания в программировании, поскольку до этого особо с ним не сталкивался, в универе помню маятник написал за семестр и всё.
Первый интерфейс
Дошло до того, что нужно было делать интерфейс, в самом начале он был таким:
Эта версия уже умела рисовать размеры, выноски со стрелками.
Надо понимать, что особых разъяснений в документации не было, опыта ни у кого в использовании функций из API тоже не было, только некоторые скрипты на гитхабе и стандартные альтиумовские. Описание на wiki и по сей день из разряда:
SetState_Enabled method
(IPCB_Primitive interface)
Syntax
Procedure SetState_Enabled (Value : Boolean);
Description
Example
See also
IPCB_Primitive interface
И всё описание, хотя методом проб и ошибок получалось определять как это работает.
Каждый новый раз введение новых функций доставляло удовольствие, ведь когда ты видишь, как твоими трудами люди пользуются и всё получается — это ли не то, зачем создаются программы. На этом этапе время оформления чертежей уже удалось сократить почти вдвое.
Развитие
Следующая версия уже выглядела так:
Она уже умела вставлять листы внутрь платы, штриховать полигоны для чертежа, вставлять сетку и прочие элементы для чертежа.
Главная проблема заключалась в том, что среда разработки Altium — это система для разработки печатных плат. В ней недостаточно инструментов для оформления КД, и тем более по российским стандартам. В основном написание скриптов расширяло стандартный инструментарий среды для того, чтобы можно было ещё и разработать КД и вывести его на печать.
К примеру вставку листов разных форматов я внедрил прямо в код, не стал делать отдельных файлов. Применил для этого excel таблицы, вставил руками в файл pcb форматку, выделил все свойства всех линий, их координаты, ширины, координаты текстов и т.д. и внёс все это в обычный массив. Затем уже скрипт по порядку создавал каждую из линий форматки в самом файле платы. И так для каждого листа всех форматов.
Наши дни
Сейчас же программа выглядит уже вот так:
Я ни разу не дизайнер, кнопки пришлось иногда лепить куда попало, смотрел на самые известные САПР системы, как там сделаны меню, настройки, выпадающие кнопки и прочее.
Итого на борту:
- Более 50 настроек, сохранение их внутри файла платы
- Обновление чертежей при внесении изменений в плату
- Автоматическая вставка видов в центр листов
- Формирование PDF в одну кнопку
- Редактирование размеров с пересчетом отклонений налету
- Радиальная сетка, 4х сторонняя сетка, риски, настраиваемый шаг
- Сохранение эскизных рисунков в txt формате для дальнейшего использования
и многое другое.
Много нервов, сил, терпения, бессонных ночей — потрачено. Оформляем чертежи на работе — бесценно.
Скрипт пишется одним мною уже четвертый год, причем без применения гита, темных тем и прочего). Только паскаль, только хардкор. Спасибо, что долистали до конца, буду рад общению!
Автор: рыцарь со стволом