 - ;;;;;;;;;;;;;;;;关闭图层
- (defun c:xf () (bb_layon&off_multiple '("dote*" "DOTE*")) (princ "关闭/打开:轴线图层") (princ)) ;;;关闭轴线图层
- (defun c:xff () (bb_layon&off_multiple '("0-PM-固定家具")) (princ "关闭/打开:0-PM-固定家具") (princ)) ;;;0-PM-固定家具
- (defun c:xdd () (bb_layon&off_multiple '("0-TF*" "0-DM*")) (princ "关闭/打开:天花图层,地面图层") (princ)) ;;;天花图层,地面图层
- (defun c:xxf () (bb_layon&off_multiple '("0-PM-建筑面积计算" "面积全算" "面积半算" "面积扣除")) (princ "关闭/打开:0-PM-建筑面积计算,面积全算,面积半算,面积扣除图层") (princ)) ;;;0-PM-建筑面积计算
- (defun c:sd () (bb_layon&off_multiple '("Defpoints" "PUB_VWPRT" "layer3")) (princ "关闭/打开:Defpoints,PUB_VWPRT图层") (princ)) ;;;0-PM-建筑面积计算
- ;;; 新函数:支持多个图层和通配符
- (defun bb_layon&off_multiple (patterns / doc layers layer layname matched)
- (vl-load-com)
- (setvar "cmdecho" 0)
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- (setq layers (vla-get-layers doc))
-
- ;; 遍历所有图层
- (vlax-for layer layers
- (setq layname (vla-get-name layer))
- (setq matched nil)
-
- ;; 检查图层是否匹配任一模式
- (foreach pattern patterns
- (if (wcmatch layname pattern)
- (setq matched t)
- )
- )
-
- ;; 如果匹配,则切换图层状态
- (if matched
- (if (= (vla-get-layeron layer) :vlax-true)
- (command "_.layer" "_off" layname "")
- (command "_.layer" "_on" layname "")
- )
- )
- )
- (setvar "cmdecho" 1)
- (princ)
- )
- ;;; 保留原函数以便向后兼容
- (defun bb_layon&off (pattern)
- (bb_layon&off_multiple (list pattern))
- )
|