T.Willey 发表于 2006-9-7 12:08:44

如何删除图层状态?

我有一个命名的LayerState(Temp)
我怎样才能让vba删除这个?

Jeff_M 发表于 2006-9-7 12:33:29

我认为你做不到 据我所知,分层状态不暴露于VBA

Jeff_M 发表于 2006-9-7 12:38:40

您可以通过命令行将其自动化
你可以打开图层管理器,然后发送键,字母;r“;将打开状态管理器
进入tere后,您可以使用alt和sndkeys访问命令,因为字母带有下划线
应该有效。

Jeff_M 发表于 2006-9-7 12:40:02

下面是我如何在lisp(ActiveX)中获得它们的列表,我认为您可以很容易地将其制作成VBA[代码如果'LayStDict#039;isn#039;如果出现错误,则当前图形中存在图层状态 希望这有帮助。

Jeff_M 发表于 2006-9-7 12:46:10

快速插入命令行一:
Public Sub DeleteLaterStateTemp()
      ThisDrawing.SendCommand "-layer" & vbCr
      ThisDrawing.SendCommand "a" & vbCr
      ThisDrawing.SendCommand "d" & vbCr
      ThisDrawing.SendCommand "temp" & vbCr & vbCr & vbCr
      
End Sub

Jeff_M 发表于 2006-9-7 22:25:00

这在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
需要更多的错误检查和HANDS#039;未经全面测试

Jeff_M 发表于 2006-9-7 23:03:23

美好的

Jeff_M 发表于 2006-9-8 08:50:39

Dave,“谢谢你的帮助,但是……Vba哽咽了。”;Me.Layers“
想法?

Jeff_M 发表于 2006-9-8 09:01:21

试试看

ThisDrawing.Layers

Jeff_M 发表于 2006-9-11 16:17:33

工作得很漂亮
谢谢!
页: [1] 2
查看完整版本: 如何删除图层状态?