这确实做到了,但使用SendCommand.....
- Sub freezeall()
- Dim oLay As AcadLayer
- Dim lSpace As Long
- Dim iEcho As Integer
- ThisDrawing.StartUndoMark
- lSpace = ThisDrawing.ActiveSpace
- iEcho = ThisDrawing.GetVariable("nomutt")
- ThisDrawing.SetVariable "nomutt", 1
- ThisDrawing.ActiveSpace = acPaperSpace
- For Each oLay In ThisDrawing.Layers
- If oLay.Freeze = True Or oLay.LayerOn = False Then
- ThisDrawing.SendCommand "vplayer f " & oLay.Name & vbCr & "a" & vbCr & vbCr
- End If
- Next
- ThisDrawing.ActiveSpace = lSpace
- ThisDrawing.SetVariable "nomutt", iEcho
- ThisDrawing.EndUndoMark
- End Sub
|