Если вы начинали со Sprint Layout, то наверное помните диалог печати, который позволяет совместить на листе сколько-то копий одной и той же платы. К сожалению, одной единственной, или одного и того же слоя.
В kicad’е нет и этого. Если плата здоровая, а изготавливать с первого раза уже получается почти всегда, то это нормально. Но если вдруг надо изготовить сразу пачку мелких плат, или отпечатать сразу два слоя рядом… В общем, облом.
Посему, начал я думать над каким-нибудь костылем. kicad отлично выводит как в gerber (для производства) так и в postscript (для кустарного производства). Последнее-то мне и приглянулось.
Рамку смело выкидываем в реактор, она нам не понадобится.
После выведения в postscript мы имеем несколько .ps файликов, с каждым слоем. Каждый занимает A4 страницу.
Первым делом надо их перегнать во что-то удобоваримое. Сначала я перегнал их в png imagemagic’ом и увидел здоровенный холст на страницу размером. Не вариант, ибо bounding box оно не считает, и картинка выйдет во весь лист. На помощь пришла маленькая утилитка ps2eps. Она создает векторное eps изображение из постсрипта и обсчитывает тот самый bounding box. Иными словами, в LaTeX документ можно будет эту картинку воткнуть тупо при помощи заклинания
\includegraphics[scale=1]{jtagice-1.eps} |
И это будет гарантировать масштаб 1:1, то есть если это статья для журнала, то читатели вашей научной статьи смогут ксерануть страничку на глянец и сразу сделать плату для своего домашнего реактора.
Теперь, остается только автоматизировать процесс.
Немного покумекав, я соорудил вот такой костыль.
В виде аргументов скармливаем:
1. Как обозвать проект в первой и единственной строчки текста.
2. Сколько раз изпользовать каждый из файлов
3. Сами файлики. Много их…
Скрипт требует наличие LaTeX’a, а в конце запускает окуляр. Последние строчки скрипта можно подкрутить по вкусу, но смысл изменится врядли. В идеале, конечно, можно было подкрутить оформление. Была мысля соорудить рамку по ЕСКД ради прикола, но она много места на листе занимает, так что отправилась она прямиком в реактор.
#!/bin/bash # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it # and/or modify it under the terms of the Do What The Fuck You Want # To Public License, Version 2, as published by Sam Hocevar. See # http://sam.zoy.org/wtfpl/COPYING for more detail usage() { echo "mkpcb. (c) 2011, Necromant" echo "Generate a printable document out of several postscript images. " echo "usage: mkpcb project_name n file1.ps file2.ps ..." echo "where n is the number of times to use each file" echo "Great for exporting PCBs from kicad for batch printout" } if [ "$#" -lt "3" ]; then echo "Need moar args" usage exit 1 fi if [ "$1" == "--help" ]; then usage exit 1 fi gen_latex() { cat << EOF \documentclass[a4paper,14pt]{report} %размер бумаги устанавливаем А4, шрифт 12пунктов \usepackage[T2A]{fontenc} \usepackage{extsizes} \usepackage{listings} \usepackage{longtable} \usepackage{courier} \usepackage{tabularx} \usepackage{framed} \usepackage[utf8]{inputenc}%включаем свою кодировку: koi8-r или utf8 в UNIX, cp1251 в Windows \usepackage[english,russian]{babel}%используем русский и английский языки с переносами \usepackage{amssymb,amsfonts,amsmath,mathtext,cite,enumerate,float} %подключаем нужные пакеты расширений \usepackage[dvips]{graphicx} %хотим вставлять в диплом рисунки? \graphicspath{{data/images}}%путь к рисункам \makeatletter \renewcommand{\@biblabel}[1]{#1.} % Заменяем библиографию с квадратных скобок на точку: \makeatother %\usepackage{geometry} % Меняем поля страницы %\geometry{left=2cm}% левое поле %\geometry{right=1.5cm}% правое поле %\geometry{top=1cm}% верхнее поле %\geometry{bottom=2cm}% нижнее поле \usepackage[a4paper,left=30mm,right=15mm,top=25mm,bottom=25mm]{geometry} \renewcommand{\theenumi}{\arabic{enumi}}% Меняем везде перечисления на цифра.цифра \renewcommand{\labelenumi}{\arabic{enumi}}% Меняем везде перечисления на цифра.цифра \renewcommand{\theenumii}{.\arabic{enumii}}% Меняем везде перечисления на цифра.цифра \renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}.}% Меняем везде перечисления на цифра.цифра \renewcommand{\theenumiii}{.\arabic{enumiii}}% Меняем везде перечисления на цифра.цифра \renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.}% Меняем везде перечисления на цифра.цифра \renewcommand{\lstlistingname}{Листинг \No} \renewcommand{\baselinestretch}{1.25} %\addtocounter{chapter}{0} % не хочу нумеровать главы %\setcounter{secnumdepth}{-1} % глубина оглавления \begin{document} EOF echo "Plots for Project $1 ($2 pieces each)\\" echo "" echo "" COUNT=$2 shift shift ps2eps $* while [ "$COUNT" -gt "0" ]; do for plot in $*; do echo "\includegraphics[scale=1]{`basename $plot .ps`.eps}" let COUNT-=1 #\includegraphics[scale=1]{2.eps} #%\includegraphics[scale=1]{jtagice-1.eps} #%\includegraphics[scale=1]{jtagice-1.eps} done done echo "\end{document}" } gen_latex $* > output.tex latex output.tex okular output.dvi |