matlab dxflib如何使用,利用dxflib读写cad文件

本文介绍了如何在Qt环境中利用dxflib库读取和解析CAD文件,通过创建自定义的DL_CreationAdapter子类来捕获CAD数据,并展示了对应的Qt QML接口用于数据访问。
摘要由CSDN通过智能技术生成

本篇主要在qt做一个例子读取cad文件数据,使用的开源库是dxflib。用到dxflib的DL_CreationAdapter,DL_Dxf。DL_Dxf是用来读取.dxf文件的类,DL_CreatinAdapter是一个容器,当DL_Dxf加载.dxf文件后,就会响应DL_CreationAdapter这个类,读取cad数据。

我们来看看他的工作原理:

//自己声明一个类继承DL_CreationAdapter

class MyDxfFilter : public DL_CreationAdapter {

//重写虚函数来把度出来的数据保存到自己设计好的数据结构中

virtual void addLine(const DL_LineData& d);

...

}

void MyDxfFilter::addLine(const DL_LineData& d) {

std::cout << "Line: " << d.x1 << "/" << d.y1

<< " " << d.x2 << "/" << d.y2 << std::endl;

}

MyDxfFilter f;

DL_Dxf dxf;

//读取.dxf文件

if (!dxf.in("drawing.dxf", &f)) {

std::cerr << "drawing.dxf could not be opened.\n";

}

在这段程序中,当dxf.in("drawing.dxf", &f)读取.dxf文件成功了,如果文件中有很多line,那么f对象会一直递归调用虚函数接口addLine(),直到所有的line都读完。

重这个特征,我们就可以把所有我们要读取的数据都出来了!

直接上程序!:

entitiesDatas.h

#ifndef ENTITIESDATAS_H

#define ENTITIESDATAS_H

#include

#include "dl_dxf.h"

#include "dl_creationadapter.h"

#include "dl_attributes.h"

#include "dl_codes.h"

#include "dl_entities.h"

#include "dl_exception.h"

#include "dl_global.h"

#include "dl_writer.h"

#include "dl_writer_ascii.h"

#include

#include

class EntitiesDatas:public DL_CreationAdapter

{

public:

// explicit EntitiesDatas();

virtual void EntitiesDatas::addPoint(const DL_PointData &d){

points.append(d);

qDebug()<

}

virtual void EntitiesDatas::addLine(const DL_LineData &d){

lines.append(d);

qDebug()<

}

virtual void EntitiesDatas::addArc(const DL_ArcData &d){

arcs.append(d);

qDebug()<

}

virtual void EntitiesDatas::addCircle(const DL_CircleData &d){

circles.append(d);

qDebug()<

}

virtual void EntitiesDatas::addEllipse(const DL_EllipseData &d){

ellipses.append(d);

qDebug()<

}

virtual void

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值