使用 ezdxf 访问 DXF 中的插入/块内容

tec*_*ico 1 python dxf

我正在尝试使用 python 2.7 和 ezdxf 模块将 DXF 文件的内容绘制到图像中。

我实现了读取和绘制直线、折线、圆,但我不知道如何处理插入元素。我想这个 INSERT 元素(或相关块)包含其他元素,LINE、POLYLINE 等等......对吗?

以下是我访问基础 DXF 元素的方法:

dwg = ezdxf.readfile(filename)
modelspace = dwg.modelspace()
for e in modelspace:
   analyseElement(e)

def analyseElement(e):
   if e.dxftype() == 'LINE':
       print("DXF LINE FOUND:")
       p1=e.dxf.start
       p2=e.dxf.end
      [...]
Run Code Online (Sandbox Code Playgroud)

我可以希望从 INSERT 内容中探索和提取基本元素吗?谢谢你们 !

moz*_*man 5

BLOCK 是可重用的实体集合,可以像模型空间一样用于搜索或添加 DXF 实体。

INSERT实体是块引用,它确定插入块实体的位置、大小和旋转。INSERT 可以有额外的 ATTRIB 实体,它们是由标签(名称)引用的文本值。

BLOCK 定义存储在 Drawing.blocks 属性中:

# iterate over all existing block definitions
for block in dwg.blocks:
    for e in block:
        analyseElement(e)
Run Code Online (Sandbox Code Playgroud)

INSERT 实体存储在模型空间或另一个块定义中:

for insert in modelspace.query('INSERT'):
    block = dwg.blocks[insert.dxf.name]
    for e in block:
         analyseElement(e)
Run Code Online (Sandbox Code Playgroud)

要搜索特定的 INSERT 实体:

for insert in modelspace.query('INSERT[name=="MyBlock"]'):
    ...
Run Code Online (Sandbox Code Playgroud)