【问题标题】:How do I open a DWG file extension with Python?如何使用 Python 打开 DWG 文件扩展名?
【发布时间】:2011-02-07 21:15:02
【问题描述】:

我有一个扩展名为 .dwg (AutoCAD) 的文件,我想从 Python 控制台调用该文件并将其呈现在 Web 上。是否有 .dwg 扩展模块或其他解决方案?

【问题讨论】:

  • 您打算如何在网络上展示?
  • 你的意思是把dwg转成图片还是直接把文件上传到网上?
  • 我的意思是像谷歌地图一样呈现在 IFrame 中。

标签: python dwg


【解决方案1】:

在线显示这些的最佳格式(imo)肯定是 SVG。 最近的浏览器原生支持 SVG 渲染;较旧的(想想 IE6)可能需要 SVG 插件

所以你最好的选择可能是使用像cad2svg 这样的命令行转换工具(这是一个免费的 linux 命令行工具),它将 DWG 文件转换为 SVG。您可以通过您的 Python 程序轻松做到这一点 (usingsubprocess)。

【讨论】:

  • “截至 2012 年 12 月,我不再获得提供免费软件下载的许可。”伤心
【解决方案2】:

仅从 .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,或者你可以在终端中使用它或者在你的程序中使用它作为shell命令。

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

【讨论】:

  • 在 python 中,我使用 dxfgrabber 来处理 .dxf 文件,
【解决方案3】:

也许你可以从这个 Summer Of Code 项目中使用一些东西

http://groups.fsf.org/wiki/LibreDWG/SummerOfCode

http://groups.fsf.org/wiki/LibreDWG

【讨论】:

    【解决方案4】:

    GNU LibreDWG(GitHub mirror) 是 2021 年末的标准答案。滑稽地从 中记录的现已解散的 LibDWG 项目中分叉出来......等待它 世界语,LibreDWG:

    • 可选择安装 Python 3 绑定默认启用)。
    • 可选择安装 DWG→DXF 转换器默认启用)。
    • 不出所料,根据 GPL 3.0 获得许可(适用于 Web 后端;其他地方不太适用)。
    • 几乎支持整个R2010+

    说真的,天气很热。 LibreDWG 是唯一仍然重要的明智选择。让我们拥抱理智,每个人。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      相关资源
      最近更新 更多