0

我想知道 DXF 文件中的每个实体将位于哪个图纸空间。我试图通过下面的代码找到它,但我得到的布局名称对于每个实体总是相同的,而 DXF 文件中有多个图纸空间。如何获取 DXF 文件中每个实体的图纸空间?

# Read a DXF file
doc = ezdxf.readfile(file_path, encoding='shift-jis')

# Print names of Paperspaces
print(doc.layout_names_in_taborder())
# -> ['Model', '0A_Cover', '0B_Number', '0C_List', '01', '01H', '02', '02H', '03', '03H', '04', '04H', '05', '05H', '06', '06H', '07', '07H']

# Print the name of paperspace for each entity in the DXF file 
for e in doc.entities:
    # Paperspace Name
    print(e.drawing.layout().name)

# -> 0A_Cover
#    0A_Cover
#    0A_Cover
#    0A_Cover
#    0A_Cover
#    ...
#    ...
# The paperspace name is always '0A_Cover' for all entities.

在此处输入图像描述

4

1 回答 1

2

通过名称获取所需的布局,如选项卡中所示:

layout = doc.layout('0A_Cover')

迭代此布局的实体:

for e in layout:
    print(str(e))

或使用实体查询:

lines = layout.query('LINE')
for line in lines:
    print(str(line))

doc.entities仅包含模型空间和实际活动图纸空间的实体,也称为 DXF 文件的实体部分。

要遍历布局中的所有实体(包括“模型”),请使用:

for name in doc.layout_names_in_taborder():
    for e in doc.layout(name):
        print(str(e))

要遍历布局和块中的所有实体,请使用:

for e in doc.chain_layouts_and_blocks():
    print(str(e))

使用实体数据库遍历DXF 文档的所有DXF 实体:

for e in doc.entitydb.values():
    print(str(e))

于 2020-05-14T11:16:42.413 回答