使用dxfgrabber库在Python中解析dxf文件

3 投票
2 回答
5125 浏览
提问于 2025-04-17 17:26

我想用dxfgrabber这个库来解析dxf文件,以获取里面的对象(比如线、点、文字等等)。

下面是我的代码:

#!/usr/bin/env python
import dxfgrabber

dxf = dxfgrabber.readfile("1.dxf")
print ("DXF version : {}".format(dxf.dxfversion))

但是它出现了一些错误……

Traceback (most recent call last):
  File "parsing.py", line 6, in <module>
    dxf = dxfgrabber.readfile("1.dxf")
  File "/usr/local/lib/python2.7/dist-packages/dxfgrabber/__init__.py", line 43, in readfile
    with io.open(filename, encoding=get_encoding()) as fp:
  File "/usr/local/lib/python2.7/dist-packages/dxfgrabber/__init__.py", line 39, in get_encoding
    info = dxfinfo(fp)
  File "/usr/local/lib/python2.7/dist-packages/dxfgrabber/tags.py", line 96, in dxfinfo
    tag = next(tagreader)
  File "/usr/local/lib/python2.7/dist-packages/dxfgrabber/tags.py", line 52, in __next__
    return next_tag()
  File "/usr/local/lib/python2.7/dist-packages/dxfgrabber/tags.py", line 45, in next_tag
    raise StopIteration()
StopIteration

这个简单的1.dxf文件只包含了一条线。

文件链接是 https://docs.google.com/file/d/0BySHG7k180kETlQ2UnRxQmxoUk0/edit?usp=sharing

这是dxfgrabber库的bug吗?有没有其他好的库可以在Python中解析dxf文件?

我使用的是dxfgrabber 0.4和Python 2.7.3。

2 个回答

0

你只能读取用AutoCAD格式制作的dxf文件!可以试试“DraftSight”,这是一个免费的AutoCAD克隆软件,导出的dxf文件效果很好。建议使用dxf R12格式。这样可以解决你的问题。

4

我联系了开发者,他说在当前版本0.5.1中,把__init__.py文件的第49行改成这样:with io.open(filename) as fp:。这样就能正常工作了(之前缺少了io)。他会在不久的将来在版本0.5.2中正式发布这个修正。

撰写回答