2023年12月11日发(作者:)

DWG格式解析库---libredwg快速使用(Win10+QT)

libredwg 是什么

LibreDWG 是 github 上一个开源的 C 库,用于读写 DWG 文件。这个程序是 GNU 项目的一部分,在 GNU 的支持下发布。它是国

外大牛开发的,是目前我觉得对 DWG 支持最好的一个库(2000版本以后的DWG文件都支持,且稳定),现在还在持续更新与维护。

目的

在WIN10下 借助 QT 快速使用 libreDWG 库的 exe 实现对 DWG 文件的操作,包括 dwg2dxf、dwg2svg、dwg2bmp、

dwgread、dwgwrite、dxf2dwg 等功能 。

step1:准备

① 下载 libreDWG 的可执行文件:

(可以选最新版本下载)

下载解压出来长这样:(绿框中的4个DLL是依赖库)

② 安装 QT 软件:

(只要是QT5就行)

step2:命令行运行exe

1.打开CMD并切换到刚下载的 libredwg-0.12.4.4364-win64 文件夹下

命令:cd /d E:Maotempdwg支持libredwg-0.12.4.4338-win64(你的路径)

2. 输入exe文件名(以 为例)

① 如下图,输出接口参数输入格式

② 用 -help 可以查看具体参数含义

3. DWG 转 DXF 文件

使用最简单的方式转换:只输入要转换的DWG文件名,默认原地转换。

注意: 与 在同一路径下

转完发现文件夹下多了文件,转换成功。

step3 :用QT完成转换

1.先上效果图

2.程序

Mainwindow.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include

QT_BEGIN_NAMESPACE

namespace Ui { class MainWindow; }

QT_END_NAMESPACE

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

MainWindow(QWidget *parent = nullptr);

~MainWindow();

public slots:

void BtnOpen(); //

打开按钮

void BtnConvert(); //

转换按钮

void BtnClear(); //

清空按钮

private:

Ui::MainWindow *ui;

QString fileName; //

输入的

DWG

文件路径

};

#endif // MAINWINDOW_H

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include

#include

#include

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

connect(ui->btnOpen,&QPushButton::clicked,this,&MainWindow::BtnOpen);

connect(ui->btnConvert,&QPushButton::clicked,this,&MainWindow::BtnConvert);

connect(ui->btnClear,&QPushButton::clicked,this,&MainWindow::BtnClear);

}

MainWindow::~MainWindow()

{

delete ui;

}

//

打开按钮

void MainWindow::BtnOpen()

{

fileName = QFileDialog::getOpenFileName(this, tr("open file"),

"./", tr("*.dwg *.DWG"));

ui->Edit->insertPlainText("Open File Success:r"+ fileName + "rr");

}

//

转换按钮

void MainWindow::BtnConvert()

{

//

调用

cmd

运行

exe

程序

QProcess process(this);

//

转换后的

DXF

保存路径

QString DxfSavePath = "E:/Mao/dwg2dxf/";

//

使用的

exe

文件的路径

QString Dwg2dxfExePath = "E:/Mao/algorithm/Qt/test/libredwg-0.12.4.4338-win64/";

//

输出的

DXF

2018

版本的

("cmd",QStringList()<<"/c"<

rFinished();

ui->Edit->insertPlainText("Convert Dwg to Dxf Success:r" + DxfSavePath + "rr");

}

//

清空按钮

void MainWindow::BtnClear()

{

ui->Edit->clear();

}

UI界面

因为只是演示,所以代码逻辑不严谨,没有进行判空处理。

总结

这是我之前开发过的一个功能,因为DXF解析库已经比较完善,很好支持,但是DWG解析库暂时没那么普及,所以我进行了个迂回:

DWG转成DXF,再使用熟悉的DXF。如果急用可以直接使用 exe 实现功能,当然有时间的话最好消化一下内部代码实现,有问题大家也可

以在评论区讨论。

在Linux下的版本我也做了,已经测试成功,下次有时间再写。

大致步骤:

1. 按 说明去操作

2. 最后解析出来3个依赖库和2个可执行文件

3. 使用QT实现跨平台(也是cmd调用)