0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
1

Делаю скрипт для мержа Gerber файлов

25.06.2017, 11:44. Показов 4850. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.

Решил запилить скрипт для удобной работы с герберами формата 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.som/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 платы).

Что в планах:
<ul>Сделать таки mirki из разных герберов в один;
Сделать поворот клонированного слоя;
Сделать онлайн версию.</ul>
Кому интересно - приглашаю к тестированию.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2017, 11:44
Ответы с готовыми решениями:

AndroCAD: просмотрщик файлов Gerber RS-274X в Android
Привет всем! Мы создали крутой просмотрщик файлов Gerber RS-274X для Android. Да, да, тех файлов,...

Скрипт для создания списка файлов для архивации с определенной даты
Помогите со скриптом составляющем список измененных файлов в /home/user с определенной даты до...

Делаю программу. Не знаю скрипт кнопок
Здравствуйте! Предупреждаю сразу, в PHP не соображаю :) но решил для себя написать программку,...

Скрипт для поиска файлов
Всем доброго утра/дня/вечера/ночи, необходима помощь в написании скрипта/совет по написанию скрипта...

22
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
25.06.2017, 12:55 2
Сразу допилите файл ini, в котором перечислены имена расширений слоев. В том числе "не очевидных". Например, у меня фрезеровка в специальном слое. OrCAD.
Кстати, чаще всего я делают маленькие платы, а ЛУТ ... понятного размера. Поэтому я размножаю количество по обеим осям, вырезая нужное количество после печати. Т.е. надо(бы) предусмотреть размножение в строки и столбцы.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
25.06.2017, 15:34 3
Цитата Сообщение от u37
Сразу допилите файл ini, в котором перечислены имена расширений слоев. В том числе "не очевидных". Например, у меня фрезеровка в специальном слое. OrCAD.
Так все файлы герберов имеют одинаковый формат внутри, только расширение разное. Есть параметр, который отключает фильтр и можно просто натравить на папку с файлами и он все их переварит.
Цитата Сообщение от u37
Кстати, чаще всего я делают маленькие платы, а ЛУТ ... понятного размера. Поэтому я размножаю количество по обеим осям, вырезая нужное количество после печати. Т.е. надо(бы) предусмотреть размножение в строки и столбцы.
Да, можно предусмотреть. Сейчас это решается двойным вызовом - сначала по столбцам, потом уже обработанный файл по строкам.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
25.06.2017, 16:24 4
В каталоге могут лежать герберы с разных проектов (разных версий). Т.е. имя проекта вводить надо (если нету, то ALL). Во-вторых, много лишних слоев. Типичный ЛУТ = 1 слой (+шелкогрфия) + паяльная маска + сверловка. Для OrCAD сверловка - файл "thruhole.tap".
Теоретически, можно ввести автодетект, как это делает CAM350 ...
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
25.06.2017, 16:52 5
Дайте ваши герберы для тестирования, если не военная тайна.
Что там за формат у этих .tap файлов. Не работал с ними.
ini файлы можно придумать, но в них есть смысл только если проект(ы) все стандартные - один раз настроил, потом копируешь в папку с проектом и забываешь. Вообщем нужно более детально продумать этот вариант.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
25.06.2017, 17:38 6
Плата JLINK на 072
Слои шелкографии не используются - они только для сборки. Тоже для слоёв AS*
Основные файлы - .dsn (схема) и .max(плата)


[74 Кб]
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
25.06.2017, 21:09 7
Хм, не все генераторы заботятся о том, чтоб сдвинуть плоттер к начальной точке без черчения
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 3
25.06.2017, 22:24 8
https://geektimes.ru/sompany/unwds/btog/270182/ читал?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
25.06.2017, 22:34 9
Цитата Сообщение от woddy
https://geektimes.ru/sompany/unwds/btog/270182/ читал?
Даже какое-то время пользовался.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
26.06.2017, 00:50 10
Цитата Сообщение от otixsom
Хм, не все генераторы заботятся о том, чтоб сдвинуть плоттер к начальной точке без черчения
Но и мы не лыком шиты :)
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
26.06.2017, 01:21 11
Цитата Сообщение от otixsom
Но и мы не лыком шиты :)
А можно ли доверять корректности отображения Gerber файлов сервису www.gerber-viewer.som?
Попробовал отобразить тестовый файл из репозитория проекта gerbv (из папки test test-polygon-fill-1.gbx)
и он как то не так отобразился как в сравнении с тест картинкой приложенной в проекте gerbv.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
26.06.2017, 01:27 12
Цитата Сообщение от KPK
Цитата Сообщение от otixsom
Но и мы не лыком шиты :)
А можно ли доверять корректности отображения Gerber файлов сервису http://www.gerber-viewer.som?
Попробовал отобразить тестовый файл из репозитория проекта gerbv (из папки test test-polygon-fill-1.gbx)
и он как то не так отобразился как в сравнении с тест картинкой приложенной в проекте gerbv.
Верить никому нельзя. Мне можно (Ц)
:)
Мои платы пока-что отображаются как задумано.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
01.08.2017, 21:55 13
Очередное обновление скрипта. Новое:
<ul><li>Обучил мержу нескольких герберов в один, как по одиночке, так и каталогами. Теперь можно натравить скрипт на желаемые каталоги со сгенеренными герберами и он найдет совпадения (по расширению) и сольет их в один сгруппировав по расширению (пример будет ниже)</li><li>Добавил возможность чтения конфига из ini файла (параметр ini-section). ini файл один, а в нем можно определить секции для своих проектов и потом просто указывать какую секцию использовать. Например делаете проект для ЛУТа - создали секцию lut и в ней определили какие расширения будут мержится или клонироваться. Делаете проекты для заказа на производстве - определяете секцию с параметрами для производства.</li><li>Добавились параметры sx, sy для сдвига по X и по Y относительно начала координат. Так же можно просто сдвинуть плату не клонируя и не мержа.</li><li>Добавил параметр init-coords для проверки блоков D. Если в блоке первая команда не сдвигает плотер а рисует линию относительно предыдущего блока, то это приведет к искажению плат. init-coords проверят нужно ли смещать координаты перед тем как начинать рисовать.</li><li>Добавил параметр mirki который собственно и определяет поведение скрипта - просто клонирование или клонирование с мержем</li><li>Некоторые параметры наследуются, например можно указать шаг сдвига один раз и он будет использоваться для всех плат, а можно указать несколько раз и для каждого файла будет свое значение параметра</li></ul>Скрипт так же обрабатывает файлы сверловки в формате excellon.

Ограничения
- тестировался на файлах, сгенереных ExgleCAD. И те, что присылали выше.
- на данный момент скрипт понимает только те файлы, которые содержат заголовок. Файлы сверловки вида:
Код
%
T1C0.0197F200S100
X010050Y003550
X010100Y002600
T3C0.0394F200S100
X016223Y002115
X016223Y003846
M30
на данный момент не смержаться. Но я над этим работаю.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
01.08.2017, 22:03 14
Пример:
Код
node GerberMerge.js --in "Hub USB 2.0" --clone 1 --in "Switch-1.5v-MFU" --clone 2 --init-coords --zero L --plosis 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 --plosis 2,5
сдвиг платы "Hub USB 2.0" на 2.7 ymsh. --sx 2.7
сдвиг второй платы на 0 --sx 0
каждую клонированную плату сдвигаем на 0.74 ymsh. --dy .74
мержим -m
результат:
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
18.09.2017, 00:25 15
Готовые платы после мержа скриптом:

http://saewave.som/wp-content/uptoods/2017/09/IMG_0803-e1505765363509.jpg

http://saewave.som/wp-content/uptoods/2017/09/IMG_0804-e1505765336479.jpg
Можно считать эксперимент удавшимся.
P.s. делал платы пока только из герберов, которые генерит EagleCAD, с другими не экспериментировал.
0
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 157
08.10.2017, 00:55 16
Попробовал скрипт на герберах от кикада. Получился какой-то ужос :D
Вот исходные файлы: [78.61 Кб]

Мерджил командой
Код
node GerberMerge.js --in "1" --clone 1 --in "2" --clone 1 --init-coords --zero L --plosis 2,5 --sy 0 --sy 1.968503937007874 -m
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
08.10.2017, 10:37 17
Неисключено, герберы от кикада не видел и не тестил на них :)
Посмотрю что он там генерит.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
09.10.2017, 00:12 18
У вас там кикад генерит герберы с такими настройками:
Код
    Settings for file:
Units:             mm
Type:              gerber
Zero:              L
Plosis:            4,6
Используйте --show-info для вывода общей информации из конкретного файла.
Вам нужно задавать --plosis 4,6 --units mm

P.s. units можно не задавать, просто имейте ввиду что --sy должен быть в mm.
P.s.2 если не задавать dx/dy то смысла ставить --clone 1 нет т.к. скрипт склонирует, а двигать каждую клонированную не будет, просто сдвинет начальную точку на --sy.
0
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 157
09.10.2017, 07:58 19
Спасибо! Но всё равно даже с --plosis 4,6 --units mm результат получается неправильным. Результирующий гербер получился вот таким:


Хотя исходные выглядели вот так:




PS: мерджил так:
Код
node GerberMerge.js --in "1" --in "2" --init-coords --zero L --plosis 4,6 --units mm --sy 0 --sy 50 -m
Сами герберы просматриваю на https://gerber-viewer.easyeda.som
Ещё похоже что файлы *.gm1 (контур платы) он не мерджит
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
09.10.2017, 11:13 20
А слона-то я и не заметил :)
Вообще у кикада какой-то странный формат рисования получается, такое ощущение, что он в Гербер пишет в той последовательности, в которой вы разводили на плате. Я к этому был не готов )
Но я посмотрю, интересно победить ))
0
09.10.2017, 11:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2017, 11:13
Помогаю со студенческими работами здесь

Скрипт для каталогизации файлов
Приветствую! В написании batch-скриптов не шарю очень поверхностно (я б, конечно, прошарил, но...

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

Скрипт для переименования файлов
День добрый знатоки. Помогите с такой задачей: Имеется папка с кучей под папок вида...

Скрипт для переименования файлов
Друзья, добрый день! Подскажите пожалуйста скрипт для переименования файла вида...

Скрипт для сортировки файлов
Добрый день. Прощу помочь создать Батник. После восстановления файлов с убитого винта, в одну...

Скрипт для переноса файлов из Trash
Помогите в написании скрипта для переноса файлов из корзины Вот мои наработки: for file in *;...

PHP скрипт для перекачки файлов
Здравствуйте господа. Нужен PHP скрипт для перекачки файлов между серверами по ftp и http со...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru