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

在现有的图像处理软件中融合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

来自为知笔记(Wiz)

时间: 2024-10-05 07:19:39

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

c中使用%s格式输出时的坑

问题描述:今天写的一个程序数组声明为int s[MAX];当使用printf("%s\n", s);输出时,只输出了数组中的第一个元素. 解决方法:将数组的声明改为char s[MAX];之后输出才正常. 总结:%s格式输出是用来连续输出字符数组中的字符的,遇到'\0'结束输出,不能用于整型数组,所以如果数组中的元素不是char类型,则输出会出错,只会输出数组的第一个元素. 问题:为什么会输出整型数组的第一个元素 原文地址:https://www.cnblogs.com/latup/p

自己动手用C++写的图像处理软件(不调用外部包)

说到图像处理软件你会想到什么?Photoshop?CorelDRAW?美图秀秀?还是ACDSee的图像编辑模块? 说到实现数字图像处理算法,你又会想到什么?Matlab?OpenCV? 能不能自己动手用C++写一个小型的图像处理软件,实现一些图像处理算法,而不调用任何外部的包?这个可以有! 多年以前,甚至是主页君还在读书的时候,曾经尝试在VC++ 6.0中编写了最初版本的MagicHouse(一款小型的图像处理软件).后来当我写了我的第一本图像处理算法书时,我用VC++ 2005更新了它.再后来

Android 图像处理软件

在机器视觉实验室呆了有一年半时间了,但由于自己"任性".一直以来学习的内容都是自己来安排,我还是坚持认为没有最好和最简单的技术,只有自己喜欢的技术.不过说起来还是会觉得惭愧,经常听到师兄们谈论图像处理各种算法,可是一直到此软件诞生之前对机器视觉的知识可以说一概不知.自己研究的主要是Android系统的东西,从上层到下层都有所涉及.一直以来都想把自身所长和实验室主题联系上,这样可以多和实验室牛人沟通,也顺便刷刷存在感~由此向师兄师弟们请教一二,学了一点图像处理技术,做了一款Android

自己用C++写的图像处理软件试用版下载

说到图像处理软件你会想到什么?Photoshop?CorelDRAW?美图秀秀?还是ACDSee的图像编辑模块? 说到实现数字图像处理算法,你又会想到什么?Matlab?OpenCV? 能不能自己动手用C++写一个小型的图像处理软件,实现一些图像处理算法,而不调用任何外部的包?这个可以有! Magic House是我多年前编写的一个用来实现一些图像处理算法的演示平台.最初的版本是在VC6下完成的.后来为了引入我新书中,我又在Visual Studio 2005中重写了它.当然这也过去好几年了,最

开源图像处理软件代码

要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益.多面出击.如今网络发达,图像学的资料其实也到处都是.只是往往个人能力或精力有限,在短时间内无法找到那些也许藏于角落里的金子.本人研究图像至今也历时7年,在慢慢的摸索和累积中也找到了一些相关资料,共享给大家学习. 1. 最著名的开源图像软件:GIMP. 开发语言:C GIMP号称Linux下的PhotoShop,总观其工程,确实达到了PhotoShop早期版本的功能.三大利器:选区.图层.蒙板一应俱全,滤镜

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

HOOPS 3D Application Framework(以下简称HOOPS)是建立在OpenGL.Direct3D等图形编程接口之上的更高级别的应用程序框架.不仅为您提供强大的图形功能,还内嵌了多边形优化和大模型处理等技术,能够大大提高 3D可视化的性能.同时,HOOPS开发包中提供的大量应用程序级的实例源码,帮助您在很短的时间内搭建出商业级的3D图形应用程序. HOOPS 3D Application Framework (HOOPS/3dAF) 3D图形图像处理软件为当今许多主流 3D

使用哪个软件可以完整将PDF图纸转换成DXF格式?

使用哪个软件可以完整将PDF图纸转换成DXF格式?CAD图纸文件的两种基本格式就是DWG与DXF,将PDF转换成CAD格式的图纸文件在CAD相关工作中是需要进行操作的那么具体应该怎么样进行操作,将PDF格式文件进行转换成CAD格式,接下来小编就要来教大家的就是使用哪个软件可以完整将PDF图纸转换成DXF格式的全部操作步骤,希望以下能够帮助到你们,望采纳! 步骤一:首先需要进行启动的是你们电脑上面的CAD转换器软件,电脑上面没有这款软件的就可以去到迅捷CAD官网上面进行下载安装这款迅捷CAD转换器

RAW图像处理软件有哪些?哪款RAW图像处理软件好用?有什么区别?

各位小主还在找图片处理的软件吗?还不知道这些软件之间有哪些差别?今天小编就给大家推荐几款好用的raw图像处理软件,可以让您针对您的文件进行高质量的图像编辑,赶紧来种草吧! https://www.macdown.com ON1 Photo RAW 2019 for Mac将包含大量新功能和技术,以及简洁,强大且易于学习的简化工作流程.值得注意的新功能包括图层的新的非破坏性 工作流程,图层的自动对齐,焦点堆叠,新的肖像模块,新的AI驱动的屏蔽工具,新的文本工具,新的数字资产管理更新等.ON1 Ph

做软件中的一些小bug

创建用户时的bug 1.用户名掺杂特殊符号 测试环境:Andriod手机 测试步骤:输入?  $_$ 等 出现bug  用户名乱码 2.密码数字输入时空格也可以被录入 测试环境:Andriod手机 测试步骤:输入空格  空格被计入密码 3.头像用动态图时,加载不出来 测试环境:Andriod手机 测试步骤:用动态图做头像,加载不出来 软件中的bug 1.确定按钮连点,软件可能会崩溃 测试环境:Andriod手机 测试步骤:连点,奔溃 2.在线看书时经常加载失败 测试环境:Andriod手机 测试