warrentdo 发表于 2022-7-6 07:32:26

将所有3.5mm文字移动到t层

您好,我们正在使用autocad 2012。
有没有办法将所有3.5mm的文字移动到图层text3.5,并将所有5mm的文字移动到图层text5。
我希望是Lisp程序,而不是Qselect。
任何一个指针都会很好。
当做
沃伦。

Dadgad 发表于 2022-7-6 08:04:46

欢迎来到论坛。
 
听起来像是一个非常简单的Lisp程序,有人会给你设置。
 
我只需要创建一个保存的过滤器,然后用我的“快捷特性”选项板进行操作,
如果您已经设置并保存了
频繁使用。
显然没有Lisp程序那么快。

Lee Mac 发表于 2022-7-6 08:19:59

尝试以下操作:
 
(defun c:txt2lay ( / d e i s )
   (setq d (getvar 'dimzin))
   (setvar 'dimzin
   (if (setq s (ssget "_X" '((0 . "TEXT") (-4 . "<OR") (40 . 3.5) (40 . 5.0) (-4 . "OR>"))))
       (repeat (setq i (sslength s))
         (setq e (entget (ssname s (setq i (1- i)))))
         (entmod (subst (cons 8 (strcat "text" (rtos (cdr (assoc 40 e)) 2))) (assoc 8 e) e))
       )
   )
   (setvar 'dimzin d)
   (princ)
)

Tharwat 发表于 2022-7-6 08:43:38

如果Op是指字符串而不是高度。
 

(defun c:Test (/ ss i e)
(if (and
       (tblsearch "LAYER" "text3.5")
       (tblsearch "LAYER" "text5")
       )
   (if (setq ss (ssget "_X" '((0 . "*TEXT") (-4 . "<OR") (1 . "3.5mm") (1 . "5mm") (-4 . "OR>"))))
   (repeat (setq i (sslength ss))
       (setq e (entget (ssname ss (setq i (1- i)))))
       (if (eq (cdr (assoc 1 e)) "3.5mm")
         (entmod (subst (cons 8 "text3.5") (assoc 8 e) e))
         (entmod (subst (cons 8 "text5") (assoc 8 e) e))
         )
       )
   )
   (princ "\n one or the two layers are not found in the drawing ")
   )
(princ)
)

页: [1]
查看完整版本: 将所有3.5mm文字移动到t层