AutoCAD 将图层设置保存在图形的 Layers 集合的扩展词典中。用户首次保存图形中的图层设置时,AutoCAD 将执行以下操作:
- 在 Layers 集合中创建扩展词典。
- 在扩展词典中创建命名为 ACAD_LAYERSTATE 的 Dictionary 对象。
- 将图形中每个图层的特性存储在 ACAD_LAYERSTATE 词典的 XRecord 对象中。AutoCAD 将所有图层设置存储在 XRecord 中,但会标明用户选择保存的特定设置。恢复图层设置时,AutoCAD 仅恢复用户选择保存的设置。
每次保存图形中另一图层设置时,AutoCAD 均将创建另一个描述保存设置的 XRecord 对象,并将 XRecord 存储在 ACAD_LAYERSTATE 词典中。下面的图表说明了这个过程。
用户使用 ActiveX 对图层设置进行操作时,不需要(也不应该)解释 XRecord,而应该使用 LayerStateManager 对象的功能访问保存的图层设置。
如果图层设置已经保存在当前的图形中,则下面的代码列出所有已经保存的图层设置名称:
Sub Ch4_ListStates()
On Error Resume Next
Dim oLSMDict As AcadDictionary
Dim XRec As Object
Dim layerstateNames As String
layerstateNames = ""
' 获取 ACAD_LAYERSTATES 词典,它保存在
' Layers 对象的扩展词典中
Set oLSMDict = ThisDrawing.Layers. _
GetExtensionDictionary.Item("ACAD_LAYERSTATES")
' 列出每个己保存的图层设置的名称。设置
' 保存为词典中的 XRecord。
For Each XRec In oLSMDict
layerstateNames = layerstateNames + XRec.Name + vbCrLf
Next XRec
MsgBox "The saved layer settings in this drawing are: " + _
vbCrLf + layerstateNames
End Sub