rustym 发表于 2022-7-5 16:26:45

将文本转换为属性

我正在为下一个dwg创建从tag_1到tag_6,然后从tag_7到tag_12的块,以此类推,并花时间重命名每个块的所有标记。因此,我喜欢在excel中创建我的tag_1到tag_40,将其复制到Autocad,分解为单行txt,然后将文本转换为我的属性标记,然后只需使每个块包含6个标记。
 
我找到了一个txt2att。lsp,但它将txt转换为属性值,并将标记名设置为“label”。我需要它将单行文本转换为属性标记。
 
Thanx获取任何建议或lisp程序:眨眼:

Lee Mac 发表于 2022-7-5 16:31:58

又快又脏:
 

(defun c:txt2tag (/ oldcmd ss)
(setq oldcmd (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(if (setq ss (ssget (list (cons 0 "TEXT")
   (if (getvar "CTAB")(cons 410 (getvar "CTAB"))
      (cons 67 (- 1 (getvar "TILEMODE")))))))
   (progn
      (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
    (command "-attdef" "" (cdr (assoc 1 (entget e))) "" ""
         (cdr (assoc 10 (entget e))) "")
    (entdel e)))
   (princ "\n<!> No Text Selected <!>"))
(setvar "CMDECHO" oldcmd)
(princ))

rustym 发表于 2022-7-5 16:33:40

你是一个明星李麦克。非常感谢你!!

Lee Mac 发表于 2022-7-5 16:37:15

没问题很乐意帮忙

rustym 发表于 2022-7-5 16:40:31

是否可以使其一次选择多个文本。我似乎认为它应该这样做,但它给出了一个错误,只是转换其中一个。
 
又是thanx

Lee Mac 发表于 2022-7-5 16:43:45

当我在多个文本对象上尝试它时,它似乎对我有效-它会产生什么错误?

rustym 发表于 2022-7-5 16:48:54

以下是选择2个对象后的文本,然后在输入旋转后仅继续转换选定的1个对象:
 
命令:TXT2TAG
选择对象:找到1个
 
选择对象:找到1个,共2个
 
选择对象:
需要有效的数字角度或第二个点。
; 错误:功能已取消
 
指定文字的旋转角度:

David Bethel 发表于 2022-7-5 16:50:30

你可能想看看这里:
 
http://www.cadtutor.net/forum/showthread.php?t=28205&highlight=txt2attd
 
-大卫

rustym 发表于 2022-7-5 16:52:44

谢谢,甚至没有通过搜索找到那个帖子。。。无论如何,这工作得更好,因为它添加了提示以及不要求旋转开关在我的情况下是不必要的,但不幸的是,没有转换多个选定的文本。
 
 

David Bethel 发表于 2022-7-5 16:57:19

尝试此选项进行多项选择

(defun c:txt2atta (/ ss i en ed)
(while (not ss)
      (princ "\nSelect TEXT to Convert to ATTDEF:   ")
      (setq ss (ssget (list (cons 0 "TEXT")
                              (if (getvar "CTAB")
                                  (cons 410 (getvar "CTAB"))
                                  (cons 67 (- 1 (getvar "TILEMODE"))))))))

(setq i (sslength ss))
(while (not (minusp (setq i (1- i))))
      (setq en (ssname ss i)
            ed (entget en))
      (if (wcmatch (cdr (assoc 1 ed)) "* *")
            (alert "\nString Contains Spaces - Try Again...")
            (progn
            (entmake (list (cons 0 "ATTDEF")
                           (assoc 8 ed)
                           (assoc 10 ed)
                           (assoc 11 ed)
                           (assoc 7 ed)
                           (assoc 40 ed)
                           (assoc 41 ed)
                           (assoc 50 ed)
                           (assoc 51 ed)
                           (cons 70 0)
                           (assoc 71 ed)
                           (assoc 72 ed)
                           (cons 74 (cdr (assoc 73 ed)))
                           (assoc 210 ed)
                           (cons 1 "")
                           (cons 2 (cdr (assoc 1 ed)))
                           (cons 3 (cdr (assoc 1 ed)))
                           (if (assoc 6 ed) (assoc 6 ed)'(6 . "BYLAYER"))
                           (if (assoc 39 ed) (assoc 39 ed)'(39 . 0))
                           (if (assoc 62 ed) (assoc 62 ed)'(62 . 256))))
            (entdel en))))
(redraw)
(prin1))
-大卫
页: [1] 2
查看完整版本: 将文本转换为属性