ksperopoulos 发表于 2022-7-6 00:04:56

向图层名称添加文字

我试图通过lisp将文字添加到图层名称中,但通过我的研究,我找不到任何有关这方面的信息。有人能给我指一下正确的方向吗?

hmsilva 发表于 2022-7-6 00:16:51

单向:

(defun c:test ( / LAy LAYN LAYNAME)
(if (setq layname (cdr (assoc 8 (entget (car (entsel "\nSelect an object to change the LayerName: "))))))
   (progn
   (vlax-for lay (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq layn (vla-get-name lay))
(if (and (wcmatch layn layname)
(/= layn "0")
(/= layn "Defpoints")
    );; and
(vla-put-Name lay "My-Test-Layer")
);; if
   );; vlax-for
   );; progn
);; if
(princ)
);; test

 
要将文字添加到图层名,请执行以下操作:

(vla-put-Name lay (strcat layname "your text to add"))

 
HTH公司
亨里克

ksperopoulos 发表于 2022-7-6 00:24:22

谢谢你的回复。这是visual lisp,对吗?我正在努力学习Autolisp。有没有办法用Autolisp来代替?

hmsilva 发表于 2022-7-6 00:32:44

可能是这样的:
 

(defun c:test ( / LAYNAME)
(if (and (setq layname (cdr (assoc 8 (entget (car (entsel "\nSelect an object to change the LayerName: "))))))
   (/= layname "0")
   (/= layname "Defpoints")
   );; and
(command "._rename" "_Layer" layname (strcat layname "your text to add"))
);; if
(princ)
);; test

 
亨里克

ksperopoulos 发表于 2022-7-6 00:35:54

非常感谢。“strcat”是我需要的。

hmsilva 发表于 2022-7-6 00:46:18

不客气!
很高兴我能帮忙
 
亨里克

Lee Mac 发表于 2022-7-6 00:53:15

 
亨里克,
 
由于(entget nil)将出错,if语句变得冗余,因为在任何情况下,测试表达式都将返回nil,而程序不会返回错误。
 
只是一个提示!
 

hmsilva 发表于 2022-7-6 00:59:43

 
李,
一如既往地正确,这是一个很好的提示!
 
但是,太晚了,我几乎睡着了。。。
亨里克

Lee Mac 发表于 2022-7-6 01:10:52

别担心,亨里克!
页: [1]
查看完整版本: 向图层名称添加文字