2017-07-17 171 views
1

我想删除每个Circle实体以形成DXF文件。我使用ezdxf,它似乎是这种工作的好工具。使用ezdxf删除DXF中的圆圈

我用ezdxf文档写我的代码,但我从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

我成功了。我后我的代码:

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

相反的:

modelspace.delete_entity('CIRCLE') 

我想也许有更好的方式来做到这一点,但它的工作。

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

或使用查询()函数:

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