tth02 发表于 2011-7-13 15:26:21

凑足5个回复再说。

tth02 发表于 2011-7-13 15:48:58

本帖最后由 tth02 于 2011-7-13 15:50 编辑

以下vba代码可以完成相应功能。最后显示所有图层的实体。没有对话框。

Sub LayerWalk()
Dim objLayer As AcadLayer, objLayer2 As AcadLayer, str1 As String
On Error GoTo ErrHand
For Each objLayer In ThisDrawing.Layers
    ThisDrawing.Utility.Prompt "当前显示图层为:" & objLayer.name & vbCrLf
    ThisDrawing.ActiveLayer = objLayer
    objLayer.LayerOn = True
    For Each objLayer2 In ThisDrawing.Layers
      If objLayer2.name <> objLayer.name Then
            objLayer2.LayerOn = False
      End If
    Next objLayer2
    str1 = ThisDrawing.Utility.GetString(0, "回车显示下一图层")
Next objLayer
ErrHand:
For Each objLayer In ThisDrawing.Layers
    objLayer.LayerOn = True
Next objLayer
End Sub

linheyuanpcb 发表于 2011-7-16 10:01:35

;***********************************************************************
;逐层查看
(defun C:VL(/ nlay)
   (cond ((= lla nil)(setq lla (list))
          (setq alla (tblnext "LAYER" T))
          (whilealla
                      (setq lla1(cdr (assoc '2 alla)))
                   (setq lla (cons lla1 lla))
                   (setq alla (tblnext "LAYER"))
          )
          (setq lla (reverse lla))
       )
      (T nil)
)
(setvar "cmdecho" 0)
   (if (= ilay nil)
       (setq ilay 0)
   )
   (if (= ilay (length lla))
         (setq ilay 0)
   )
   (command "_LAYER" "_S" (nth ilay lla) "_off" "*" "" "_on" "raster" "")
   (setq nlay (strcat "\n当前显示图层是; " (nth ilay lla) " 按确认跳转下一层!"))
   (princ nlay)
   (setq ilay (1+ ilay))
   (setvar "cmdecho" 1)
(princ)
)
;***********************************************************************
页: 1 [2]
查看完整版本: [求助]大家帮忙看下这个功能能否实现