Плюс авторазводка. Идея собственно такая - имеем нетлист соединений, далее система сама раскидывает корпуса и раздвигает по мере авторазводки в соответствии с заранее установленными ограничениями (ширина дорожек, расстояние между дорожек, размер дырок и т.д.) - в результате получаем плату минимального размера при заданных условиях...Shaos wrote:Есть желание (но нету времени) сделать из этих наработок полноценный редактор Гербер-файлов (под GPLv3 естественно)
Кто со мной?
[VULTURED] Пишем программки на Си для играния с форматом Гербер и т.д.
Moderator: Shaos
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re:
Плюс редактор схем для ввода (по юзер интерфейсу - копия Eagle v5) под названием скажем Vulture (то бишь птица Гриф)Shaos wrote:Плюс авторазводка. Идея собственно такая - имеем нетлист соединений, далее система сама раскидывает корпуса и раздвигает по мере авторазводки в соответствии с заранее установленными ограничениями (ширина дорожек, расстояние между дорожек, размер дырок и т.д.) - в результате получаем плату минимального размера при заданных условиях...Shaos wrote:Есть желание (но нету времени) сделать из этих наработок полноценный редактор Гербер-файлов (под GPLv3 естественно)
Кто со мной?

P.S. Пусть будет vultured (типа гриф-редактор)

P.P.S. Я даже доменное имя уже прихватизировал - vultu.red

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Пишем программки на Си для играния с форматом Гербер...
Чего-то сломалось в gif-либе в последних линуксах - не собирается больше нифига 
Придется переписать на использование PNG
P.S. Либо взять публик-домейную реализацию GIF-сохранялки...

Придется переписать на использование PNG
P.S. Либо взять публик-домейную реализацию GIF-сохранялки...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Пишем программки на Си для играния с форматом Гербер...
Вот поглядим внутрь простого гербера, сгенерённого в Eagle v5 (вспоминая чего я собственно расковырял в 2010 году, сочиняя свою рисовальную программку):
Полный текст файла под спойлером (формат Gerber RS-274X):
Грубо этот файл можно разбить на три части:
1) заголовок - можно тупо не вдаваясь в подробности сохранить его как есть и вставлять во все герберы (к заголовку также можно отнести макрос %AMOC8, который задаёт форму восьмигранных площадок)
2) добавление "кистей" (или как их лучше назвать) %ADDnn и далее тип C - круглые, R - прямоугольные, OC8 - восьмигранные (макрос)
3) непосредственно само рисование - сначала ставится "кисть" Dnn* (где nn номер кисти), а потом строчки с координатами:
XnnnnnnYnnnnnnDmm*
где mm это команда плоттеру:
03 - ткнуть выбранной "кисточкой" в указанные координаты (т.е. опустить и тут же поднять, оставив отпечаток)
02 - опустить "кисть" в указанные координаты (и оставить её там)
01 - провести "кистью" до новых координат (если далее опять идёт команда 01, то продолжаем рисовать)
Файл заканчивается командой M02*
Продолговатые контактные площадки рисуются как прочерк круглого пера диаметром 0.06 дюйма:
X004403Y004542D02*
X003803Y004542D01*
Вот самый простейший Гербер - четыре линии, рисующие прямоугольник, обозначающий границы платы:
Как видим размер пера тут 0 целых 0 десятых (т.е. не для рисования на плате).
Ещё из интересного - команды "рисования" построены так, чтобы минимизировать пустые движения - типа рисуем справа-налево, потом слева-направо и т.д.
Файлы дырок (в формате "Excellon") ещё более простые:
Между двумя процентами находится заголовок - там некие предустановки начинающиеся с буквы M - их просто тупо копируем не вдаваясь в детали
Далее задаются размеры "свёрел" - TnnCдиаметрвдюймах (все дырки у нас C - круглые)
Далее само сверление:
Тnn - выбираем "сверло"
XnnnnYnnnn - сверлим дырку в указанных координатах
Файл завершается командой M30
Полный текст файла под спойлером (формат Gerber RS-274X):
Грубо этот файл можно разбить на три части:
1) заголовок - можно тупо не вдаваясь в подробности сохранить его как есть и вставлять во все герберы (к заголовку также можно отнести макрос %AMOC8, который задаёт форму восьмигранных площадок)
2) добавление "кистей" (или как их лучше назвать) %ADDnn и далее тип C - круглые, R - прямоугольные, OC8 - восьмигранные (макрос)
3) непосредственно само рисование - сначала ставится "кисть" Dnn* (где nn номер кисти), а потом строчки с координатами:
XnnnnnnYnnnnnnDmm*
где mm это команда плоттеру:
03 - ткнуть выбранной "кисточкой" в указанные координаты (т.е. опустить и тут же поднять, оставив отпечаток)
02 - опустить "кисть" в указанные координаты (и оставить её там)
01 - провести "кистью" до новых координат (если далее опять идёт команда 01, то продолжаем рисовать)
Файл заканчивается командой M02*
Продолговатые контактные площадки рисуются как прочерк круглого пера диаметром 0.06 дюйма:
X004403Y004542D02*
X003803Y004542D01*
Вот самый простейший Гербер - четыре линии, рисующие прямоугольник, обозначающий границы платы:
Code: Select all
G75*
G70*
%OFA0B0*%
%FSLAX24Y24*%
%IPPOS*%
%LPD*%
%AMOC8*
5,1,8,0,0,1.08239X$1,22.5*
%
%ADD10C,0.0000*%
D10*
X000105Y000107D02*
X000105Y008227D01*
X008097Y008227D01*
X008097Y000107D01*
X000105Y000107D01*
M02*
Ещё из интересного - команды "рисования" построены так, чтобы минимизировать пустые движения - типа рисуем справа-налево, потом слева-направо и т.д.
Файлы дырок (в формате "Excellon") ещё более простые:
Между двумя процентами находится заголовок - там некие предустановки начинающиеся с буквы M - их просто тупо копируем не вдаваясь в детали
Далее задаются размеры "свёрел" - TnnCдиаметрвдюймах (все дырки у нас C - круглые)
Далее само сверление:
Тnn - выбираем "сверло"
XnnnnYnnnn - сверлим дырку в указанных координатах
Файл завершается командой M30
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re:
Это потому что я слои soldermask рисовал как сплошные площадки, а на самом деле они чуть ширше самих площадок т.к. олицетворяют собою дырки в зелёнке, через которые будет наноситься припой на оголённую медь, например вот размер восьмигранных площадок в слоях меди (верхний и нижний соответственно):Shaos wrote:Когда сконвертил все свои платы из игла обратил внимание, что на получившихся GIF-ах у SMD компонентов контактные площадки выглядят чуть больше чем надо (а у QFP вообще слипаются) - что там я не до конца расковырял...
dip2.top:%ADD11OC8,0.0600*%
dip2.bot:%ADD12OC8,0.0600*%
а вот в soldermask-слоях (также верхний и нижний):
dip2.smt:%ADD11OC8,0.0680*%
dip2.smb:%ADD11OC8,0.0680*%
Как видим soldermask имеет размер на 0.008 дюйма больше
Надо это как-то предусмотреть при отрисовке и не заливать soldermask-слои сплошняком, как щас моя рисовальная программка делает
P.S. Заодно восьмигранники можно починить
P.P.S. Существует эталонный онлайн просмотрщик герберов от мантейнеров стандарта: https://gerber-viewer.ucamco.com/
P.P.P.S. Википедия пишет (см. https://en.wikipedia.org/wiki/Gerber_format), что в 2016 году в стандарт герберов добавили возможность сохранять netlist информацию - это значит, что уже сейчас герберы можно использовать непосредственно в редакторах печатных плат - не только как результат для отдавания в производство, но и процессе разработки!
P.P.P.P.S. Вот от авторов про Gerber X2: https://www.ucamco.com/en/gerber/demo-1
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Re:
Наверное VultureD можно начать разрабатывать как просмотрщик-редактор герберов, как предполагалось изначально, а там видно будет...Shaos wrote:Плюс редактор схем для ввода (по юзер интерфейсу - копия Eagle v5) под названием скажем Vulture (то бишь птица Гриф)Shaos wrote:Плюс авторазводка. Идея собственно такая - имеем нетлист соединений, далее система сама раскидывает корпуса и раздвигает по мере авторазводки в соответствии с заранее установленными ограничениями (ширина дорожек, расстояние между дорожек, размер дырок и т.д.) - в результате получаем плату минимального размера при заданных условиях...Shaos wrote:Есть желание (но нету времени) сделать из этих наработок полноценный редактор Гербер-файлов (под GPLv3 естественно)
Кто со мной?
P.S. Пусть будет vultured (типа гриф-редактор)
P.P.S. Я даже доменное имя уже прихватизировал - vultu.red
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Пишем программки на Си для играния с форматом Гербер...
Вобщем предварительно вот такой заголовок будет у моих кустарно сгенерённых герберов:
Code: Select all
FILE* fopenGE(char* suffix)
{
FILE* f;
char str[256];
strncpy(str,ccc,256);
strncat(str,suffix,256);
str[255] = 0;
f = fopen(str,"wt");
if(f!=NULL)
{
fprintf(f,"G75*\n");
fprintf(f,"G70*\n");
fprintf(f,"%OFA0B0*%\n");
fprintf(f,"%FSLAX24Y24*%\n");
fprintf(f,"%IPPOS*%\n");
fprintf(f,"%LPD*%\n");
fprintf(f,"%AMOC8*\n");
fprintf(f,"5,1,8,0,0,1.08239X$1,22.5*\n");
fprintf(f,"%\n");
fprintf(f,"%ADD10OC8,0.0600*%\n"); // D10* octagonal pad
fprintf(f,"%ADD11C,0.0600*%\n"); // D11* oval pad
fprintf(f,"%ADD12R,0.0800X0.0260*%\n"); // D12* surface mounted pad
fprintf(f,"%ADD13C,0.0357*%\n"); // D13* circular via
fprintf(f,"%ADD14C,0.0120*%\n"); // D14* signal trace
fprintf(f,"%ADD15C,0.0500*%\n"); // D15* power trace
}
return f;
}
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Пишем программки на Си для играния с форматом Гербер...
Вот более продвинутый вариант с особыми вариантами для outline, silkscreen и soldermask:
Code: Select all
FILE* fopenGE(char* suffix)
{
FILE* f;
char str[256];
int outline = 0;
int soldermask = 0;
int silkscreen = 0;
if(!strcmp(suffix,".GTO")) silkscreen = 1;
if(!strcmp(suffix,".GKO")) outline = 1;
if(suffix[3]=='S') soldermask = 1;
strncpy(str,ccc,256);
strncat(str,suffix,256);
str[255] = 0;
printf("%s\n",str);
f = fopen(str,"wt");
if(f!=NULL)
{
fprintf(f,"G75*\n");
fprintf(f,"G70*\n");
fprintf(f,"%%OFA0B0*%%\n");
fprintf(f,"%%FSLAX24Y24*%%\n");
fprintf(f,"%%IPPOS*%%\n");
fprintf(f,"%%LPD*%%\n");
fprintf(f,"%%AMOC8*\n");
fprintf(f,"5,1,8,0,0,1.08239X$1,22.5*\n");
fprintf(f,"%%\n");
if(silkscreen) fprintf(f,"%%ADD10C,0.0063*%%\n"); /* D10* for silkscreen layer */
else if(outline) fprintf(f,"%%ADD10C,0.0000*%%\n"); /* D10* for outline layer */
else
{ /* for copper layers and soldermask layers: */
fprintf(f,"%%ADD10OC8,0.06%c0*%%\n",soldermask?'8':'0'); /* D10* octagonal pad */
fprintf(f,"%%ADD11C,0.06%c0*%%\n",soldermask?'8':'0'); /* D11* wide oval pad */
if(soldermask) fprintf(f,"%%ADD12R,0.0580X0.0580*%%\n");
else fprintf(f,"%%ADD12R,0.0500X0.0500*%%\n"); /* D12* square pad */
if(soldermask) fprintf(f,"%%ADD13R,0.0880X0.0340*%%\n");
else fprintf(f,"%%ADD13R,0.0800X0.0260*%%\n"); /* D13* surface mount pad */
fprintf(f,"%%ADD14C,0.0357*%%\n"); /* D14* circular via */
fprintf(f,"%%ADD15C,0.0120*%%\n"); /* D15* signal trace */
fprintf(f,"%%ADD16C,0.0500*%%\n"); /* D16* power trace */
}
}
return f;
}
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24086
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Пишем программки на Си для играния с форматом Гербер...
Программка для конвертации псевдо-ASCII Circuits.CC в Gerber/Excellon:
https://gitlab.com/shaos/circuits_cc/blob/master/utils/cccp.c
Осталось толстые проводники научить рисовать и валидацию вумную написать...
https://gitlab.com/shaos/circuits_cc/blob/master/utils/cccp.c
Осталось толстые проводники научить рисовать и валидацию вумную написать...
Я тут за главного - если что шлите мыло на me собака shaos точка net