mbrandt5 发表于 2022-7-5 18:30:23

将所有字段转换为文本


(defun C:R-FIELDS ( / del-field ss1 index item)
(defun del-field (ent / edic)
   (if (setq edic (cdr (assoc 360 (entget ent))))
      (dictremove edic "ACAD_FIELD")
   )
)
(if (= (getvar "TILEMODE") 0)
   (progn
    (setvar "TILEMODE" 1)
    (command "REGEN")
   )
)
(if
   (setq ss1
   (ssget "X"
       (list (cons 0 "TEXT,MTEXT,MULTILEADER")
             (cons 67 0)
       )
   )
   )
   (progn
    (setq index 0)
    (repeat (sslength ss1)
      (setq item (ssname ss1 index))
      (if (del-field item) (entupd item))
      (setq index (+ 1 index))
    )
   )
)
(if
(setq ss1
    (ssget "X"
      (list (cons 0 "INSERT")
            (cons 67 0)
            (cons 66 1)
      )
    )
)
(progn
    (setq index 0)
    (repeat (sslength ss1)
      (setq item (ssname ss1 index))
      (while (= (cdr (assoc 0 (entget (setq item (entnext item))))) "ATTRIB")
      (if (del-field item) (entupd item))
      )
      (setq index (+ 1 index))
    )
)
)
(princ)
)

 
 
此代码将替换所有文字、多行文字和标注中的所有字段
 
 
出于某种原因,突发动态块的文本/(旧属性)内的字段不会因某种原因而更改?
 
 
有人知道为什么吗?

mbrandt5 发表于 2022-7-5 18:44:08

任何想法。。。

tombu 发表于 2022-7-5 18:52:07

试试R字段。lsp发件人:http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/convert-field-to-text/m-p/1722025#M217920

mbrandt5 发表于 2022-7-5 18:59:18

这实际上是相同的代码。。。虽然我注意到有一个更新。。。
 
 
但仍然不起作用。。。
 
 
任何有兴趣帮忙的人都将不胜感激

mbrandt5 发表于 2022-7-5 19:12:45

我已经了解了发生这种情况的原因,因为多行文字在爆炸后在列属性中是动态的。。。
 
 
因此,如果可以用代码更改,我相信这会解决问题

mbrandt5 发表于 2022-7-5 19:18:40

没有主意??

Lee Mac 发表于 2022-7-5 19:26:05

你可以附上一个包含问题多行文字示例的示例图吗?
 
您是否尝试过使用我的升级突发程序或嵌套突发程序,而不是使用标准突发命令?(它们使用与标准突发命令非常不同的方法)。
 

mbrandt5 发表于 2022-7-5 19:33:22

我尝试了Iburst,以及NBurst,不幸的是没有运气。。。附加的是R字段Lsp/有问题的块,其属性可转换,但不会保留在R字段执行时最后给定的字段值。
 
 
很抱歉这么晚才回复我有很多事情要做
R字段。lsp
BurstRFieldError。图纸
页: [1]
查看完整版本: 将所有字段转换为文本