Matersammichman 发表于 2006-6-2 11:32:53

代码请求

我需要代码来评估哪些图层在MS中是关闭的或冻结的,然后在所有布局的所有视口中冻结它们。
有人至少得到了接近这一点的东西吗?
:丑陋:
**** Hidden Message *****

Jeff_M 发表于 2006-6-2 12:56:15

这确实做到了,但使用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

Bryco 发表于 2006-6-2 13:51:11

那么vplayer不暴露于VBA?似乎奇怪的是,您可以通过其他方式操纵层

Jeff_M 发表于 2006-6-2 19:05:51

有了。您必须更改存储在视口(1002,1003)中的扩展数据
Frank Z或O制作了一个不错的“sub VpLayerOff”,它googles ok
页: [1]
查看完整版本: 代码请求