首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ezdxf删除DXF中的圆

使用ezdxf删除DXF中的圆
EN

Stack Overflow用户
提问于 2017-07-17 17:04:00
回答 2查看 957关注 0票数 1

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

我使用ezdxf doc编写代码,但从Python得到一个错误:

代码语言:javascript
复制
AttributeError: 'str' objet has no attribute 'destroy'

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

下面是我的代码:

代码语言:javascript
复制
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)

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-07-17 18:06:31

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

代码语言:javascript
复制
entities = dxf.entities
for e in entities:
        if e.dxftype() == 'CIRCLE':
            modelspace.delete_entity(e)

而不是:

代码语言:javascript
复制
modelspace.delete_entity('CIRCLE')

我认为它可能有一个更好的方法,但它是有效的。

票数 2
EN

Stack Overflow用户

发布于 2017-07-17 23:37:55

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

或者使用query()函数:

代码语言:javascript
复制
msp = dxf.modelspace()
for circle in msp.query('CIRCLE'):
    msp.delete_entity(circle)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45139989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档