【问题标题】:ezdxf : how to delete an entityezdxf : 如何删除实体
【发布时间】:2019-11-07 14:58:40
【问题描述】:

我正在使用 ezdxf 包对 DXF 绘图进行后处理。 然后,我将 DXF 转换为 SVG。

在后处理期间,我需要删除一些位于绘图区域之外的 INSERT 实体,以便转换后的 SVG 具有正确的尺寸。我正在做这样的事情:

def dxftype(entity):
   notHandled = []
   if entity.dxftype() in notHandled:
    return None
   else:
    return entity.dxftype()

def hasToBeDeleted(entity):
 """
 Some criteria for deleting an entity
 return a Boolean
 """

dwg = ezdxf.readfile("myDxfFile.dxf")
msp = dwg.modelspace()
group = msp.groupby(key=dxftype)

for entityType, entities in group.items():
 for e in entities:
  if hasToBedeleted(e):
   msp.delete_entity(e)

问题是,然后,在转换实体时没有删除。事实上,如果我在这之后立即执行另一个抑制循环,循环仍然会采取行动删除实体,证明实体并未真正从模型空间中删除。

那么从 ezdxf 的模型空间中删除实体的正确方法是什么?我目前使用的是 0.9 版本,目前无法升级到新版本

【问题讨论】:

    标签: python dxf ezdxf


    【解决方案1】:

    我刚开始使用 ezdxf 并看到了这个:

    https://ezdxf.mozman.at/docs/develop/entitydb.html

    尤其是purgetrashcan。垃圾桶提到“离开上下文时”,所以也许有一种方法可以使用 with 语句来促进对象的删除?保存它,在使用delete_entity 循环之后显式调用purge?迭代器文档说它不会返回已删除的项目,但“从轨道上核对它,这是唯一确定的方法”是一个很好的座右铭。

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      相关资源
      最近更新 更多