乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 16|回复: 0

layer管理[原创]

[复制链接]

25

主题

87

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
187
发表于 2002-6-7 15:23:00 | 显示全部楼层 |阅读模式
;这是一个基于 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
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-5-25 02:48 , Processed in 0.316271 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表