菜鸟求教修改图层名问题
(defun c:11( /)
(vl-cmdf "-rename" "la" "a" "b")
(princ)
)
想在上面那段命令里面加入如下判断:如果图纸中包含“a”图层,则修改为“b”,如果无“a”图层,则不需任何操作。请问应如何来写
本帖最后由 荒野孤行 于 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)
)
;;;***改图层名 程序结束***
(tblsearch table-name symbol ) 加入如下判断
(tblobjname table-name symbol)
Command: (tblobjname "LAYER" "0")
<Entity name: 7ef53c70>
Command: (tblobjname "LAYER" "空")
nil
(defun c:11 ()
(if (tblsearch "LAYER" "a")
(vl-cmdf "-rename" "la" "a" "b")
)
(princ)
) 谢谢诸位高手,问题解决,不胜感激 学习了
页:
[1]