diff --git a/.gitignore b/.gitignore index 19b790c..5e254a3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,8 @@ *.user.* boost/ spline_library/ +*.stash +*.sdf +*.vcxproj +*.filters +rccs/ diff --git a/datafile/dxf/dxfhelper.cpp b/datafile/dxf/dxfhelper.cpp index 9ba6375..9e3c50c 100644 --- a/datafile/dxf/dxfhelper.cpp +++ b/datafile/dxf/dxfhelper.cpp @@ -90,7 +90,7 @@ bool DxfHelper::generateDxf(const QString &fileName) { //获取引用块集合 QList blockNameList; - getDxfReferenceBlocks(fileName,blockNameList); + //getDxfReferenceBlocks(fileName,blockNameList); // currentPos = QPointF(QRandomGenerator::global()->bounded(9999.99), QRandomGenerator::global()->bounded(9999.99)); currentPos = QPointF(9999.99, 9999.99); @@ -343,17 +343,17 @@ bool DxfHelper::generateDxf(const QString &fileName) if(path.size() == 2) { - if(i+1 < blockData.dxfVertexs.size()) - { - QPointF point1; - //qDebug() << "vertexs data:" << d.x << d.y << d.z << d.bulge; - point1.setX(blockData.dxfVertexs.at(i+1).x); - point1.setY(blockData.dxfVertexs.at(i+1).y); - if(point1 != point) - { - path.append(point1); - } - } +// if(i+1 < blockData.dxfVertexs.size()) +// { +// QPointF point1; +// //qDebug() << "vertexs data:" << d.x << d.y << d.z << d.bulge; +// point1.setX(blockData.dxfVertexs.at(i+1).x); +// point1.setY(blockData.dxfVertexs.at(i+1).y); +// if(point1 != point) +// { +// path.append(point1); +// } +// } dxfPaths.append(path); path.clear(); } diff --git a/machine/bmp/creatprintbmp.cpp b/machine/bmp/creatprintbmp.cpp index 33cd536..92b082f 100644 --- a/machine/bmp/creatprintbmp.cpp +++ b/machine/bmp/creatprintbmp.cpp @@ -15,6 +15,7 @@ CreatPrintBmp::CreatPrintBmp(QObject *parent) : QObject(parent) m_moveFileIdx = -1;//上下移动打印文件索引 m_moveDir = 0;//-1,上移 1,下移 m_rotateAngle = 0; + m_markSpace = 0; m_autoDirFilesList.clear(); } @@ -169,6 +170,19 @@ int CreatPrintBmp::creatBmpBlockDatAndSend(int fileidx, int idx) 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); QPainter *pixPainter = new QPainter(); pixPainter->begin(pixmap); @@ -218,6 +232,11 @@ int CreatPrintBmp::creatBmpBlockDatAndSend(int fileidx, int idx) return -1; } QByteArray dat = bwBmp.getPrBmpDat(); + //写入每块位图走纸距离 + CompBmpHead *bmphead = new CompBmpHead; + memcpy((u8*)bmphead,(u8*)dat.data(),sizeof(CompBmpHead)); + bmphead->segBitPaperDis = paperDis; + emit siSendDatToMc(dat); m_mcPrintInfo->m_filesList[fileidx].m_curPrintBlock = cidx + 1; m_mcPrintInfo->m_filesList[fileidx].m_printedBlockNum = cidx; @@ -460,8 +479,9 @@ QString CreatPrintBmp::getSavePath() 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; if(fileIdx < 0) diff --git a/machine/bmp/creatprintbmp.h b/machine/bmp/creatprintbmp.h index f6d5b1f..43fc06e 100644 --- a/machine/bmp/creatprintbmp.h +++ b/machine/bmp/creatprintbmp.h @@ -45,6 +45,7 @@ private: int m_moveFileIdx;//上下移动打印文件索引 s16 m_moveDir;//-1,上移 1,下移 double m_rotateAngle; + u32 m_markSpace;//马克间距 QFileInfoList m_autoDirFilesList;//自动绘图目录中文件列表 @@ -58,7 +59,7 @@ public: void setPicture(QBitmap bitmap); void setSavePath(QString path); QString getSavePath(); - void setMcPrintInfo(int fileIdx,McPrintInfo *printInfo);//设置机器信息 + void setMcPrintInfo(int fileIdx,u32 markSpace,McPrintInfo *printInfo);//设置机器信息 void stopCreatPrintDat();//停止生成打印数据 void setDeleteFile(McPrintInfo *printInfo, int fileIdx);//删除文件 void setMoveFile(McPrintInfo *printInfo, int fileIdx, int dir = -1);//上下移动文件 diff --git a/machine/comm/protocol.h b/machine/comm/protocol.h index ac80efc..94eb901 100644 --- a/machine/comm/protocol.h +++ b/machine/comm/protocol.h @@ -122,9 +122,11 @@ typedef struct u8 compType[4]; // 本块位图压缩类型, =0, 不压缩; =1, 按字节压缩(分段压缩); u32 compSegOffset[4]; // 分段数据起始位置 -#if (1) // 60 - u8 rev[128-2-60]; // 保留 + u32 segBitPaperDis; // 每段位图走纸距离,0.01mm +#if (1) + //64 + u8 rev[128-2-64]; // 保留 #else // 保存原图中BMP头文件(算法测试用) // 60 diff --git a/machine/machine.cpp b/machine/machine.cpp index 5aa9b9d..12204fe 100644 --- a/machine/machine.cpp +++ b/machine/machine.cpp @@ -411,11 +411,11 @@ void Machine::invalidateWorkFile(int 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) { - m_pCreatPrintDat->setMcPrintInfo(fileIdx,&m_mcPrintInfo); + m_pCreatPrintDat->setMcPrintInfo(fileIdx,markSpace,&m_mcPrintInfo); } emit siCreatData(); } diff --git a/machine/machine.h b/machine/machine.h index 2a407df..46fb04d 100644 --- a/machine/machine.h +++ b/machine/machine.h @@ -104,7 +104,7 @@ public: // 机器工作命令 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 deleteFilePrintDat(int fileIdx);//删除文件打印数据 diff --git a/mainwindow.cpp b/mainwindow.cpp index f0da92a..67133d0 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -222,6 +222,7 @@ void MainWindow::startCreatBmpAndSend(int mcIdx) { int mcBegIdx, mcEndIdx; mcBegIdx = mcEndIdx = 0; + u32 markSpace = m_pSettings->value("DrawSet/markmargin").toUInt();//马克间距 //自动打印时mcIdx为-1 //mcIdx = -1; @@ -257,7 +258,7 @@ void MainWindow::startCreatBmpAndSend(int mcIdx) { mcDir.mkdir(mcFile); } - g_machineList[i]->creatPrintDat(m_curFileRow); + g_machineList[i]->creatPrintDat(m_curFileRow,markSpace); if(m_curFileRow > 0) { @@ -1042,6 +1043,7 @@ void MainWindow::slotDeleteFileFromList(int mcNum, int fileIdx, int refreshFlag) { //是否自动打印 int autoPrint = 0; + u32 markSpace = m_pSettings->value("DrawSet/markmargin").toUInt();//马克间距 //刷新进度 if(refreshFlag != 0) @@ -1091,7 +1093,7 @@ void MainWindow::slotDeleteFileFromList(int mcNum, int fileIdx, int refreshFlag) if(m_curFileRow >= 0 && autoPrint == 1) { - g_machineList[i]->creatPrintDat(m_curFileRow,0); + g_machineList[i]->creatPrintDat(m_curFileRow,markSpace,0); } } }