我需要以编程的方式检查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如能就如何处理这一问题提出任何建议,将不胜感激。
发布于 2020-04-07 12:16:59
您可以测试以下内容是返回一个图层对象还是一个异常:
dwg.Layers.Item('0')或者,对Layers集合中的所有层对象进行迭代,如果该层的Name属性与所查找的层的名称匹配,则设置一个标志变量或返回。
https://stackoverflow.com/questions/61077847
复制相似问题