Skip to content

ibnteo/zenpcb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

ZenPCB

Библиотека на питоне для создания Gerber-файлов, необходимых для изготовления печатных плат.

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

Создание своего проекта начинается с создания файла с расширением MyProject.py, где MyProect это имя вашего проекта:

#!/usr/bin/env python3
#coding: utf-8
from zenpcb import *
pcb = ZenPCB('MyProject')

Создание слоя

Поддерживаются следующие слои:

  • TopLayer - верхний слой метализации, файл MyProject.GTL
  • BottomLayer - нижний слой метализации, файл MyProject.GBL, надписи должны быть отзеркалены
  • TopSilkscreen - верхний слой шелкографии, файл MyProject.GTO
  • BottomSilkscreen - нижний слой шелкографии, файл MyProject.GBO, надписи должны быть отзеркалены
  • TopSoldermask - верхний слой паяльной маски, файл MyProject.GTS
  • BottomSoldermask - нижний слой паяльной маски, файл MyProject.GBS
  • BoardOutline - обрезка платы, файл MyProject.GKO
  • Drills - сверловка платы, файл MyProject.XLN, формат Excellon-2, для формирования использовать класс ZenPCBDrill

Для всех слоёв кроме Drills следует использовать класс ZenPCBLayer, который формирует файлы в формате RS-274X.

В заголовке слоя указывается команда %FSLAX34Y34*%, используются абсолютные координаты, измерения в миллиметрах, у значений координат требуется наличие четырёх знаков после запятой, при изменении этого параметра потребуется изменить форматирование чисел в коде.

При создании слоя следует указать его имя из списка выше, и указать словарь с названиями и значениями апертур:

bottom = pcb.layer('BottomLayer', {'10': 'C,.7000', '11':'C,2.0000', '12':'C,2.5000', '13':'R,2.0000X1.0000'})

Создаётся слой нижней метализации с апертурами:

  • 10 - круглая диаметром 0.7 мм
  • 11 - круглая диаметром 2 мм
  • 12 - круглая диаметром 2.5 мм
  • 13 - прямоугольная 2x1 мм

Апертуры 11 и 12 используются для рисования контактных площадок вокруг отверстий, 13 - для создания прямоугольных площадок для SMD-деталей, 10 - для создания дорожек.

Для создания слоя сверловки следует использовать метод drill(name, apertures) и имени слоя Drills, формат апертур немного отличается:

drill = pcb.drill('Drills', {'01': 'C.9000', '02': 'C4.0000', '03': 'C1.7000', '04': 'C1.5000'})

Рисование апертурами

Перед рисованием необходимо включить нужную апертуру методом aperture(aperture), указав цифровое имя апертуры:

bottom.aperture('11')

Если нужно просто отпечатать апертуру в нужном месте, используется метод light(x, y, absolute):

bottom.light(10, 10).light(20, 10)

Методы можно вызывать цепочками, один за другим.

По-умолчанию указываются абсолютные координаты, но если указать третий параметр как False, то будут использованы относительные координаты от последних в этом слое этой апертуры, поэтому при смене апертуры следует переместить курсор по абсолютным координатам.

Перемещение курсора осуществляется методом move(x, y, absolute):

bottom.aperture('10').move(15, 10)

Рисовать от последней точки к указанной можно методом draw(x, y, absolute):

bottom.aperture('10').move(15, 10).draw(20, 10).move(0, 10, False).draw(-5, 0, False)

Здесь последние два метода осуществляют передвижение по относительным координатам, сначала перемещение апертуры без света на 10 мм по оси Y, а потом с включённым светом на 5 мм по оси X влево.

Для обхода препятствий есть метод bypass(x, y, r1, r2, side), кроме абсолютных координат необходимо указать длину и ширину обходного манёвра, и указать в какую сторону будем обходить: 'left', 'right', 'up', 'down'.

Для рисования дуг применяется метод arc(x, y, absolute), дуги всегда рисуются по часовой стрелке от текущей точки до указанной, круг рисуется четырьмя дугами от текущей точки указанным радиусом circle(r).

Создание проекта

Если необходимо изменить имена файлов в проекте, это можно сделать изменив значения в словаре filenames:

pcb.filenames['BottomLayer'] = 'MyProject.BOT'

Сформировать весь проект в директории gerber и упаковать его в архив MyProject.zip необходимо методом save():

pcb.save()

Проверка проекта

Посмотреть на проект можно в любом просмотрщике Gerber-файлов, например gerbv.

About

Create Gerber files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages