使用ezdxf从dxf文件中的BLOCK REFERENCES中提取HATCH细节。

问题描述 投票:0回答:1

我试图提取HATCH实体及其模式类型,这些实体使用INSERT标签作为BLOCK REFERENCES插入到图纸中。该dxf图纸是 https:/drive.google.comopen?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实体是照常打印的。

是代码中的错误还是包的更新?

python autocad dxf ezdxf
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.