如何用Python打开DWG文件扩展名?

14 投票
4 回答
39398 浏览
提问于 2025-04-15 21:35

我有一个扩展名为 .dwg 的文件(这是 AutoCAD 的文件格式),我想从 Python 控制台中调用这个文件,并在网页上展示出来。请问有没有专门处理 .dwg 文件的模块或者其他解决方案呢?

4 个回答

3

从 .dwg 文件中获取数据并不简单,但从 .dxf 文件中获取就容易多了。所以我选择把 .dwg 文件转换成 .dxf 文件,然后只处理 .dxf 文件。这个过程虽然不快,但也算是一种替代方案,因为处理 .dwg 文件没有其他简单的方法。

你可以在这个链接找到转换工具:https://www.opendesign.com/guestfiles/TeighaFileConverter

我的操作系统是 CentOS 6.5(GCC 4.4.7),所以我选择了 Teigha File Converter for Linux 64-bit (RPM)

#Install some qt5 lib
yum install -y qt5*

# If your libstdc++.so.6 has GLIBCXX>=15, you can pass the following three steps (using strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX to find)
mv libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6.0.20
mv /usr/lib64/libstdc.so.6 /usr/lib64/libstdc.so.6.bk
ln /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc.so.6

# Install TeighaFileConverter
rpm -i --nodeps TeighaFileConverter_QT5_lnxX64_4.7dll.rpm

如果你想使用图形界面,就需要安装 Qt 5,或者你也可以直接在终端使用,或者在你的程序中作为命令来使用。

TeighaFileConverter 'input_folder' 'output_folder' "output_version" "output_type" "recurse_folder" "audit" -platform offscreen
# 'input_folder' can't be same with output_folder
# For example, convert dwg to dxf
TeighaFileConverter ./ ./dxf "ACAD10" "DXF" "0" "0" -platform offscreen
8

GNU LibreDWG (GitHub 镜像) 是2021年底的标准答案。这个项目搞笑地是从已经不再维护的 LibDWG 项目分叉出来的,而那个项目的文档居然是用 ...等一下 世界语写的。关于 LibreDWG,有以下几点:

  • 可以选择安装Python 3 的接口默认是开启的)。
  • 可以选择安装DWG 转 DXF 的转换工具默认是开启的)。
  • 使用GPL 3.0 许可证在网络后端使用没问题;在其他地方就不太合适了)。
  • 几乎支持R2010 及以上版本

说真的,这个项目很不错。LibreDWG 是唯一一个仍然重要的理智选择。大家一起支持理智吧。

6

我觉得在网上展示这些内容,最好的格式肯定是SVG。现在的浏览器都支持直接显示SVG;不过一些老旧的浏览器(比如IE6)可能需要安装一个SVG插件。

所以,最好的办法可能是使用一个命令行转换工具,比如cad2svg(这是一个免费的Linux命令行工具),它可以把DWG文件转换成SVG格式。你可以很简单地在你的Python程序中做到这一点,方法是使用 subprocess模块。

撰写回答