zilong136 发表于 2024-5-1 13:50:57

  怎么将普通文字转为属性文字?

平时大多数都是普通文字,有时候需要属性文字,怎么将普通文字转为属性文字?

huxu823 发表于 2024-5-1 16:12:42


;属性文字<--->单行文本相互转换
(defun c:ta (/ ss num ee nam ent)
(prompt "\n***属性文字与单行文字相互转换---LZYCAD做部分修改***")
(setq ss (ssget '((0 . "ATTDEF,TEXT"))))
(if ss (progn
(setq num (sslength ss) ee 0)
(repeat num
   (setq nam (ssname ss ee)
         ent(entget nam)
   )
    (cond
      ((= (cdr (assoc 0 ent)) "ATTDEF")
       (att-to-tx ent)(entdel nam)
      );1
      ((= (cdr (assoc 0 ent)) "TEXT")
       (txmtx-to-att ent)(entdel nam)
      );2
    );cond
    (setq ee (1+ ee))
);repeat
));if
(princ)
);defun
(prompt "\n***属性文字与单行文字相互转换---LZYCAD做部分修改,启动命令ta***\n")
;----------------------------------------------
;属性文本转单行文本                           
;----------------------------------------------
(defun att-to-tx (ent / new dolst grp addto)
    (setq new '((0 . "TEXT")))
    (setq new (append new
                      (list (cons 1 (cdr (assoc 2 ent))))
            )
    )
    (setq dolst (list 7 8 10 11 39 40 41 50 51 62 71 72 73))
    (foreach grp dolst
      (setq addto (assoc grp ent))
      (if (/= addto nil)
      (setq new (append new (list (assoc grp ent))))
      )
    )
    (entmake new)
)
;----------------------------------------------
;单行文本转属性文本                           
;----------------------------------------------
(defun txmtx-to-att (ent / new dolst grp addto)
    (setq new '((0 . "ATTDEF")))
    (setq new (append new
                      (list (cons 1 (cdr (assoc 1 ent)))
                            (cons 2 (cdr (assoc 1 ent)))
                            (cons 3 (cdr (assoc 1 ent)))
                            (cons 70 0)
                      )
            )
    )
    (setq dolst (list 7 8 10 11 39 40 41 50 51 62 71 72 73))
    (foreach grp dolst
      (setq addto (assoc grp ent))
      (if (/= addto nil)
      (setq new (append new (list (assoc grp ent))))
      )
    )
    (entmake new)
)

lxl217114 发表于 2024-5-1 17:46:55

以前在论坛搜到过

weimeng555 发表于 2024-5-5 00:25:00

刚好需要到,感谢

zilong136 发表于 2024-5-5 11:32:24

weimeng555 发表于 2024-5-5 00:25
刚好需要到,感谢

其实源泉也有这个类似的命令:yq_blockatt2text-提取块内属性为文字(不打碎块)

muai2010 发表于 2024-5-5 13:18:15

huxu823 发表于 2024-5-1 16:12


如果单行文字中间有空格的话,使用后文字会消失

yk1216 发表于 2024-5-21 12:33:31

很方便,谢谢分享

huxu823 发表于 2024-5-21 13:24:43

muai2010 发表于 2024-5-5 13:18
如果单行文字中间有空格的话,使用后文字会消失

确实有这个bug,我也不会解决
页: [1]
查看完整版本:   怎么将普通文字转为属性文字?