Easyelectronics.ru

Электроника для всех
Текущее время: 15 окт 2019, 19:01

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 24 ] 
Автор Сообщение
 Заголовок сообщения: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 12:31 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Всем привет.

Решил запилить скрипт для удобной работы с герберами формата RS-274X. Сейчас скрипт умеет клонировать текущий файл гербера заданное кол-во раз и смещать клоны на заданное расстояние. Скрипт заточен под герберы генерируемые скриптом из EagleCAD и представляющие собой такой список файлов:
Код:
Hub USB 2.0.GBL
Hub USB 2.0.GBO
Hub USB 2.0.GBS
Hub USB 2.0.GML
Hub USB 2.0.GTL
Hub USB 2.0.GTO
Hub USB 2.0.GTP
Hub USB 2.0.GTS
Hub USB 2.0.TXT

Файл сверловки может быть в формате Excellon.
Скрипт написан на nodeJs но в планах сделать онлайн версию. Благо для этого все есть, вопрос только времени.
Установка скрипта простая. Для этого требуется установить nodeJS и NPM, далее клонируем репу с github: https://github.com/saewave/GerberMerge и запускаем в папке npm install.
После этого скрипт готов к работе. Герберы нужно помещать в папку gerber_files (другую можно задать параметром) и потом из командной строки клонировать герберы, например:
Код:
node GerberMerge.js --in "Hub USB 2.0" --dy 1.289765

Клонирует все герберы в поддирректории "Hub USB 2.0" и сдвигает клоны на --dy 1.289765 дюйма.
Код:
node GerberMerge.js --in "Hub USB 2.0/Hub USB 2.0.GTL" --clone 2 --dy .72

Делает то же самое только с конкретным файлом и будет 2 клона в одном файле (т.е. всего 3 платы).

Что в планах:
    Сделать таки merge из разных герберов в один;
    Сделать поворот клонированного слоя;
    Сделать онлайн версию.

Кому интересно - приглашаю к тестированию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 13:42 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6210
Сразу допилите файл ini, в котором перечислены имена расширений слоев. В том числе "не очевидных". Например, у меня фрезеровка в специальном слое. OrCAD.
Кстати, чаще всего я делают маленькие платы, а ЛУТ ... понятного размера. Поэтому я размножаю количество по обеим осям, вырезая нужное количество после печати. Т.е. надо(бы) предусмотреть размножение в строки и столбцы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 16:21 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
u37 писал(а):
Сразу допилите файл ini, в котором перечислены имена расширений слоев. В том числе "не очевидных". Например, у меня фрезеровка в специальном слое. OrCAD.

Так все файлы герберов имеют одинаковый формат внутри, только расширение разное. Есть параметр, который отключает фильтр и можно просто натравить на папку с файлами и он все их переварит.
u37 писал(а):
Кстати, чаще всего я делают маленькие платы, а ЛУТ ... понятного размера. Поэтому я размножаю количество по обеим осям, вырезая нужное количество после печати. Т.е. надо(бы) предусмотреть размножение в строки и столбцы.

Да, можно предусмотреть. Сейчас это решается двойным вызовом - сначала по столбцам, потом уже обработанный файл по строкам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 17:11 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6210
В каталоге могут лежать герберы с разных проектов (разных версий). Т.е. имя проекта вводить надо (если нету, то ALL). Во-вторых, много лишних слоев. Типичный ЛУТ = 1 слой (+шелкогрфия) + паяльная маска + сверловка. Для OrCAD сверловка - файл "thruhole.tap".
Теоретически, можно ввести автодетект, как это делает CAM350 ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 17:39 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Дайте ваши герберы для тестирования, если не военная тайна.
Что там за формат у этих .tap файлов. Не работал с ними.
ini файлы можно придумать, но в них есть смысл только если проект(ы) все стандартные - один раз настроил, потом копируешь в папку с проектом и забываешь. Вообщем нужно более детально продумать этот вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 18:25 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6210
Плата JLINK на 072
Слои шелкографии не используются - они только для сборки. Тоже для слоёв AS*
Основные файлы - .dsn (схема) и .max(плата)


Вложения:
jlink_072.rar [74 Кб]
Скачиваний: 128
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 21:56 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Хм, не все генераторы заботятся о том, чтоб сдвинуть плоттер к начальной точке без черчения
Вложение:
Default.aspx.png
Default.aspx.png [ 40.96 Кб | Просмотров: 3017 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 23:11 
Старожил

Зарегистрирован: 29 сен 2011, 23:44
Сообщения: 2692
Откуда: новосиб
https://geektimes.ru/company/unwds/blog/270182/ читал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 26 июн 2017, 23:21 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
woddy писал(а):
https://geektimes.ru/company/unwds/blog/270182/ читал?

Даже какое-то время пользовался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 27 июн 2017, 01:37 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
alexsam писал(а):
Хм, не все генераторы заботятся о том, чтоб сдвинуть плоттер к начальной точке без черчения

Но и мы не лыком шиты :)
Вложение:
Default.aspx-3.png
Default.aspx-3.png [ 88.79 Кб | Просмотров: 2978 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 27 июн 2017, 02:08 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 1025
alexsam писал(а):
Но и мы не лыком шиты :)

А можно ли доверять корректности отображения Gerber файлов сервису www.gerber-viewer.com?
Попробовал отобразить тестовый файл из репозитория проекта gerbv (из папки test test-polygon-fill-1.gbx)
и он как то не так отобразился как в сравнении с тест картинкой приложенной в проекте gerbv.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 27 июн 2017, 02:14 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
KPG писал(а):
alexsam писал(а):
Но и мы не лыком шиты :)

А можно ли доверять корректности отображения Gerber файлов сервису http://www.gerber-viewer.com?
Попробовал отобразить тестовый файл из репозитория проекта gerbv (из папки test test-polygon-fill-1.gbx)
и он как то не так отобразился как в сравнении с тест картинкой приложенной в проекте gerbv.

Верить никому нельзя. Мне можно (Ц)
:)
Мои платы пока-что отображаются как задумано.
Вложение:
Default.aspx-5.png
Default.aspx-5.png [ 66.33 Кб | Просмотров: 2970 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 02 авг 2017, 22:42 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Очередное обновление скрипта. Новое:
  • Обучил мержу нескольких герберов в один, как по одиночке, так и каталогами. Теперь можно натравить скрипт на желаемые каталоги со сгенеренными герберами и он найдет совпадения (по расширению) и сольет их в один сгруппировав по расширению (пример будет ниже)
  • Добавил возможность чтения конфига из ini файла (параметр ini-section). ini файл один, а в нем можно определить секции для своих проектов и потом просто указывать какую секцию использовать. Например делаете проект для ЛУТа - создали секцию lut и в ней определили какие расширения будут мержится или клонироваться. Делаете проекты для заказа на производстве - определяете секцию с параметрами для производства.
  • Добавились параметры sx, sy для сдвига по X и по Y относительно начала координат. Так же можно просто сдвинуть плату не клонируя и не мержа.
  • Добавил параметр init-coords для проверки блоков D. Если в блоке первая команда не сдвигает плотер а рисует линию относительно предыдущего блока, то это приведет к искажению плат. init-coords проверят нужно ли смещать координаты перед тем как начинать рисовать.
  • Добавил параметр merge который собственно и определяет поведение скрипта - просто клонирование или клонирование с мержем
  • Некоторые параметры наследуются, например можно указать шаг сдвига один раз и он будет использоваться для всех плат, а можно указать несколько раз и для каждого файла будет свое значение параметра
Скрипт так же обрабатывает файлы сверловки в формате excellon.

Ограничения
- тестировался на файлах, сгенереных ExgleCAD. И те, что присылали выше.
- на данный момент скрипт понимает только те файлы, которые содержат заголовок. Файлы сверловки вида:
Код:
%
T1C0.0197F200S100
X010050Y003550
X010100Y002600
T3C0.0394F200S100
X016223Y002115
X016223Y003846
M30

на данный момент не смержаться. Но я над этим работаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 02 авг 2017, 22:50 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Пример:
Код:
node GerberMerge.js --in "Hub USB 2.0" --clone 1 --in "Switch-1.5v-MFU" --clone 2 --init-coords --zero L --places 2,5 --sx 2.7 --sx 0 --dy .74 -m

Сливаем две папки "Hub USB 2.0" и "Switch-1.5v-MFU" в одну
файлы из "Hub USB 2.0" клонируем 1 раз, остальные 2 раза (--clone 1 и --clone 2)
проверяем координаты --init-coords
нули Leads --zero L
формат числа 2,5 --places 2,5
сдвиг платы "Hub USB 2.0" на 2.7 inch. --sx 2.7
сдвиг второй платы на 0 --sx 0
каждую клонированную плату сдвигаем на 0.74 inch. --dy .74
мержим -m
результат:
Вложение:
gw.jpg
gw.jpg [ 205.79 Кб | Просмотров: 2624 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 19 сен 2017, 01:12 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Готовые платы после мержа скриптом:
Изображение
Изображение
Можно считать эксперимент удавшимся.
P.s. делал платы пока только из герберов, которые генерит EagleCAD, с другими не экспериментировал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 09 окт 2017, 01:42 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 277
Попробовал скрипт на герберах от кикада. Получился какой-то ужос :D
Вот исходные файлы:
Вложение:
gerber_files.zip [78.61 Кб]
Скачиваний: 113


Мерджил командой
Код:
node GerberMerge.js --in "1" --clone 1 --in "2" --clone 1 --init-coords --zero L --places 2,5 --sy 0 --sy 1.968503937007874 -m


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 09 окт 2017, 11:24 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
Неисключено, герберы от кикада не видел и не тестил на них :)
Посмотрю что он там генерит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 10 окт 2017, 00:59 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
У вас там кикад генерит герберы с такими настройками:
Код:
    Settings for file:
        Units:             mm
        Type:              gerber
        Zero:              L
        Places:            4,6

Используйте --show-info для вывода общей информации из конкретного файла.
Вам нужно задавать --places 4,6 --units mm

P.s. units можно не задавать, просто имейте ввиду что --sy должен быть в mm.
P.s.2 если не задавать dx/dy то смысла ставить --clone 1 нет т.к. скрипт склонирует, а двигать каждую клонированную не будет, просто сдвинет начальную точку на --sy.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 10 окт 2017, 08:45 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 277
Спасибо! Но всё равно даже с --places 4,6 --units mm результат получается неправильным. Результирующий гербер получился вот таким:
Вложение:
res.gif
res.gif [ 62.56 Кб | Просмотров: 1753 ]

Хотя исходные выглядели вот так:
Вложение:
1.png
1.png [ 177.99 Кб | Просмотров: 1753 ]


Вложение:
2.png
2.png [ 159.52 Кб | Просмотров: 1753 ]


PS: мерджил так:
Код:
node GerberMerge.js --in "1" --in "2" --init-coords --zero L --places 4,6 --units mm --sy 0 --sy 50 -m

Сами герберы просматриваю на https://gerber-viewer.easyeda.com
Ещё похоже что файлы *.gm1 (контур платы) он не мерджит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 10 окт 2017, 12:00 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1931
Откуда: Харьков
А слона-то я и не заметил :)
Вообще у кикада какой-то странный формат рисования получается, такое ощущение, что он в Гербер пишет в той последовательности, в которой вы разводили на плате. Я к этому был не готов )
Но я посмотрю, интересно победить ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 10 окт 2017, 16:57 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 277
Заранее спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 11 окт 2017, 12:02 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 277
Выкладываю по просьбе alexsam-а


Вложения:
gerber3.zip [3.04 Кб]
Скачиваний: 111
gerber2.zip [5.31 Кб]
Скачиваний: 104
gerber1.zip [4.04 Кб]
Скачиваний: 111
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 14 окт 2017, 15:00 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 277
Оказывается, в кикаде есть всё, чтобы можно было объединять платы. Так что вопрос снимается


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Делаю скрипт для мержа Gerber файлов
СообщениеДобавлено: 20 окт 2017, 16:44 
Старожил

Зарегистрирован: 26 апр 2013, 23:55
Сообщения: 999
Че за х...ня http://www.cyberforum.ru/electronics/thread2105637.html >> дамп

Изображение
Изображение

админ кибера решил тырить материалы с электроникса, проставляя день ранее )))

p.s.: заметил сегодня, неделей ранее не было как этой темы и нескольких других (висят как новые). Интересно, "бот" и мой пост скопипастит. Ну, привет тебе, двуличное чудо.

_________________
Белорусский журнал «Радиолюбитель»
Мои разработки http://raxp.radioliga.com


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB