1、增加马克间距;
2、完善dxf解析;
This commit is contained in:
华海艳 2024-03-26 08:54:57 +08:00
parent 80684daf9b
commit 42e10f6b15
8 changed files with 51 additions and 21 deletions

5
.gitignore vendored
View File

@ -2,3 +2,8 @@
*.user.* *.user.*
boost/ boost/
spline_library/ spline_library/
*.stash
*.sdf
*.vcxproj
*.filters
rccs/

View File

@ -90,7 +90,7 @@ bool DxfHelper::generateDxf(const QString &fileName)
{ {
//获取引用块集合 //获取引用块集合
QList<std::string> blockNameList; QList<std::string> blockNameList;
getDxfReferenceBlocks(fileName,blockNameList); //getDxfReferenceBlocks(fileName,blockNameList);
// currentPos = QPointF(QRandomGenerator::global()->bounded(9999.99), QRandomGenerator::global()->bounded(9999.99)); // currentPos = QPointF(QRandomGenerator::global()->bounded(9999.99), QRandomGenerator::global()->bounded(9999.99));
currentPos = QPointF(9999.99, 9999.99); currentPos = QPointF(9999.99, 9999.99);
@ -343,17 +343,17 @@ bool DxfHelper::generateDxf(const QString &fileName)
if(path.size() == 2) if(path.size() == 2)
{ {
if(i+1 < blockData.dxfVertexs.size()) // if(i+1 < blockData.dxfVertexs.size())
{ // {
QPointF point1; // QPointF point1;
//qDebug() << "vertexs data:" << d.x << d.y << d.z << d.bulge; // //qDebug() << "vertexs data:" << d.x << d.y << d.z << d.bulge;
point1.setX(blockData.dxfVertexs.at(i+1).x); // point1.setX(blockData.dxfVertexs.at(i+1).x);
point1.setY(blockData.dxfVertexs.at(i+1).y); // point1.setY(blockData.dxfVertexs.at(i+1).y);
if(point1 != point) // if(point1 != point)
{ // {
path.append(point1); // path.append(point1);
} // }
} // }
dxfPaths.append(path); dxfPaths.append(path);
path.clear(); path.clear();
} }

View File

@ -15,6 +15,7 @@ CreatPrintBmp::CreatPrintBmp(QObject *parent) : QObject(parent)
m_moveFileIdx = -1;//上下移动打印文件索引 m_moveFileIdx = -1;//上下移动打印文件索引
m_moveDir = 0;//-1,上移 1下移 m_moveDir = 0;//-1,上移 1下移
m_rotateAngle = 0; m_rotateAngle = 0;
m_markSpace = 0;
m_autoDirFilesList.clear(); m_autoDirFilesList.clear();
} }
@ -169,6 +170,19 @@ int CreatPrintBmp::creatBmpBlockDatAndSend(int fileidx, int idx)
num += 1; num += 1;
} }
//计算每块位图的走纸距离
u32 paperDis = 0;
int moveOft = abs(offset)+PIXMAPWIDTH;
if(moveOft <= pic.width())
{
paperDis = ((double)PIXMAPWIDTH / MMPIXELY)*100;
}
else
{
u32 cLength = moveOft - (pic.width() - oft);
paperDis = ((double)(PIXMAPWIDTH-cLength) / MMPIXELY)*100 + m_markSpace*100;
}
QBitmap *pixmap = new QBitmap(PIXMAPWIDTH,height); QBitmap *pixmap = new QBitmap(PIXMAPWIDTH,height);
QPainter *pixPainter = new QPainter(); QPainter *pixPainter = new QPainter();
pixPainter->begin(pixmap); pixPainter->begin(pixmap);
@ -218,6 +232,11 @@ int CreatPrintBmp::creatBmpBlockDatAndSend(int fileidx, int idx)
return -1; return -1;
} }
QByteArray dat = bwBmp.getPrBmpDat(); QByteArray dat = bwBmp.getPrBmpDat();
//写入每块位图走纸距离
CompBmpHead *bmphead = new CompBmpHead;
memcpy((u8*)bmphead,(u8*)dat.data(),sizeof(CompBmpHead));
bmphead->segBitPaperDis = paperDis;
emit siSendDatToMc(dat); emit siSendDatToMc(dat);
m_mcPrintInfo->m_filesList[fileidx].m_curPrintBlock = cidx + 1; m_mcPrintInfo->m_filesList[fileidx].m_curPrintBlock = cidx + 1;
m_mcPrintInfo->m_filesList[fileidx].m_printedBlockNum = cidx; m_mcPrintInfo->m_filesList[fileidx].m_printedBlockNum = cidx;
@ -460,8 +479,9 @@ QString CreatPrintBmp::getSavePath()
return m_savePath; return m_savePath;
} }
void CreatPrintBmp::setMcPrintInfo(int fileIdx, McPrintInfo *printInfo) void CreatPrintBmp::setMcPrintInfo(int fileIdx,u32 markSpace,McPrintInfo *printInfo)
{ {
m_markSpace = markSpace;
m_mcPrintInfo = printInfo; m_mcPrintInfo = printInfo;
if(fileIdx < 0) if(fileIdx < 0)

View File

@ -45,6 +45,7 @@ private:
int m_moveFileIdx;//上下移动打印文件索引 int m_moveFileIdx;//上下移动打印文件索引
s16 m_moveDir;//-1,上移 1下移 s16 m_moveDir;//-1,上移 1下移
double m_rotateAngle; double m_rotateAngle;
u32 m_markSpace;//马克间距
QFileInfoList m_autoDirFilesList;//自动绘图目录中文件列表 QFileInfoList m_autoDirFilesList;//自动绘图目录中文件列表
@ -58,7 +59,7 @@ public:
void setPicture(QBitmap bitmap); void setPicture(QBitmap bitmap);
void setSavePath(QString path); void setSavePath(QString path);
QString getSavePath(); QString getSavePath();
void setMcPrintInfo(int fileIdx,McPrintInfo *printInfo);//设置机器信息 void setMcPrintInfo(int fileIdx,u32 markSpace,McPrintInfo *printInfo);//设置机器信息
void stopCreatPrintDat();//停止生成打印数据 void stopCreatPrintDat();//停止生成打印数据
void setDeleteFile(McPrintInfo *printInfo, int fileIdx);//删除文件 void setDeleteFile(McPrintInfo *printInfo, int fileIdx);//删除文件
void setMoveFile(McPrintInfo *printInfo, int fileIdx, int dir = -1);//上下移动文件 void setMoveFile(McPrintInfo *printInfo, int fileIdx, int dir = -1);//上下移动文件

View File

@ -122,9 +122,11 @@ typedef struct
u8 compType[4]; // 本块位图压缩类型, =0, 不压缩; =1, 按字节压缩(分段压缩); u8 compType[4]; // 本块位图压缩类型, =0, 不压缩; =1, 按字节压缩(分段压缩);
u32 compSegOffset[4]; // 分段数据起始位置 u32 compSegOffset[4]; // 分段数据起始位置
#if (1)
// 60 // 60
u8 rev[128-2-60]; // 保留 u32 segBitPaperDis; // 每段位图走纸距离0.01mm
#if (1)
//64
u8 rev[128-2-64]; // 保留
#else #else
// 保存原图中BMP头文件(算法测试用) // 保存原图中BMP头文件(算法测试用)
// 60 // 60

View File

@ -411,11 +411,11 @@ void Machine::invalidateWorkFile(int idx)
setMcStatus(MC_INVALID_FILE, idx); setMcStatus(MC_INVALID_FILE, idx);
} }
void Machine::creatPrintDat(int fileIdx,int setFlag) void Machine::creatPrintDat(int fileIdx,u32 markSpace,int setFlag)
{ {
if(setFlag == 1) if(setFlag == 1)
{ {
m_pCreatPrintDat->setMcPrintInfo(fileIdx,&m_mcPrintInfo); m_pCreatPrintDat->setMcPrintInfo(fileIdx,markSpace,&m_mcPrintInfo);
} }
emit siCreatData(); emit siCreatData();
} }

View File

@ -104,7 +104,7 @@ public:
// 机器工作命令 // 机器工作命令
void mcWorkCmd(int workcode, int para1 = 0 , int para2 = 0); void mcWorkCmd(int workcode, int para1 = 0 , int para2 = 0);
void creatPrintDat(int fileIdx,int setFlag = 1); //生成打印数据 void creatPrintDat(int fileIdx,u32 markSpace,int setFlag = 1); //生成打印数据
void stopPrint(); //停止打印 void stopPrint(); //停止打印
void deleteFilePrintDat(int fileIdx);//删除文件打印数据 void deleteFilePrintDat(int fileIdx);//删除文件打印数据

View File

@ -222,6 +222,7 @@ void MainWindow::startCreatBmpAndSend(int mcIdx)
{ {
int mcBegIdx, mcEndIdx; int mcBegIdx, mcEndIdx;
mcBegIdx = mcEndIdx = 0; mcBegIdx = mcEndIdx = 0;
u32 markSpace = m_pSettings->value("DrawSet/markmargin").toUInt();//马克间距
//自动打印时mcIdx为-1 //自动打印时mcIdx为-1
//mcIdx = -1; //mcIdx = -1;
@ -257,7 +258,7 @@ void MainWindow::startCreatBmpAndSend(int mcIdx)
{ {
mcDir.mkdir(mcFile); mcDir.mkdir(mcFile);
} }
g_machineList[i]->creatPrintDat(m_curFileRow); g_machineList[i]->creatPrintDat(m_curFileRow,markSpace);
if(m_curFileRow > 0) if(m_curFileRow > 0)
{ {
@ -1042,6 +1043,7 @@ void MainWindow::slotDeleteFileFromList(int mcNum, int fileIdx, int refreshFlag)
{ {
//是否自动打印 //是否自动打印
int autoPrint = 0; int autoPrint = 0;
u32 markSpace = m_pSettings->value("DrawSet/markmargin").toUInt();//马克间距
//刷新进度 //刷新进度
if(refreshFlag != 0) if(refreshFlag != 0)
@ -1091,7 +1093,7 @@ void MainWindow::slotDeleteFileFromList(int mcNum, int fileIdx, int refreshFlag)
if(m_curFileRow >= 0 && autoPrint == 1) if(m_curFileRow >= 0 && autoPrint == 1)
{ {
g_machineList[i]->creatPrintDat(m_curFileRow,0); g_machineList[i]->creatPrintDat(m_curFileRow,markSpace,0);
} }
} }
} }