Проверьте доступные слои в файле .dwg - PullRequest
0 голосов
/ 07 апреля 2020

Мне нужно программно проверить, существует ли слой на чертеже AutoCAD. Я знаю, что это просто сделать работу, используя .dxf, например:

In [77]: import win32com.client
    ...: import ezdxf
    ...: import os

In [78]: folder = r'C:\path\to\my\folder'
    ...: filename = 'my_file'

In [79]: dxf_path = os.path.join(folder, filename + '.dxf')

In [80]: dxf = ezdxf.readfile(dxf_path)

In [81]: '0' in dxf.layers
Out[81]: True

Но что, если я хочу проверить доступные слои в файле .dwg? Я сделал эту попытку, которая не сработала, потому что метод SendCommand возвращает None:

In [82]: acad = win32com.client.dynamic.Dispatch("AutoCAD.Application")

In [83]: dwg_path = os.path.join(folder, filename + '.dwg')

In [84]: dwg = acad.Documents.Open(dwg_path)

In [85]: dwg.SendCommand('(tblsearch "layer" "0") ') is not None
Out[85]: False

Любые предложения о том, как подойти к этой проблеме, будут с благодарностью.

1 Ответ

1 голос
/ 07 апреля 2020

Вы можете проверить, возвращает ли следующее объект слоя или исключение:

dwg.Layers.Item('0')

Или, альтернативно, выполнить итерацию по всем объектам слоя в коллекции Layers и установить переменную флага или вернуть, если Name свойство Layer соответствует названию нужного вам слоя.

...