Losinski 发表于 2022-7-5 18:17:34

GATTE带多行文字(或替代文字)

大家好,
我制作了一个简单的LISP来调用使用gatte命令的脚本。目的是调整标题栏字段。一切都很好,除了mtext这个属性有时不起作用。
我已经发现,当属性值中有足够的文本到达第二行时,gatte命令不会改变它。如果属性值跨越两行,然后减少到一行,它仍然不起作用。打开图形时,该值只能为一行。
无论如何,说到这里。。。
我需要一种方法将块“BLOCK123”中属性“ATT123”的值更改为“AS build”。ATT123的值是多行文字,必须保持这种状态。
有什么建议吗?
谢谢
洛辛斯基

Hippe013 发表于 2022-7-5 18:30:06

您是否能够发布代码和包含具有该属性的块的示例dwg?

Losinski 发表于 2022-7-5 18:42:43

我已经把它贴在这个帖子上了。
 
 
LISP调用以下脚本来更改属性的值:
 
 
关贸总协定

“NP标题栏信息”
REVDESC版本
竣工
Y
测试图纸。图纸

Hippe013 发表于 2022-7-5 18:50:26

试试这个吧?
 
(defun c:test ()
(setq sel (nentsel "\nSelect Object: "))
(if sel
   (progn
   (setq ent (car sel))
   (setq obj (vlax-ename->vla-object ent))
   (vlax-put-property obj 'TextString "AS BUILT")
   )
   (princ "\nNothing was Selected:")
   )
(princ)
)

Losinski 发表于 2022-7-5 18:56:56

这很有效,但我需要自动选择。
 
 
区块名称:block123
属性名称:revdesc123
 
 
您可以调整lisp以适应这种情况吗?
 
 
谢谢
洛辛斯基

Hippe013 发表于 2022-7-5 19:01:11

可以试试这个
 
 
(defun c:test ()
(setq ss (ssget "X" '((0 . "INSERT")(2 . "NP TITLEBLOCK INFO"))))
(setq sslen (sslength ss))
(setq n 0)
(repeat sslen
   (setq ent (ssname ss n))
   (setq obj (vlax-ename->vla-object ent))
   (setq att (vlax-invoke-method obj 'GetAttributes))
   (setq att (vlax-safearray->list (vlax-variant-value att)))
   (foreach attref att
   (if (= "REVDESC" (vlax-get-property attref 'TagString))
(vlax-put-property attref 'TextString "ASBUILT"))
   )
   (setq n (+ 1 n))
   )
(princ)
)

Losinski 发表于 2022-7-5 19:10:30

就这样,干得好!
 
 
谢谢
洛辛斯基

Hippe013 发表于 2022-7-5 19:25:42

很高兴我能帮忙!
页: [1]
查看完整版本: GATTE带多行文字(或替代文字)