forked from mozman/ezdxf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch_entity.py
43 lines (34 loc) · 1.15 KB
/
search_entity.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Copyright (c) 2018-2022 Manfred Moitzi
# License: MIT License
import ezdxf
from ezdxf import recover
from pathlib import Path
DXF_ENTITY = "SUNSTUDY"
def has_dxf_entity(filename, entity_name):
try:
doc = ezdxf.readfile(filename)
except IOError:
return False
except ezdxf.DXFError:
try:
print("Using recover mode.")
doc, auditor = recover.readfile(filename)
except ezdxf.DXFStructureError:
print(f"DXF structure error!")
return False
entities = doc.modelspace().query(entity_name)
if len(entities):
return True
entities = doc.objects.query(entity_name)
return bool(len(entities))
def process_dir(folder: Path):
for filename in folder.iterdir():
if filename.is_dir() and filename.stem != "BigFiles":
process_dir(filename)
elif filename.match("*.dxf"):
print(f"processing: {filename}")
if has_dxf_entity(filename, DXF_ENTITY):
print("\n" + "*" * 40)
print(f"FOUND: {DXF_ENTITY}")
print("*" * 40 + "\n")
process_dir(ezdxf.options.test_files_path)