我正在考虑使用ezdxf中的正则表达式更改图层名称。
autocad中有多个图层名称。例如, AAA-BBB-a AAA-BBB-b AAA-BBB-c
我正在尝试使用正则表达式更改此层以使其全部为AAA-BBB。
我可以通过使用ezdxf库指定一个图层名称来更改它。 但是,在更改多个图层名称时使用正则表达式会导致错误。
导入ezdxf 导入球 从pathlib导入路径 导入操作系统 汇入 输入import TYPE_CHECKING,TextIO,可迭代
out_dir = Path('输出')
file_list = glob.glob('./ input / *。dxf') 用于file_list中的文件名: dwg = ezdxf.readfile(filename,encoding ='auto',legacy_mode = False) msp = dwg.modelspace()
for layer in dwg.layers:
s=layer.dxf.name
OLD_LAYER_NAME1 = re.findall('AAA-BBB'+'\w',s)
NEW_LAYER_NAME1 = 'AAA-BBB'
try:
layer = dwg.layers.get(OLD_LAYER_NAME1)
except ValueError:
print('Layer {} not found.'.format(OLD_LAYER_NAME1))
else:
layer.dxf.name = NEW_LAYER_NAME1
all_entities_on_old_layer = msp.query('*[layer=="%s"]' % OLD_LAYER_NAME1)
for entity in all_entities_on_old_layer:
entity.dxf.layer = NEW_LAYER_NAME1 # this assigns the new layer
发生以下错误
「AttributeError:'list'对象没有属性'dxf'”