如何删除图层状态?
我有一个名为 LayerState (Temp) 的 LayerState。如何使vba删除它?
**** Hidden Message ***** 我不认为你可以。 根据我的记忆,LayerStates不会暴露给VBA 您可以通过命令行将其自动化
您可以打开图层管理器,然后使用sendkeys,字母“r”将打开状态管理器
进入tere后,您可以使用alt和sndkeys访问命令,因为字母带有下划线<这应该行得通。 以下是我如何在lisp(ActiveX)中获得它们的列表,我认为您可以很容易地将其转换为VBA<br>和<pre>(setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq LayCol (vla-get-Layers ActDoc))
(setq LayDict (vla-GetExtensionDictionary LayCol))
(setq LayStDict (vl-catch-all-apply 'vla-Item (list LayDict "ACAD_LAYERSTATES")))
如果“LayStDict”不是错误,则当前图形中存在图层状态。希望这有帮助。 快速插入命令行一:
Public Sub DeleteLaterStateTemp()
ThisDrawing.SendCommand "-layer" & vbCr
ThisDrawing.SendCommand "a" & vbCr
ThisDrawing.SendCommand "d" & vbCr
ThisDrawing.SendCommand "temp" & vbCr & vbCr & vbCr
End Sub
这似乎在 v2004 中有效。 也许它会有所帮助
Public Sub DelLayerState()
Dim colLayers As AcadLayers
Dim objDict As AcadDictionary
Dim objLayerStates As AcadDictionary
Dim objXrec As AcadXRecord
Set colLayers = Me.Layers
If colLayers.HasExtensionDictionary Then
Set objDict = colLayers.GetExtensionDictionary
Set objLayerStates = objDict("Acad_LayerStates")
objLayerStates("temp").Delete
End If
End Sub
需要更多的错误检查,还没有经过充分的测试 美好的 戴夫,
谢谢你的帮助,但是……Vba被“我.层”的想法噎住了
吗? 请尝试
ThisDrawing.Layers
工作漂亮!
谢谢!
页:
[1]
2