daveyboyd 发表于 2022-7-6 11:41:02

att编辑帮助

我正在尝试使用Scriptpro运行脚本。我只想更改块中属性中的文本。
 
我正在使用GATTE命令来执行此操作,但是,当它要求我输入块名时,由于块名中有空格,它会显示“无效选择”。
 
块的名称是WILDE-TAMESIDE BORDER NEW,我试图更改的属性是STATUS
 
我已经试过了,但没有用,这是我的代码。
 
关贸总协定
王尔德-塔梅赛德边境新酒店
状态
用于施工
 
谁能告诉我我做错了什么?
 
谢谢

Lee Mac 发表于 2022-7-6 12:04:54

显然我要插入我自己的程序
http://www.cadtutor.net/forum/showthread.php?t=37127
 
此外,如果您在ScriptPro打开和关闭每个图形的AutoCAD时遇到问题,我的script writer程序(我的sig中的链接)可能会对您有更多帮助。

Lee Mac 发表于 2022-7-6 12:22:58

或者,使用LISP例程而不是命令调用:
 

(defun attchng (blk tag val / i ss ent att)
(vl-load-com)
;; Lee Mac~17.02.10

(mapcar (function set) '(blk tag)
         (mapcar (function strcase) (list blk tag)))

(if (setq i -1 ss (ssget "_X" (list (cons 0 "INSERT")
                                     (cons 2 blk) (cons 66 1))))
   
   (while (setq ent (ssname ss (setq i (1+ i))))

   (foreach att (vlax-invoke (vlax-ename->vla-object ent) 'GetAttributes)

       (if (eq (strcase (vla-get-TagString att)) Tag)
         (vla-put-TextString att val)))))

(princ))

 
在你的剧本中这样称呼它;
 

(attchng "blockname" "tagname" "newtagvalue")

 
但您需要确保它已加载到每个图形中。

daveyboyd 发表于 2022-7-6 12:30:48

这是一个很好的小程序,谢谢。但是
 
我不会在多个文件(50+以上)上运行它,而不深入每一个文件,这就是我想使用scriptpro的原因。
 
你用什么来代替区块标题中的空格?

Lee Mac 发表于 2022-7-6 12:44:41

 
你指的是我的马加特计划吗?这是专门为在目录/子目录中运行100个图形而构建的。
 
它使用ObjectDBX,比依次打开每个图形快100倍,因为它可以在不打开图形的情况下对图形进行操作
页: [1]
查看完整版本: att编辑帮助