脚本如下
关贸总协定
块
区块名称
标记名
新价值
......
这就是每个标签名
现在来看带脚本的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)
)
希望这有帮助
Autodesk从未修复的ObjectDBX的一个不幸错误
你知道吗,李,我也在想这个。。当我试图重新创建你的BFIND程序时,我遇到了同样的问题
另一方面:
您是如何使用BFind代码修改当前在另一个会话中打开的图形的?
顺便说一句:你没有双胞胎吗?也许是三胞胎?你到处都是
这里有一个较短/更简单的研究程序,演示了修改打开图形的相同方法。
凉豆
谢谢李 谢谢pBe,
那么这些代码的每一位都做了什么呢?
我已将第二个保存为。lsp和把我的标题栏的名字,但我不确定还有什么我必须做的。。。 我明白了,我将为您编写一个支持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”愚蠢的我 谢谢,对不起,我还是迷路了
你指的是什么(Startup Suite/Acaddoc.lsp)?
我该如何处理这些不同的代码位,并以什么顺序运行它们?
所以,整个过程是否不像我想象的那么简单,我想有一种方法可以让脚本只使用ATTEDIT,按名称选择模板,然后将属性标记更改为我在脚本中输入的新值,然后使用ScriptPro选择多个图形。。。不是那么容易吗? 为什么不使用Autocad electrical,您可以运行项目范围的脚本。比ScriptPro工作更快。一个项目可以包含所有数据。
Pmxcad
页:
1
[2]