使用 ezdxf 访问 DXF 中的 INSERT/Block 内容
Access INSERT/Block content in DXF with ezdxf
我正在尝试使用 python 2.7 和 ezdxf 模块将 DXF 文件的内容绘制到图像中。
我实现了读取和绘制LINE、POLYLINE、CIRCLE,但我不知道如何处理INSERT 元素。
我想这个 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
[...]
我能否希望从 INSERT 内容中探索和提取基本元素?
谢谢大家!
BLOCK 是可重复使用的实体集合,可以像模型一样使用 space 来搜索或添加 DXF 实体。
INSERT实体是块引用,它决定了插入块实体的位置、大小和旋转。并且 INSERT 可以有额外的 ATTRIB 实体,这些实体是由标签(名称)引用的文本值。
BLOCK 定义存储在 Drawing.blocks 属性:
# iterate over all existing block definitions
for block in dwg.blocks:
for e in block:
analyseElement(e)
INSERT 实体存储在模型 space 或另一个块定义中:
for insert in modelspace.query('INSERT'):
block = dwg.blocks[insert.dxf.name]
for e in block:
analyseElement(e)
要搜索特定的 INSERT 实体:
for insert in modelspace.query('INSERT[name=="MyBlock"]'):
...
我正在尝试使用 python 2.7 和 ezdxf 模块将 DXF 文件的内容绘制到图像中。
我实现了读取和绘制LINE、POLYLINE、CIRCLE,但我不知道如何处理INSERT 元素。 我想这个 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
[...]
我能否希望从 INSERT 内容中探索和提取基本元素? 谢谢大家!
BLOCK 是可重复使用的实体集合,可以像模型一样使用 space 来搜索或添加 DXF 实体。
INSERT实体是块引用,它决定了插入块实体的位置、大小和旋转。并且 INSERT 可以有额外的 ATTRIB 实体,这些实体是由标签(名称)引用的文本值。
BLOCK 定义存储在 Drawing.blocks 属性:
# iterate over all existing block definitions
for block in dwg.blocks:
for e in block:
analyseElement(e)
INSERT 实体存储在模型 space 或另一个块定义中:
for insert in modelspace.query('INSERT'):
block = dwg.blocks[insert.dxf.name]
for e in block:
analyseElement(e)
要搜索特定的 INSERT 实体:
for insert in modelspace.query('INSERT[name=="MyBlock"]'):
...