夕阳以西 发表于 2014-12-27 18:40:08

菜鸟求教修改图层名问题


(defun c:11( /)
(vl-cmdf "-rename" "la" "a" "b")
(princ)
)


想在上面那段命令里面加入如下判断:如果图纸中包含“a”图层,则修改为“b”,如果无“a”图层,则不需任何操作。请问应如何来写


荒野孤行 发表于 2017-9-1 20:41:15

本帖最后由 荒野孤行 于 2017-9-1 22:32 编辑


;;;***改图层名 程序开始***
(defun C:T1 ()
(princ "\n功能:快速更改图层名。")
(setvar "cmdecho" 0)
(initget "D S")
(if (not (setq kw
                  (getkword
                  "\n选择方式:[更改当前图层名(D)/更改所选图元所在图层的名称(S)]<D>"
                  )
           )
      )
    (setq kw "D")
)
(if (= kw "D")
    (setq laynam (getvar "CLAYER"))        ;获取当前图层
    (progn
      (setq ent           (entsel "\n请选择需要修改图层名的图元对象:")
          entnam (car ent)
          entdat (entget entnam)
      )
      (setq laynam (cdr (assoc 8 entdat))) ;获取所选图元的图层名
    )
)
(setq        newlaynam
       (getstring (strcat "\n请输入新的图层名:"))
)                                        ;输入新的图层名
(if (and (not (tblsearch "LAYER" newlaynam)) (/= laynam "0"))
                                        ;若新图层名与图档中的图层名未重名,且对象图层不是0图层时;那么执行更改图层名
    (command "rename" "la" laynam newlaynam)
    (progn (princ "\n所选当前层可能为0图层或者图层名与已有的图层名相重复,程序无效。\n")
           (exit)
    )
)
(princ)
)
;;;***改图层名 程序结束***


鱼与熊掌 发表于 2014-12-27 18:55:37

(tblsearch table-name symbol )

Andyhon 发表于 2014-12-27 19:38:39

加入如下判断

(tblobjname table-name symbol)

Command: (tblobjname "LAYER" "0")
<Entity name: 7ef53c70>

Command: (tblobjname "LAYER" "空")
nil

ZZXXQQ 发表于 2014-12-28 09:18:56

(defun c:11 ()
(if (tblsearch "LAYER" "a")
(vl-cmdf "-rename" "la" "a" "b")
)
(princ)
)

夕阳以西 发表于 2014-12-28 14:50:12

谢谢诸位高手,问题解决,不胜感激

paulpipi 发表于 2020-10-31 19:43:01

学习了
页: [1]
查看完整版本: 菜鸟求教修改图层名问题