資源簡介
QT+OpenCV+VS Gerber光繪文件識別
代碼片段和文件信息
#include?“gerber.h“
//?25.4?=?1000?*?0.0254
#define?RATIO?(PcbUnit???1?:?25.4f)
/**********************************************************************
??????????????????【C++?光繪文件解析驅動】
***********************************************************************/
//?數據清除
void?Gerber::DataClear()
{
ExtMinX?=?999999;
ExtMinY?=?999999;
ExtMaxX?=?0;
ExtMaxY?=?0;
PolygonDot.clear();
LastCoor.x?=?0;
LastCoor.y?=?0;
DotFill?=?false;?????????????//?圖案填充標志位
DotLine?=?false;?????????????//?畫點還是畫線標志
CircleDir?=?false;???????????//?圓周運動方向,false:順時針方向,true:逆時針方向
CircleOffOn?=?false;?????????//?圓周運動方向開關
PcbUnit?=?false;?????????????//?計量單位,false:英寸,True:毫米
PcbProjectName?=?““;?????????//?圖像名稱
FillInvisible?=?false;???????//?填充挖除標志,false:填充,true:挖除
HoleDiameterId.clear();
HoleDiameterForm.clear();
HoleDiameterDia1.clear();
HoleDiameterDia2.clear();
DotDataNew.DotForms.clear();
DotDataNew.DotHoleLengths.clear();
DotDataNew.DotPlateLengths.clear();
DotDataNew.WeldingDots_user.clear();
NowHoleId?=?-1;??????????????//?當前孔徑ID號
}
//?在字符串中搜索自定字符
int?Gerber::StringCharNum(String?str?char?ch)
{
const?char?*buf?=?str.data();
int?num?=?0;
int?i?=?0;
while?(i? if?(buf[i++]?==?ch)?num++;
}
return?num;
}
vector?Gerber::CoordinateStr(String?StrData)
{
char?temp[10][20]?=?{?““““?};
int?j?=?0?num?=?0;
vector?ret;
//?字符串為空
if?(StrData.empty())?return?ret;
const?char?*buf?=?StrData.data();
for?(int?i?=?0;?i? {
if?(buf[i]?==?‘?‘)?break;
if?((buf[i]?==?‘X‘)?||?(buf[i]?==?‘Y‘)?||
(buf[i]?==?‘D‘)?||?(buf[i]?==?‘G‘)?||
(buf[i]?==?‘J‘)?||?(buf[i]?==?‘I‘)?||
(buf[i]?==?‘M‘))?{
j?=?0;?num++;
if?(num?>?19)
break;
}
if?(num?>?0?&&?j?19)?{
temp[num?-?1][j++]?=?buf[i];
temp[num?-?1][j]?=?‘\0‘;
}
}
vector?OutStr(num);
for?(int?i?=?0;?i? OutStr[i]?=?temp[i];
}
return?OutStr;
}
//?指令解析尺寸識別?IN:英寸[fasle],MM:毫米[true]
void?Gerber::Order_MO(String?str)
{
if?(str.find(“%MOIN“)?==?0)
PcbUnit?=?false;
else?PcbUnit?=?true;
}
//?指令解析圖像名稱?%IN?“JYSH-PWRL_V10D_20180706“*%
void?Gerber::Order_IN(String?str)
{
PcbProjectName?=?““;
}
//?指令解析明確極性使用LPC,暗極性使用LPD。【LPD是填充,LPC是挖除,OpenCv?下多邊形填充很卡,填充重疊會死程序】
void?Gerber::Order_LP(String?str)
{
if?(str.find(“LPC“)?>=?0)
FillInvisible?=?false;
else?FillInvisible?=?true;
}
//?指令解析孔徑描述/光圈描述
void?Gerber::Order_AD(String?str)
{
int?he?=?str.find(“AD“);
int?ne?=?0;
if?((ne?=?str.find(“C“))?>?0)??????HoleDiameterForm.push_back(“C“);?//?圓形
else?if?((ne?=?str.find(“R“))?>?0)?HoleDiameterForm.push_back(“R“);?//?長方
else?if?((ne?=?str.find(“O“))?>?0)?HoleDiameterForm.push_back(“O“);?//?橢圓形
else?if?((ne?=?str.find(“P“))?>?0)?HoleDiameterForm.push_back(“P“);?//?正多邊形
else?return;??//特殊光圈
//?ID識別
String?idbuf?=?str.substr(he?+?3?ne?-?(he?+?3));
HoleDiameterId.push_back(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-11-09?17:57??光繪文件\
?????文件????????1436??2018-07-12?09:08??光繪文件\215384.2nd
?????文件??????475838??2018-07-12?09:08??光繪文件\215384.bl
?????文件??????859816??2018-07-12?09:08??光繪文件\215384.bo
?????文件??????396094??2018-07-12?09:08??光繪文件\215384.bs
?????文件???????11539??2018-07-12?09:08??光繪文件\215384.drl
?????文件????????6180??2018-07-12?09:08??光繪文件\215384.pb
?????文件???????18499??2018-07-12?09:08??光繪文件\215384.pt
?????文件???????45065??2018-07-12?09:08??光繪文件\215384.rout
?????文件??????586183??2018-07-12?09:08??光繪文件\215384.tl
?????文件??????398781??2018-07-12?09:08??光繪文件\215384.to
?????文件??????162460??2018-07-12?09:08??光繪文件\215384.ts
?????目錄???????????0??2018-11-09?17:57??光繪文件\識別圖像\
?????文件?????4307981??2018-10-31?17:09??光繪文件\識別圖像\215384_2nd.jpg
?????文件????10472379??2018-10-31?17:11??光繪文件\識別圖像\215384_bl.jpg
?????文件????12393377??2018-10-31?17:12??光繪文件\識別圖像\215384_bo.jpg
?????文件?????8113791??2018-10-31?17:48??光繪文件\識別圖像\215384_bs.jpg
?????文件?????4694265??2018-10-31?17:30??光繪文件\識別圖像\215384_drl.jpg
?????文件?????3585395??2018-10-31?17:32??光繪文件\識別圖像\215384_pb.jpg
?????文件?????4967900??2018-10-31?17:33??光繪文件\識別圖像\215384_pt.jpg
?????文件?????5603336??2018-10-31?17:34??光繪文件\識別圖像\215384_rout.jpg
?????文件????11514750??2018-10-31?17:35??光繪文件\識別圖像\215384_tl.jpg
?????文件????13155835??2018-10-31?17:36??光繪文件\識別圖像\215384_to.jpg
?????文件?????9660462??2018-10-31?17:37??光繪文件\識別圖像\215384_ts.jpg
?????目錄???????????0??2018-11-09?17:57??光繪文件識別源碼\
?????目錄???????????0??2018-11-09?17:57??光繪文件識別源碼\.vs\
?????目錄???????????0??2018-11-09?17:57??光繪文件識別源碼\.vs\pcb\
?????目錄???????????0??2018-11-09?17:57??光繪文件識別源碼\.vs\pcb\v14\
?????文件???????45568??2018-11-09?17:55??光繪文件識別源碼\.vs\pcb\v14\.suo
?????目錄???????????0??2018-11-09?17:57??光繪文件識別源碼\pcb\
?????文件??????335417??2018-11-06?14:41??光繪文件識別源碼\pcb\1.jpg
............此處省略118個文件信息
- 上一篇:Excel地圖插件ExcelMaps
- 下一篇:野火stm32-庫開發初級篇-例程
評論
共有 條評論