在ezdxf中使用正则表达式更改图层名称

时间:2019-07-17 06:28:23

标签: python-3.x autocad

我正在考虑使用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'”

0 个答案:

没有答案