【问题标题】:Remove Circles in DXF using ezdxf使用 ezdxf 删除 DXF 中的圆圈
【发布时间】:2017-07-17 23:37:54
【问题描述】:

我想从 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)

谢谢。

【问题讨论】:

    标签: python dxf


    【解决方案1】:

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

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

    而不是:

    modelspace.delete_entity('CIRCLE')
    

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

    【讨论】:

      【解决方案2】:
      1. 要删除 DXF 实体,您必须传递 DXF 实体对象而不是字符串。
      2. 如果您从模型空间中删除对象,最好只迭代模型空间的实体,dxf.entities 包含模型空间的实体和活动图纸空间:for e in dxf.modelspace() .. .

      或使用 query() 函数:

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

      【讨论】:

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