ReMark 发表于 2022-7-5 16:09:26

寻找变化层李

我本可以发誓在CADTutor上有一个帖子,但由于过度暴露在电磁射线下,我的外星大脑无法定位它。
 
我正在搜索一个lisp例程,该例程将接受所有文本和多行文字,无论它们位于哪个层,并将它们放在一个名为“Text”的层上。我有一些来自外部供应商的图纸需要合并,以便我们使用它们。最好采用一步方法。
 
有人能给我指出正确的方向吗?提前感谢您的帮助。

Tharwat 发表于 2022-7-5 16:22:10

您好,备注,
 
请尝试以下操作,如果图层名“Text”在图形中尚不可用,则应创建图层名“Text”。
 

(defun c:Test ( / s i sn)
;; Tharwat - Move (m)Texts to layer Text        ;;
    (and (setq s (ssget "_X" '((0 . "*TEXT"))))
         (setq i -1)
         (while (setq sn (ssname s (setq i (1+ i))))
            (entmod (append (entget sn) '((8 . "TEXT"))))
         )
      )
(princ)
)

ReMark 发表于 2022-7-5 16:36:17

谢谢塔瓦。我会马上试一试,然后汇报。非常感谢。
 
这套程序在塔瓦特很有效。我该如何报答你的好意?

Tharwat 发表于 2022-7-5 16:46:08

随时欢迎你。
 
这是我的荣幸。

BIGAL 发表于 2022-7-5 17:00:55

为了好玩,直接在命令行(命令“chprop”(ssget“x”(list(cons 0“*text”))“la”“text”)上键入此命令,它不会检查现有的文本层。

Tharwat 发表于 2022-7-5 17:19:09

BIGAL,仅供参考,
 
只要没有要计算的变量,就不需要使用list为ssget函数构建过滤器。
所以这个

(ssget "x" (list( cons 0 "*text"))

可以缩短到这个

(ssget "x" '((0 . "*text")))

 
再进一步说,如果AutoCAD版本不是英文版本,“x”应该不起作用(据我所知),因此它应该是带有下划线和大写字母x字符的“_x”。
页: [1]
查看完整版本: 寻找变化层李