使用 ezdxf 从 dxf 文件中的 BLOCK REFERENCES 中提取 HATCH 详细信息

Using ezdxf to extract HATCH details from BLOCK REFERENCES in dxf files

我尝试提取 HATCH 实体及其图案类型,这些图案类型使用 INSERT 标记作为 BLOCK REFERENCES 插入到绘图中。 dxf图纸是https://drive.google.com/open?id=1SnGDaIh8XiMe0QKAQy1RXzpT-rLNcLk7

我在 python-3.6

上使用更新包 ezdxf-0.12 使用了以下代码
import ezdxf
import argparse

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True,
    help="path to input dxf file")
args = vars(ap.parse_args())
file = args["input"]    
doc = ezdxf.readfile(file)

msp = doc.modelspace()

for flag_ref in msp.query('INSERT'):
    for entity in flag_ref.virtual_entities():
        if entity.dxftype() == 'HATCH':

            print("HATCH", entity.dxf.pattern_name)

该代码未打印具有 ANSI31 模式的 HATCH 实体。 dxf 文件中有 2 个,可以在 Autocad 中查看(甚至可以使用常规文本编辑器查找)。可能会注意到,在给定的 dxf 文件中具有 SOLID 图案的 HATCH 实体是照常打印的。

代码或软件包更新中是否存在任何错误?

块"TC"的块引用#385和#38E具有非均匀缩放(-1、1、1),默认情况下ezdxf忽略(镜像与非均匀缩放具有几乎相同的复杂性) ,您必须通过 virtual_entities(non_uniform_scaling=True) 显式激活非均匀缩放。但是非均匀缩放会为某些实体产生不正确的结果——这仍然是一个实验性特征。 HATCH 实体中还有一个错误,将在 ezdxf 的下一个版本 v0.12.1 中修复。