pBe 发表于 2022-7-6 10:46:58

 
你说得对,这就是为什么我在处理文本(任何文本)时不使用entmod函数的原因
 
看看这个:
(defun CS(st / a dat)
(setq a (ssget'((0 . "TEXT,MTEXT"))))
(repeat (sslength a)
   (setq dat (entget (ssname a 0))
         dat (subst (cons 7 st) (assoc 7 dat) dat))
   (entmod dat)
   (ssdel (ssname a 0) a)
)
)

当它遇到注释性多行文字(Boom)
 
使用VL可以避免这种情况
(defun CS ( st / a)
(vl-load-com)
(if (setq a (ssget'((0 . "TEXT,MTEXT"))))
(mapcar '(lambda (j)
                  (vla-put-stylename (vlax-ename->vla-object j) st))
                  (vl-remove-if 'listp (mapcar 'cadr (ssnamex a))))
   )
(princ)
)

 
用法:
命令:(CS“ROMANS”)
 
页: 1 [2]
查看完整版本: 文本编辑