qt---plt格式处理

2023-11-12

     qDebug() << "do perim: " << runPerimeterFlag;
if (runPerimeterFlag)
{
    QPointF point;//映射坐标点
    //添加标志位
    QString retval = "IN;SP1;PU";
    //起始坐标
    point = perimeterRect.topLeft();
    //遍历坐标点
    retval += QString::number(static_cast<int>(point.x()));
    retval += ",";
    retval += QString::number(static_cast<int>(point.y()));
    retval += ",";
    point = perimeterRect.topRight();
    retval += QString::number(static_cast<int>(point.x()));
    retval += ",";
    retval += QString::number(static_cast<int>(point.y()));
    retval += ",";
    point = perimeterRect.bottomRight();
    retval += QString::number(static_cast<int>(point.x()));
    retval += ",";
    retval += QString::number(static_cast<int>(point.y()));
    retval += ",";
    point = perimeterRect.bottomLeft();
    retval += QString::number(static_cast<int>(point.x()));

    retval += ",";
    retval += QString::number(static_cast<int>(point.y()));
    //结束标志
    retval += ",0,0;SP0;IN;";
    qDebug() << "perimeter: " << retval;
    _port->write(retval.toStdString().c_str());
    _port->flush();
    closeSerial();
    emit finished();
    return;
}

//输出处理

QString ExtPlot::print(QPolygonF hpgl_poly, QGraphicsItemGroup * itemGroup)
{
QString retval = "";
QPointF point;

// Create PU command
point = itemGroup->mapToScene(hpgl_poly.first());
retval += "PU";
retval += QString::number(static_cast<int>(point.x()));
retval += ",";
retval += QString::number(static_cast<int>(point.y()));
retval += ";";

// Create PD command
retval += "PD";
for (int idx = 1; idx < hpgl_poly.count(); idx++)
{
    point = itemGroup->mapToScene(hpgl_poly.at(idx));

    if (point.x() < 0 || point.y() < 0)
    {
    retval = "OOB"; // Out of Bounds
    return retval;
    }

    retval += QString::number(static_cast<int>(point.x()));
    retval += ",";
    retval += QString::number(static_cast<int>(point.y()));
    if (idx < (hpgl_poly.length()-1))
    {
        retval += ",";
    }
}
retval += ";";

return(retval);

}

//svg hpgl 转换 导入

QString ExtLoadFile::importSvg(QString filePath)
{
QProcess * svgToHpgl = new QProcess(this);
QString program = "python2.7";
QStringList arguments;
QString buffer;
QByteArray data;
arguments << "/usr/share/inkscape/extensions/hpgl_output.py"
          << "--precut=FALSE"
          << "--force=0"
          << "--speed=0"
          << filePath;
svgToHpgl->setProcessChannelMode(QProcess::MergedChannels);
svgToHpgl->start(program, arguments);
while (svgToHpgl->waitForReadyRead())
{
    data = data + svgToHpgl->readAll();
}
buffer = QString::fromUtf8(data.data(), data.length());
return buffer;
 }

QPersistentModelIndex ExtLoadFile::createHpglFile(file_uid _file)
{
int numRows = hpglModel->rowCount();

if (!hpglModel->insertRows(numRows, 1))
{
    qDebug() << "Insert row failed.";
    return(QModelIndex());
}

QPersistentModelIndex index = QPersistentModelIndex(hpglModel->index(numRows));

if (!hpglModel->setFileUid(index, _file))
{
    qDebug() << "setFileUid failed.";
    return(QModelIndex());
}

return(index);
}

// Modifies input string, warning!
 bool ExtLoadFile::parseHPGL(const QPersistentModelIndex index, QString * hpgl_text)
{
QPointF tail(0, 0);

hpgl_text->remove('\n');
int numCmds = hpgl_text->count(';');
for (int i = 0; i < numCmds; i++)
{
    QPolygonF newItem;
    QString cmdText;
    QString opcode;
    int pen;

    cmdText = hpgl_text->section(';', i, i);

    qDebug() << "====\n= Processing command: ";

    // Get opcode, first two characters
    opcode = cmdText.mid(0, 2);

    qDebug() << "= " << opcode;

    // Parse opcode
    if (opcode == "PU")
    {
        // Pen up - we assume a single line (two points)
        int commaCount, newX, newY;
        cmdText.remove(0,2);
        commaCount = cmdText.count(',');
        int i = commaCount - 1;
        newX = cmdText.section(',', i, i).toInt();
        i++;
        newY = cmdText.section(',', i, i).toInt();
        tail.setX(newX);
        tail.setY(newY);
    }
    else if (opcode == "PD")
    {
        // Pen down
        cmdText.remove(0,2);
        int commaCount = cmdText.count(',');
        newItem << tail; // Begin from last PU location
        for (int i = 0; i < commaCount; i++)
        {
            //qDebug() << "processing coord: " << text.at(i) << endl;
            int newX = cmdText.section(',', i, i).toInt();
            i++;
            int newY = cmdText.section(',', i, i).toInt();
//                qDebug() << "= Found x: " << newX << " y: " << newY;
            newItem << QPointF(newX, newY);
        }
        emit newPolygon(index, newItem);
    }
    else if (opcode == "IN")
    {
        // Begin plotting (automatically handled)
    }
    else if (opcode == "SP")
    {
        // Set pen
        pen = cmdText.mid(2,1).toInt();
        qDebug() << "[" << QString::number(pen) << "]";
    }
    else if (opcode == "FS" || opcode == "VS")
    {
        // Real hpgl commands that our USCutter doesn't accept
    }
    else
    {
        // Default case, something's wrong
        return false;
    }
    int progressInt = ((double)i/(numCmds-1))*100;
    emit progress(progressInt);
}
return true;

}

void ExtLoadFile::statusUpdate(QString _consoleStatus)
{
emit statusUpdate(_consoleStatus, Qt::black);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt---plt格式处理 的相关文章

  • 医学图像数据集下载地址

    有些需要富强文明上网 1 ACDC dataset Human Heart Project 2 Brain Tumor Segmentation BraTS 2019 MICCAI s Dataset on Brain Tumor Segm

随机推荐

  • 【Git 教程系列第 27 篇】ssh: connect to host github.com port 22: Connection refused 的解决方案

    这是 Git 教程系列第 27 篇 如果觉得有用的话 欢迎关注专栏 文章目录 一 问题描述 二 解决方案 一 问题描述 自己的一个 git 项目 昨天在公司正常 push 的时候 提示文字信息如下 ssh connect to host g
  • mysql join 循环_MySQL中Join的基本实现原理

    在 MySQL 中 只有一种 Join 算法 就是大名鼎鼎的 Nested Loop Join 他没有其他很多数据库所提供的 Hash Join 也没有 Sort Merge Join 顾名思义 Nested Loop Join 实际上就是
  • 强势出圈!当NFT头像袭来,你pick哪一款?

    NFT有多火爆 看看余文乐的新头像就知道了 余文乐instagram用的头像正是CryptopPunks 加密朋克 系列 不止余文乐 姚明 村上隆 锡安 威廉姆森 阿姆 撒盐哥等等弄潮儿纷纷打卡加密艺术 名人效应对NFT的强势崛起起着强有力
  • QVector、QList、QLinkedList类用法区别

    QVector QList QLinkedList类用法区别 1 QVector 是提供动态数组的一个模板类 QList 是提供列表的一个模板类 QLinkedList 是提供链表的一个模板类 2 QVector
  • 【比赛合集】50+场可报名的数据挖掘奖金赛,任君挑选!

    CompHub 实时聚合多平台的数据类 Kaggle 天池 和OJ类 Leetcode 牛客 比赛 本账号同时会推送最新的比赛消息 欢迎关注 近期CompHub对进行中的比赛增加了 是否可报名 的识别 你可以直接在CompHub中浏览当前可
  • QLineEdit用正则限制文本框的输入内容+正则表达式语法

    参考文章 QLineEdit输入限制 使用正则表达式限制输入浮点数 QRegExp rx 0 1 9 0 9 0 5 d 1 4 t 使用正则表达式限制只能输入数字 QRegExp rx 0 9 QRegExpValidator valid
  • 【插入排序算法】

    1 请设计直接插入排序算法 折半插入排序算法 希尔排序算法 输出每一趟的排序结果 2 源码 include
  • MMU基本概念及工作原理

    1 什么是MMU MMU是 MemoryManagementUnit 的缩写即 内存管理单元 针对各种CPU MMU是个可选的配件 MMU负责的是虚拟地址与物理地址的转换 提供硬件机制的内存访问授权 现代 CPU 的应用中 基本上都选择了使
  • qt creator各个部件显示图片总结

    在工作中 UI设计经常需要显示各式各样的图片 下面就总结了qt如何在一些部件中显示图片的方式 一 QFrame或者QWidget显示图片 在属性stylesheet中填写 loginBoxFrame border image url ico
  • 经验分享:使用谷歌浏览器下载想要的任意网页视频/音乐的方法

    在上网的时候 有些时候看到好看的视频或者需要下载需要的视频 音乐 尤其是那种在网页上面的视频 音乐 想要下载 但是根本没有下载按钮 那怎么下载呢 其实步骤很简单 只需要电脑上安装的有谷歌浏览器 轻松解决这个下载不了网页视频 音乐的问题 通过
  • Android 一个动态获取View宽高的方法

    使用场景可以为已经绘画出的view 想根据比例动态改变宽高 public class ViewUtil public static void getViewWidth final View view final OnViewListener
  • FasterTransformer :transformer类模型的三种结构

    Transformer是一种基于注意力机制的深度神经网络结构 常用于文本生成 机器翻译等NLP任务 目前常用的Transformer类模型架构主要有三种 结构 例子 仅编码器 EncoderOnly bert T5 输入为一整个句子 仅解码
  • 重磅!不止是芯片!半导体全产业链分析

    来源 杨明辉电子 ID gh e6a65dbbbff9 作者 光大电子团队 周期性波动向上 市场规模超4000亿美元 半导体是电子产品的核心 信息产业的基石 半导体行业因具有下游应用广泛 生产技术工序多 产品种类多 技术更新换代快 投资高风
  • maya阿诺德渲染失败_maya云渲染出图异常,Maya云渲染出图错误原因及解决方案

    maya出图异常处理插件配置错误 现象 1 本地文件使用的arnold渲染器 平台上配置的是vray 类似于这种平台配置与本地使用不一致的情况 2 本地文件中用到的插件 在平台上没有配置 3 本地文件中使用的插件版本与在平台上配置的不符合
  • 32位计算机系统安装教程,win732位光盘安装教程

    不少小伙伴都觉得win732位光盘安装的方法非常不错 可是究竟要怎么做 就有很多朋友心中有问号了 其实win732位光盘安装的方法是非常简单的啦 如果大家想要学习的话 下面小编就分享给大家方法吧 现在的安装方法越来越简单了 逐渐从光盘安装到
  • “职场老人给应届生的建议:规划、人际关系和积极心态”

    当前的就业形势越来越严峻 尤其是对于应届生来说更加困难 如何在职场上脱颖而出 成为受人重视的优秀员工 是每个应届生都需要认真思考和努力追求的目标 下面将介绍一些有效的方法和策略 帮助应届生提高自己的职场竞争力 以及对应届生职场发展的关键推动
  • 运用知识图谱技术,赋能多领域应用 ——“未来杯”AI学术联赛总决赛暨颁奖典礼圆满落幕

    由北京大学软件工程国家工程研究中心主办 华为终端有限公司及中软国际教育科技集团全程战略支持 STEER TECH科技平台 北京乐智元素科技有限公司 艾肯文化传媒 北京 有限公司 AI TIME承办 华为NAIE网络人工智能平台作为技术支持战
  • css实现三角形的6种方法

    在一些面试经验中 经常能看到有关css的题目都会有一道如何使用css绘制三角形 而常见的回答通常也只有使用border进行绘制一种方法 而css发展到今天 其实有很多有意思的仅仅使用css就能绘制出来的三角形的方式 本文将展示6中使用css
  • 工程安排(拓扑排序)

    读入文件project txt 8 10 1 2 3 4 5 6 7 8 1 2 6 A 1 5 2 B 2 3 3 C 2 4 5 D 2 5 3 E 3 7 2 F 4 7 3 G 5 6 4 H 6 7 2 I 7 8 2 J inc
  • qt---plt格式处理

    qDebug lt lt do perim lt lt runPerimeterFlag if runPerimeterFlag QPointF point 映射坐标点 添加标志位 QString retval IN SP1 PU 起始坐标