crmosoldier 发表于 2022-7-6 09:03:31

我得走了,但我明天会回来查看你的回复,谢谢

pBe 发表于 2022-7-6 09:05:34

先看关贸总协定
 
脚本如下
关贸总协定

区块名称
标记名
新价值
......
 
这就是每个标签名
 
现在来看带脚本的lisp程序
 
这将是脚本的前几行:
 

(setq mlst '("DWG_REV0_NO1" "A" "DWG_REV0_DESC1" "WHATEVER" "DWG_REV0_BY1" "ME" "DWG_REV0_DATE1" "YOU" "DWG_REV0_CHK1" "HIM" "DWG_REV0_APPR1" "THEM"))
(setq mlst (vl-propagate 'mlst))
_.open "D:\Path\sheet1.dwg" (RunIt mlst) _.save_Y _.close
_.open "D:\Path\sheet2.dwg" (RunIt mlst) _.save_Y _.close

 
其中红色的是需要更改的数字,蓝色的是文字字符串/新字符串
 

(defun RunIt (lst)
(setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vlax-for itm (vla-get-ModelSpace aDoc)
   (if (and
(eq (vla-get-objectname itm) "AcDbBlockReference")
(eq (vla-get-effectivename itm) "YourBlockName")
)
   (mapcar (function
(lambda (j)
   (if (setq AtM (member (vla-get-tagstring j) lst))
   (vla-put-textstring j (cadr AtM))
   )
)
      )
      (vlax-invoke itm 'GetAttributes)
   )
   )
)
(princ)
)

 
希望这有帮助

Lee Mac 发表于 2022-7-6 09:08:51

 
Autodesk从未修复的ObjectDBX的一个不幸错误

pBe 发表于 2022-7-6 09:11:29

 
你知道吗,李,我也在想这个。。当我试图重新创建你的BFIND程序时,我遇到了同样的问题
另一方面:
您是如何使用BFind代码修改当前在另一个会话中打开的图形的?
 
顺便说一句:你没有双胞胎吗?也许是三胞胎?你到处都是

Lee Mac 发表于 2022-7-6 09:15:07

 
这里有一个较短/更简单的研究程序,演示了修改打开图形的相同方法。
 
 

pBe 发表于 2022-7-6 09:17:04

 
凉豆
 
谢谢李

crmosoldier 发表于 2022-7-6 09:20:17

谢谢pBe,
 
那么这些代码的每一位都做了什么呢?
 
我已将第二个保存为。lsp和把我的标题栏的名字,但我不确定还有什么我必须做的。。。

pBe 发表于 2022-7-6 09:24:07

我明白了,我将为您编写一个支持lisp的代码,这样您就可以自己尝试了
 
坚持住。
 
编辑:
提醒:
1.runit代码应加载到每个图形上:(启动套件/Acaddoc.lsp)
2、您已准备好运行脚本:
此格式
_.打开“D:\path\sheet1.dwg”(RunIt mlst)_。保存。关
_.打开“D:\path\sheet2.dwg”(RunIt mlst)_。保存。关
 
 

(defun c:runscr (/ *IntGet1 RevV RevDes RevBy RevDteRevChk RevApp)
(defun *IntGet1 (fn msg flg )(initget 1)
(setq val ((eval fn) flg msg))
(if (eq val "")(progn (princ "Null Input Try again")
(*IntGet1 fn msg flg))) val   
)
(if (not suf) (setq suf 1))
    (setq suf (cond
                   ((getint (strcat "\nEnter Revision Number Suffix < " (itoa suf) " >: ")))
                   (suf)))
(setq RevV (strcase (*IntGet1 'Getstring "\nEnter New Revision Value: " nil))
    RevDte (strcase (*IntGet1 'Getstring "\nEnter New Revision Date: " nil))
    RevDes (strcase (*IntGet1 'Getstring "\nEnter New Revision Descriptiom: " T))
    RevBy (strcase (*IntGet1 'Getstring "\nEnter By: " nil))
    RevChk (strcase (*IntGet1 'Getstring "\nEnter Checked: " nil))
    RevApp (strcase (*IntGet1 'Getstring "\nEnter Approved: " nil)))
(setq mlst
    (apply 'append
(mapcar '(lambda (j k)
   (list (strcat "DWG_REV" (itoa suf) j) (eval k)))
'("_NO" "_DESC" "_BY" "_DATE" "_CHK" "_APPR")
'(RevV RevDes RevBy RevDteRevChk RevApp))
   )
   )
(vl-propagate 'mlst)
(setq Fl (getfiled "Select Script file: " "" "scr" )
(command "_.script" fl)
(princ)
)

 
命令:RUNSCR
输入修订号后缀:2
输入新修订值:B
输入新修订日期:2011年10月19日
输入新修订说明:一般修订
输入人:pBe
输入选中项:HIM
输入已批准:BOSS
 
一个窗口将提示您选择保存的Sript文件
 
希望这有帮助
 
 
顺便说一句:我对我的第一份名单完全不满意
“DWG\u REV0\u NO1”应该是(“DWG\u REV1\u NO”愚蠢的我

crmosoldier 发表于 2022-7-6 09:27:02

谢谢,对不起,我还是迷路了
你指的是什么(Startup Suite/Acaddoc.lsp)?
我该如何处理这些不同的代码位,并以什么顺序运行它们?
 
所以,整个过程是否不像我想象的那么简单,我想有一种方法可以让脚本只使用ATTEDIT,按名称选择模板,然后将属性标记更改为我在脚本中输入的新值,然后使用ScriptPro选择多个图形。。。不是那么容易吗?

pmxcad 发表于 2022-7-6 09:30:53

为什么不使用Autocad electrical,您可以运行项目范围的脚本。比ScriptPro工作更快。一个项目可以包含所有数据。
 
Pmxcad
页: 1 [2]
查看完整版本: 标题栏属性脚本