DWG格式解析库

分类: 365外勤官网下载 时间: 2025-07-25 03:01:35 作者: admin 阅读: 4733
DWG格式解析库

libredwg 是什么 LibreDWG 是 github 上一个开源的 C 库,用于读写 DWG 文件。这个程序是 GNU 项目的一部分,在 GNU 的支持下发布。它是国外大牛开发的,是目前我觉得对 DWG 支持最好的一个库(2000版本以后的DWG文件都支持,且稳定),现在还在持续更新与维护。 libreDWG的地址

目的 在WIN10下 借助 QT 快速使用 libreDWG 库的 exe 实现对 DWG 文件的操作,包括 dwg2dxf、dwg2svg、dwg2bmp、dwgread、dwgwrite、dxf2dwg 等功能 。

step1:准备① 下载 libreDWG 的可执行文件: libredwg-0.12.4.4364-win64.zip (可以选最新版本下载) 下载解压出来长这样:(绿框中的4个DLL是依赖库) ② 安装 QT 软件: QT5.14 (只要是QT5就行)

step2:命令行运行exe1.打开CMD并切换到刚下载的 libredwg-0.12.4.4364-win64 文件夹下

命令:cd /d E:\Mao\temp\dwg支持\libredwg-0.12.4.4338-win64(你的路径) 2. 输入exe文件名(以 dwg2dxf.exe 为例) ① 如下图,输出接口参数输入格式 ② 用 -help 可以查看具体参数含义 3. DWG 转 DXF 文件

dwg2dxf.exe 1.dwg使用最简单的方式转换:只输入要转换的DWG文件名,默认原地转换。 注意:1.dwg 与 dwg2dxf.exe 在同一路径下 转完发现文件夹下多了1.dxf文件,转换成功。

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

Mainwindow.cpp

#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 + "\r\r");

}

//转换按钮

void MainWindow::BtnConvert()

{

//调用 cmd 运行 exe 程序

QProcess process(this);

//转换后的DXF保存路径

QString DxfSavePath = "E:/Mao/dwg2dxf/1.dxf";

//使用的 exe 文件的路径

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

//输出的DXF是2018版本的

process.start("cmd",QStringList()<<"/c"<

process.waitForFinished();

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

}

//清空按钮

void MainWindow::BtnClear()

{

ui->Edit->clear();

}

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

总结 这是我之前开发过的一个功能,因为DXF解析库已经比较完善,很好支持,但是DWG解析库暂时没那么普及,所以我进行了个迂回:DWG转成DXF,再使用熟悉的DXF。如果急用可以直接使用 exe 实现功能,当然有时间的话最好消化一下内部代码实现,有问题大家也可以在评论区讨论。

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

按 README.txt 说明去操作最后解析出来3个依赖库和2个可执行文件使用QT实现跨平台(也是cmd调用)

相关文章

花呗怎么开通的?2025最新开通指南,包含条件、步骤、开通失败处理办法
汽车之家
如何打开bios
暂的解释