检查 .dwg 文件中的可用层
Check available layers in .dwg file
我需要以编程方式检查 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
方法 returns 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
如有任何关于如何解决此问题的建议,我们将不胜感激。
您可以测试以下 return 是层对象还是异常:
dwg.Layers.Item('0')
或者,遍历 Layers
集合中的所有 Layer 对象并设置标志变量或 return 如果 Layer 的 Name
属性 与名称匹配您寻找的图层。
我需要以编程方式检查 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
方法 returns 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
如有任何关于如何解决此问题的建议,我们将不胜感激。
您可以测试以下 return 是层对象还是异常:
dwg.Layers.Item('0')
或者,遍历 Layers
集合中的所有 Layer 对象并设置标志变量或 return 如果 Layer 的 Name
属性 与名称匹配您寻找的图层。