资源简介
文档说明:https://blog.csdn.net/gs1069405343/article/details/83585726
代码片段和文件信息
#include “gerber.h“
// 25.4 = 1000 * 0.0254这里线宽放大了70倍,搞不懂
#define RATIO (PcbUnit ? 1 : (25.4f * 70))
// 数据清除
void Gerber::DataClear()
{
minX = 999999;
minY = 999999;
maxX = 0;
maxY = 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();
WeldingDots.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(“D“ + to_string(std::stoi(idbuf)));
// 直径识别
he = str.find(““);
ne = str.find(“X“);
String len1 = “0.0“;
String len2 = “0.0“;
if (ne > 0) {
len1 = str.substr(he + 1 ne - (he + 1));
len2 = str.substr(ne + 1);
}
else {
len1 = str.substr(he + 1);
}
HoleDiameterD
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-31 16:36 pcb\
目录 0 2018-10-23 11:20 pcb\.vs\
目录 0 2018-10-23 11:20 pcb\.vs\pcb\
目录 0 2018-10-23 11:20 pcb\.vs\pcb\v14\
文件 51712 2018-10-31 16:36 pcb\.vs\pcb\v14\.suo
目录 0 2018-10-31 16:38 pcb\Debug\
目录 0 2018-10-31 16:32 pcb\pcb\
文件 2428762 2018-10-31 16:34 pcb\pcb\1.jpg
目录 0 2018-10-31 16:13 pcb\pcb\GeneratedFiles\
目录 0 2018-10-31 16:13 pcb\pcb\GeneratedFiles\Debug\
文件 3504 2018-10-31 16:13 pcb\pcb\GeneratedFiles\Debug\moc_pcb.cpp
文件 1373 2018-10-31 16:13 pcb\pcb\GeneratedFiles\qrc_pcb.cpp
文件 5554 2018-10-31 16:13 pcb\pcb\GeneratedFiles\ui_pcb.h
目录 0 2018-10-31 16:38 pcb\pcb\Resources\
文件 20484 2018-10-31 15:54 pcb\pcb\gerber.cpp
文件 3346 2018-10-31 14:20 pcb\pcb\gerber.h
文件 165 2018-10-18 14:18 pcb\pcb\main.cpp
文件 4141 2018-10-31 16:32 pcb\pcb\pcb.cpp
文件 1195 2018-10-31 16:13 pcb\pcb\pcb.h
文件 370070 2017-12-11 13:43 pcb\pcb\pcb.ico
文件 63 2018-10-18 14:18 pcb\pcb\pcb.qrc
文件 42 2018-10-18 14:18 pcb\pcb\pcb.rc
文件 3696 2018-10-31 16:11 pcb\pcb\pcb.ui
文件 9210 2018-10-30 11:30 pcb\pcb\pcb.vcxproj
文件 2242 2018-10-30 11:30 pcb\pcb\pcb.vcxproj.filters
文件 637 2018-10-31 16:32 pcb\pcb\pcb.vcxproj.user
目录 0 2018-10-23 11:20 pcb\pcb\x64\
目录 0 2018-10-31 16:32 pcb\pcb\x64\Debug\
文件 13578 2018-09-29 09:56 pcb\pcb\x64\Debug\1.jpg
文件 22550 2018-10-18 19:42 pcb\pcb\x64\Debug\2.jpg
文件 1064711 2018-10-31 16:13 pcb\pcb\x64\Debug\gerber.obj
............此处省略68个文件信息
- 上一篇:SpotlightonUnix_70.exe
- 下一篇:STM32_Jli
nk驱动
相关资源
- Qt使用动态图当背景图片,上边放置各
- 海康威视实时视频预览+opencv实时处理
- Qt动态心电图绘制-利用队列进行实时
- 计盒维数/盒维数OpenCV计算图片分形维
- 《OpenCV教程》电子书+源代码
- QT版拼图游戏PuzzleGame源码+可执行程序
-
opencv2.fr
amework - 基于opencv的二维码畸变矫正QT程序
- 基于qt平台的halcon读图的basler相机调用
- Qt 合集
- OpenCV 3.3.0&opencv;_contrib-3.3.0 编译成功后
- 毕业设计-QT-音乐播放器
- qt飞秋通讯终结版
- opencv310 release Win32 Dll Lib
- 【OpenCV3版】《OpenCV3编程入门》书本配
- opencv车辆识别、标记并计数
- OpenCV中文参考手册
- 人脸检测exe程序可直接运行
- Opencv中查找轮廓,并用直线拟合,检
- opencv需要的常用dllcv100、cv200.dll、ml
- Qt实现二值细胞图像区域上色
- 基于QT开发CAN总线上位机
- VS2017+QT5.9.1使用大漠插件(COM组件)
- opencv彩色三通道图片反色
- 车牌识别opencv
- 当当网数据1.1G)快速检索
- QT实现群聊私聊
- OpenCV教程--基础篇
- vs2010编译osg3.2.1,带有osgQtd.lib和osgQ
- Armadillo + BLAS & LAPACKQt Creator 编译安装
评论
共有 条评论