在现有的图像处理软件中融合dxf格式输出

dxf格式是autocade的支持格式。如果将现有图像识别的结果导出到dxf格式,就能够使用autocad的强大功能进行后续处理。
dxf的格式比较复杂,开源支持库为libdxf,使用起来也比较复杂。经过一段时间融合,我将其修改为vs2012(mfc)能够直接调用的模式。
包含的类库都保存在一个文件夹下
调用方式
void testWriting() {
    DL_Dxf* dxf = new DL_Dxf();
    DL_Codes::version exportVersion = DL_Codes::AC1015;
    DL_WriterA* dw = dxf->out("myfile.dxf", exportVersion);
    if (dw==NULL) {
        printf("Cannot open file 'myfile.dxf' \
               for writing.");
        // abort function e.g. with return
    }
    dxf->writeHeader(*dw);
    // int variable:
    dw->dxfString(9, "$INSUNITS");
    dw->dxfInt(70, 4);
    // real (double, float) variable:
    dw->dxfString(9, "$DIMEXE");
    dw->dxfReal(40, 1.25);
    // string variable:
    dw->dxfString(9, "$TEXTSTYLE");
    dw->dxfString(7, "Standard");
    // vector variable:
    dw->dxfString(9, "$LIMMIN");
    dw->dxfReal(10, 0.0);
    dw->dxfReal(20, 0.0);
    dw->sectionEnd();
 
    dw->sectionTables();
    dxf->writeVPort(*dw);
    //创建线条开始
    dw->tableLineTypes(25);
    dxf->writeLineType(*dw, DL_LineTypeData("BYBLOCK", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("BYLAYER", 0));
    dxf->writeLineType(*dw,
        DL_LineTypeData("CONTINUOUS", 0));
    dxf->writeLineType(*dw,
        DL_LineTypeData("ACAD_ISO02W100", 0));
    dxf->writeLineType(*dw,
        DL_LineTypeData("ACAD_ISO03W100", 0));
    dxf->writeLineType(*dw,
        DL_LineTypeData("ACAD_ISO04W100", 0));
    dxf->writeLineType(*dw,
        DL_LineTypeData("ACAD_ISO05W100", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("BORDER", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("BORDER2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("BORDERX2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("CENTER", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("CENTER2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("CENTERX2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DASHDOT", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DASHDOT2", 0));
    dxf->writeLineType(*dw,
        DL_LineTypeData("DASHDOTX2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DASHED", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DASHED2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DASHEDX2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DIVIDE", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DIVIDE2", 0));
    dxf->writeLineType(*dw,
        DL_LineTypeData("DIVIDEX2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DOT", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DOT2", 0));
    dxf->writeLineType(*dw, DL_LineTypeData("DOTX2", 0));
    dw->tableEnd();
    //创建线条结束
    int numberOfLayers = 3;
    dw->tableLayers(numberOfLayers);
 
    dxf->writeLayer(*dw,
        DL_LayerData("0", 0),
        DL_Attributes(
        std::string(""),      // leave empty
        DL_Codes::white,        // default color
        100,                  // default width
        "CONTINUOUS"));       // default line style
 
    dxf->writeLayer(*dw,
        DL_LayerData("mainlayer", 0),
        DL_Attributes(
        std::string(""),
        DL_Codes::red,
        100,
        "CONTINUOUS"));
 
    dxf->writeLayer(*dw,
        DL_LayerData("anotherlayer", 0),
        DL_Attributes(
        std::string(""),
        DL_Codes::black,
        100,
        "CONTINUOUS"));
 
    dw->tableEnd();
    dxf->writeStyle(*dw);
    dxf->writeView(*dw);
    dxf->writeUcs(*dw);
 
    dw->tableAppid(1);
    dw->tableAppidEntry(0x12);
    dw->dxfString(2, "ACAD");
    dw->dxfInt(70, 0);
    dw->tableEnd();
    dxf->writeDimStyle(*dw,
        1,
        1,
        1,
        1,
        1);
    dxf->writeBlockRecord(*dw);
    dxf->writeBlockRecord(*dw, "myblock1");
    dxf->writeBlockRecord(*dw, "myblock2");
    dw->tableEnd();
    dw->sectionEnd();
    dw->sectionBlocks();
 
    dxf->writeBlock(*dw,
        DL_BlockData("*Model_Space", 0, 0.0, 0.0, 0.0));
    dxf->writeEndBlock(*dw, "*Model_Space");
 
    dxf->writeBlock(*dw,
        DL_BlockData("*Paper_Space", 0, 0.0, 0.0, 0.0));
    dxf->writeEndBlock(*dw, "*Paper_Space");
 
    dxf->writeBlock(*dw,
        DL_BlockData("*Paper_Space0", 0, 0.0, 0.0, 0.0));
    dxf->writeEndBlock(*dw, "*Paper_Space0");
 
    dxf->writeBlock(*dw,
        DL_BlockData("myblock1", 0, 0.0, 0.0, 0.0));
    // ...
    // write block entities e.g. with dxf->writeLine(), ..
    // ...
    dxf->writeEndBlock(*dw, "myblock1");
 
    dxf->writeBlock(*dw,
        DL_BlockData("myblock2", 0, 0.0, 0.0, 0.0));
    // ...
    // write block entities e.g. with dxf->writeLine(), ..
    // ...
    dxf->writeEndBlock(*dw, "myblock2");
 
    dw->sectionEnd();
    dw->sectionEntities();
 
    // write all your entities..
    //dxf->writePoint(
    //    *dw,
    //    DL_PointData(10.0,
    //                 45.0,
    //                 0.0),
    //    DL_Attributes("mainlayer", 256, -1, "BYLAYER"));
    dxf->writeLine(
        *dw,
        DL_LineData(0.0,   // start point
        0.0,
        0.0,
        500.0,   // end point
        0.0,
        0.0),
        DL_Attributes("mainlayer", 256, -1, "BYLAYER"));
 
    dxf->writeLine(
        *dw,
        DL_LineData(500.0,   // start point
        0.0,
        0.0,
        500.0,   // end point
        500.0,
        0.0),
        DL_Attributes("mainlayer", 256, -1, "BYLAYER"));
 
    dxf->writeLine(
        *dw,
        DL_LineData(500.0,   // start point
        500.0,
        0.0,
        0.0,   // end point
        500.0,
        0.0),
        DL_Attributes("mainlayer", 256, -1, "BYLAYER"));
 
    dxf->writeLine(
        *dw,
        DL_LineData(0.0,   // start point
        500.0,
        0.0,
        0.0,   // end point
        0.0,
        0.0),
        DL_Attributes("mainlayer", 256, -1, "BYLAYER"));
 
    dw->sectionEnd();
    dxf->writeObjects(*dw);
    dxf->writeObjectsEnd(*dw);
    dw->dxfEOF();
    dw->close();
    delete dw;
    delete dxf;
}
代码下载:链接: http://pan.baidu.com/s/1kVRU3Dt 密码: iect

在现有的图像处理软件中融合dxf格式输出的更多相关文章

  1. 【系统安装】如何在VMware软件中安装ghost格式的系统

    一.安装准备 1.系统虚拟环境软件:VMware软件(下载链接) 2.系统镜像制作软件:UltraISO[软碟通是光盘映像文件制作/编辑/转换工具](下载链接) 3.系统安装辅助软件:Win7PE(下 ...

  2. 3D图形图像处理软件HOOPS介绍及下载

    HOOPS 3D Application Framework(以下简称HOOPS)是建立在OpenGL.Direct3D等图形编程接口之上的更高级别的应用程序框架.不仅为您提供强大的图形功能,还内嵌了 ...

  3. Adobe Photoshop for Mac(图像处理软件)破解版安装

    1.软件简介    Adobe Photoshop(简称 "PS")是 macOS 系统上一款由 Adobe Systems 开发和发行的图像处理软件.Photoshop 主要处理 ...

  4. CRM/ERP 企业管理软件中常见的七种程序设计模式

    管理软件中的常见代码设计模式,来自于业务上的需要,有不恰当的地方欢迎批评指正. 1  RE-TRY 重试模式 场景:在连接数据库服务器时,如果SQL Server数据库没有启动或正在启动,我们需要有一 ...

  5. 小讲堂:Mobox文档管理软件中的文件外链是什么?

    今天我们来讨论Mobox文档管理软件中的文件外链是什么?熟悉MOBOX的朋友们应该知道,如果有文件需要分享给其他同事,直接可以进行文件共享.对方会在AM的即时通讯客户端有消息提醒,点击消息提醒可以看到 ...

  6. 小讲堂:在线编辑在Mobox文档管理软件中的意义

    今天我们来讨论一下,mobox文档管理软件中的在线编辑的这个功能,相信这个功能是用户在日常的文档维护中非常需要的. 文档管理软件的诸多功能中,在线编辑是一块很重要的功能点,因为在线编辑可以说是提高工作 ...

  7. Atitit.软件中见算法 程序设计五大种类算法

    Atitit.软件中见算法 程序设计五大种类算法 1. 算法的定义1 2. 算法的复杂度1 2.1. Algo cate2 3. 分治法2 4. 动态规划法2 5. 贪心算法3 6. 回溯法3 7. ...

  8. JMP软件中的晶圆图( Wafer Map)分析

    关键词:芯片 良率分析 晶圆图 质量管理 JMP Minitab 半导体芯片的生产,简单来讲,是将电路通过各种复杂的物理化学方法制作到晶圆上,在生产的最后阶段会进行不同电性功能的测试以确保产品的功能性 ...

  9. Illustrator软件中eps和ai格式的区别

    转自Illustrator软件中eps和ai格式的区别 AI是ILL特有的格式,EPS格式是在排版领域经常使用的格式.AI中的位图图像是用链接的方式存储,EPS格式则将位图图像包含于文件中.对于含有相 ...

随机推荐

  1. Mac上安装django

    参考:https://docs.djangoproject.com/en/1.9/topics/install/#installing-official-release 升级pip sudo pip ...

  2. iOS基于MVC的项目重构总结

    关于MVC的争论 关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文). 行 ...

  3. 点击链接跳转到固定div位置处(类似锚点链接)

    $('.joinbtn').click(function(){ var a = $("#contact").offset().top;$("html,body" ...

  4. CentOS 系统目录解析

    CentOS 系统目录解析 http://mp.weixin.qq.com/s?__biz=MzAxOTAzMzEzNg==&mid=202463614&idx=2&sn=51 ...

  5. Hibernate操作指南-搭建一个简单的示例(基于原生API和注解)

  6. 关于sigwait

    刚开始看sigwait函数,只是知道它是用来解除阻塞的信号,可是使我疑惑的是那么解除了以后为什么线程收到终止信号SIGINT的时候还是没能终止呢?   于是网上找了一些资料,总的理解如下所示: sig ...

  7. Poj 1276 Cash Machine 多重背包

    Cash Machine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26172   Accepted: 9238 Des ...

  8. HashSet的故事----Jdk源码解读

    Hash,我们在说HashMap的时候,已经知道Hash是散列,Map是映射了. 那么Set又是什么呢 ? 先来看看Set的翻译是什么 n. [数] 集合:一套:布景:[机] 装置 这里Set所取的含 ...

  9. 修改项目生成Gemfile的模板

    修改项目生成Gemfile的模板 gedit $rvm_path/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/generators/rails/app/ ...

  10. 1016. Boundaries on A New Kind of Science 解题报告

    题目链接: http://soj.sysu.edu.cn/1016 题目大意: 给定一个字符串和256条规则,将某条规则应用于字符串,字符串将发生变化,给定一个数max,求出在max步内可以将字符串变 ...