使用ezdxf删除DXF中的圆圈

时间:2017-07-17 09:04:00

标签: python dxf

我想从DXF文件中删除每个Circle实体。我正在使用ezdxf,它似乎是这种工作的好工具。

我使用ezdxf doc编写我的代码,但是我收到Python的错误:

AttributeError: 'str' objet has no attribute 'destroy'

我不明白为什么。我使用了这个文档:http://pythonhosted.org/ezdxf/layouts.html#delete-entities

这是我的代码:

import dxfgrabber
import ezdxf

dwg = dxfgrabber.readfile("test.dxf")
print(dwg)
c = []
center_points = [entity.center for entity in dwg.entities if entity.dxftype == 'CIRCLE']
dxf = ezdxf.readfile("test.dxf")
modelspace = dxf.modelspace()
for point in center_points:
    modelspace.add_point(point)
    c.append(point)
modelspace.delete_entity('CIRCLE')
dxf.save()
print(c)

感谢。

2 个答案:

答案 0 :(得分:2)

我成功了。我发布了我的代码:

entities = dxf.entities
for e in entities:
        if e.dxftype() == 'CIRCLE':
            modelspace.delete_entity(e)

而不是:

modelspace.delete_entity('CIRCLE')

我认为它可能有更好的方法,但它正在发挥作用。

答案 1 :(得分:1)

  1. 要删除DXF实体,您必须传递DXF实体对象而不是字符串。
  2. 如果从模型空间中删除对象,最好只迭代模型空间的实体,dxf.entities包含模型空间的实体和活动的纸张空间:对于e在dxf.modelspace()中。
  3. 或使用query()函数:

    msp = dxf.modelspace()
    for circle in msp.query('CIRCLE'):
        msp.delete_entity(circle)