资源简介

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 < str.length()) {
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 < StrData.length(); 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 < num; 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个文件信息

评论

共有 条评论