明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2290|回复: 0

layer管理[原创]

[复制链接]
发表于 2002-6-7 15:23:00 | 显示全部楼层 |阅读模式
;这是一个基于AutoCAD 14.0下关于层的开关的程序
;它可以打开选中的层或关上选中的层或打开所有的层
;本程序作者b.w
;本程序无偿使用
;如有更好建议,请联系b.w
;版本:0.0.00
;日期:27/12-2001

(defun GET_LAYNAME
  (
  ents_set
  /
  laylst lcount ent_set layname
  )
  (setq laylst nil)
  (setq lcount (- (sslength ents_set) 1))
  (while (>= lcount 0)
    (setq ent_set (ssname ents_set lcount))
    (setq ent_set (entget ent_set))
    (setq layname (cdr (assoc 8 ent_set)))
    (if (not (member layname laylst))
      (setq laylst (append (list layname) laylst))
    );end-if
    (setq lcount (1- lcount))
  );end-while
  (setq laylst laylst)
);end-GET_LAYNAME

(defun SELECT_LAY
  (
  /
  layset
  )
  (setq layset nil)
  (setq layset (ssget))
  (if (/= layset nil)
    (setq layset (GET_LAYNAME layset))
    ;else
    (princ "\nNo object selected!")
  );end-if
  (setq layset layset)
);end-SELECT_LAY

(defun B_LAY_ON_OBJ
  (
  /
  layerlist n clayer
  )
  (prompt "\nSelect objects to set layer ON... ")
  (setq layerlist (SELECT_LAY))
  (if layerlist
    (progn
      (setq n (- (length layerlist) 1))
      (setq clayer (nth n layerlist))
      (command "layer" "off" "*" "y")
      (command "on" clayer "s" clayer)
      (setq n (- n 1))
      (while (>= n 0)
        (setq clayer (nth n layerlist))
        (command "on" clayer)
        (setq n (1- n))
      );end-while
      (command "")
    );end-progn
  );end-if
);end-B_LAY_ON_OBJ

(defun B_LAY_OFF_OBJ
  (
  /
  layerlist n cur_layer clayer
  )
  (prompt "\nSelect objects to set layer OFF... ")
  (setq layerlist (SELECT_LAY))
  (if layerlist
    (progn
      (setq n (- (length layerlist) 1))
      (setq cur_layer (getvar "CLAYER"))
      (command "layer")
      (while (>= n 0)
        (setq clayer (nth n layerlist))
        (if (= clayer cur_layer)
          (princ "\nCurrent layer will not turn off!")
         ;else
          (command "off" clayer)
        );end-if
        (setq n (1- n))
      );end-while
      (command "")
    );end-progn
  );end-if
);end-B_LAY_OFF_OBJ

(defun B_LAY_FRE_OBJ
  (
  /
  layerlist n cur_layer clayer
  )
  (prompt "\nSelect objects to set layer FRE... ")
  (setq layerlist (SELECT_LAY))
  (if layerlist
    (progn
      (setq n (- (length layerlist) 1))
      (setq cur_layer (getvar "CLAYER"))
      (command "layer")
      (while (>= n 0)
        (setq clayer (nth n layerlist))
        (if (= clayer cur_layer)
          (princ "\nCurrent layer will not turn off!")
         ;else
          (command "f" clayer)
        );end-if
        (setq n (1- n))
      );end-while
      (command "")
    );end-progn
  );end-if
);end-B_LAY_FRE_OBJ

(defun B_LAY_CHG_OBJ
  (
  /
  layerlist ent_set layname
  )
  (prompt "\nSelect objects to CHANGE layer name... ")
  (setq layerlist (ssget))
  (if layerlist
    (progn
      (prompt "\nSelect DEFAULT object layer... ")
      (setq ent_set (car (entsel)))
      (if ent_set
        (progn
          (setq ent_set (entget ent_set))
          (setq layname (cdr (assoc 8 ent_set)))
          (command "change" layerlist "" "p" "la" layname "")
        );end-progn
        ;else
        (princ "\nNo object selected!")
      );end-if
    );end-progn
    ;else
    (princ "\nNo object selected!")
  );end-if
  (setq layerlist nil)
);end-B_LAY_CHG_OBJ

(defun B_LAY_SET_OBJ
  (
  /
  ent_set layname
  )
  (prompt "\nSelect object to set CURRENT layer... ")
  (setq ent_set (car (entsel)))
  (if ent_set
    (progn
      (setq ent_set (entget ent_set))
      (setvar "CLAYER" (cdr (assoc 8 ent_set)))
    );end-progn
    ;else
    (princ "\nNo object selected!")
  );end-if
);end-B_LAY_SET_OBJ

(defun B_LAY_ON_ALL
  (
  /
  )
  (prompt "\nOn all layers... ")
  (command "layer" "on" "*" "")
);end-B_LAY_ON_ALL

(defun B_LAYERCTR
  (
  B_layer_bit
  /
  )
  (cond ((= B_layer_bit "1") (B_LAY_ON_OBJ))
        ((= B_layer_bit "2") (B_LAY_OFF_OBJ))
        ((= B_layer_bit "3") (B_LAY_CHG_OBJ))
        ((= B_layer_bit "4") (B_LAY_SET_OBJ))
        ((= B_layer_bit "5") (B_LAY_ON_ALL))
        ((= B_layer_bit "6") (B_LAY_FRE_OBJ))
  );end-cond
  (princ)
);end-B_LAYERCTR
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 15:39 , Processed in 0.163656 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表