C++读取DXF


C++读取DXF,然后用OpenCV绘制出来,实现了插入块坐标修正,知道坐标在哪里,里面包含了OpenCV的一个库,看起来有点大
资源截图
代码片段和文件信息
#define _CRT_SECURE_NO_WARNINGS		//防止新编译器老函数使用报错
#include “DXFRead.h“


using namespace std;

IMPLEMENT_DYNCREATE(LINEPoint Cobject)
IMPLEMENT_DYNCREATE(BLOCKPoint Cobject)

#define FILENAME “2.dxf“
#define SAVENAME “2.png“

LINEPoint::LINEPoint(CADLINE &line)
{
m_line = line;
}

BLOCKPoint::BLOCKPoint(CADBLOCK &block)
{
m_block = block;
}

void DXFRead::ReadLine(CADDATA &data)
{

FILE *fp = fopen(FILENAME “r“);
if (!fp)
{
cout << “读取“ << FILENAME << “失败,任意键退出“ << endl;
getchar();
exit(0);
}
else
{
cout << “打开“ << FILENAME << “成功,正在读取LINE...“ << endl;
}
while (!feof(fp) && !ferror(fp))
{
fscanf(fp “%s“ &str);
//扫描块中线
if (strcmp(str “BLOCK“) == 0)
{
fscanf(fp “%s“ &str);
while (strcmp(str “2“) != 0)
{
fscanf(fp “%s“ &str);
}
//获得块名字
fscanf(fp “%s“ &name);
//如果不是这两个块,做记录
if (strcmp(name“$MODEL_SPACE“) != 0 
&& strcmp(name “$PAPER_SPACE“) != 0)
{
while (strcmp(str “ENDBLK“) != 0)
{
fscanf(fp “%s“ &str);
//扫描块中线
if (strcmp(str “LINE“) == 0)
{
//归属块
strcpy(tempLine.name name);
//x1
while (strcmp(str “10“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.x1 = atof(str);

//y1
while (strcmp(str “20“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.y1 = atof(str);

//z1
while (strcmp(str “30“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.z1 = atof(str);

//x2
while (strcmp(str “11“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.x2 = atof(str);

//y2
while (strcmp(str “21“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.y2 = atof(str);

//z2
while (strcmp(str “31“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.z2 = atof(str);

data.LINE.Add(new LINEPoint(tempLine));
}
}
}

}
//扫描主坐标系线
else if (strcmp(str “LINE“) == 0)
{
//归属块
strcpy(tempLine.name “ReferenceBlock“);
//x1
while (strcmp(str “10“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.x1 = atof(str);

//y1
while (strcmp(str “20“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.y1 = atof(str);

//z1
while (strcmp(str “30“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.z1 = atof(str);

//x2
while (strcmp(str “11“) != 0)
{
fscanf(fp “%s“ &str);
}
fscanf(fp “%s“ &str);
tempLine.x2 = atof(str);

//y2
while (strcmp(str “21“) != 0)
{
fscanf(fp “%s“ &st

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     29696  2016-12-07 16:35  DXFRead.vsDXFReadv14.suo

     文件     118272  2016-12-07 16:35  DXFReadDebugDXFRead.exe

     文件     823296  2016-12-07 16:35  DXFReadDebugDXFRead.ilk

     文件    2002944  2016-12-07 16:35  DXFReadDebugDXFRead.pdb

     文件   27639296  2015-06-04 02:24  DXFReadDebugopencv_world300.dll

     文件       6280  2016-12-06 15:03  DXFReadDXFRead1.dxf

     文件       7211  2016-12-06 15:07  DXFReadDXFRead2.dxf

     文件       6838  2016-12-07 16:35  DXFReadDXFReadDXFRead.cpp

     文件       1380  2016-12-07 16:06  DXFReadDXFReadDXFRead.h

     文件       6295  2016-12-07 14:50  DXFReadDXFReadDXFRead.vcxproj

     文件       1068  2016-12-07 10:41  DXFReadDXFReadDXFRead.vcxproj.filters

     文件        165  2016-12-07 10:28  DXFReadDXFReadDXFRead.vcxproj.user

     文件       1303  2016-12-07 09:43  DXFReadDXFRead.sln

     目录          0  2016-12-07 09:43  DXFRead.vsDXFReadv14

     目录          0  2016-12-07 09:43  DXFRead.vsDXFRead

    ...D.H.         0  2016-12-07 09:43  DXFRead.vs

     目录          0  2016-12-07 16:05  DXFReadDebug

     目录          0  2016-12-07 16:36  DXFReadDXFRead

     目录          0  2016-12-07 16:35  DXFRead

----------- ---------  ---------- -----  ----

             30644044                    19


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)