1

我尝试使用 INSERT 标签提取 HATCH 实体及其模式类型,这些实体作为 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 实体照常打印。

代码或包更新中是否有任何错误?

4

1 回答 1

2

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

于 2020-04-23T05:43:12.940 回答