请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。 对不起,先生SLW210,我将编辑我的帖子
谢谢你,先生,
Tharwat爵士,已确认动态闭塞
先生,我怎样才能更改这个块,以便使用您的代码? 我设法找到了如何将动态块更改为静态块,
但是我仍然不能使用chageattribute代码。
这是否意味着我们不能在AutoCAD 2012中使用lsp?
我已经修改了你的代码并添加了一些函数,你没有试过吗?
Tharwat爵士有个错误
快照请参见附件
我也已经给了你一个注释,你需要将函数changeAttribValue添加到我修改过的程序中,明白吗?
我不知道把加法函数放在哪里,
这通常是步骤
一旦我加载lsp
然后输入命令
_查特里布
块名:__uuu(它要求块名)
旧值:__;(输入块名后,它会立即请求旧值)
新值:__uu(与前一个相同,它立即请求新值)
然后在我输入我想要的新值后出错
我可以在这个命令的哪里添加changeattribvalue?
(defun c:CHATTRIB (/ ss sn a attag bname oldval newval)
(defun changeAttribValue (ent atttag oldval newval / entl)
(while (and ent
(/= "SEQEND" (cdr (assoc 0 (setq entl (entget ent)))))
)
(and (= atttag (cdr (assoc 2 entl)))
(= oldval (cdr (assoc 1 entl)))
(entmod (subst (cons 1 newval) (assoc 1 entl) entl))
(entupd ent)
(mapcar 'princ (list "\n" oldval " -> " newval))
)
(setq ent (entnext ent))
)
)
(and (/= "" (setq bname (getstring "\nBlock name: ")))
(/= "" (setq attag (getstring T "\nTag: ")))
(/= "" (setq oldval (getstring T "\nOld value: ")))
(/= "" (setq newval (getstring T "\nNew value: ")))
(setq ss (ssget "_X"
(list '(0 . "INSERT")
'(66 . 1)
(cons 2 (strcat "`*U*," bname))
)
)
)
(repeat (setq a (sslength ss))
(if (eq (vla-get-effectivename
(vlax-ename->vla-object
(setq sn (ssname ss (setq a (1- a))))
)
)
bname
)
(changeAttribValue
sn
attag
oldval
newval
)
)
)
)
(princ)
)(vl-load-com) Tharwat先生,非常感谢您所做的工作,我终于可以用您的代码更改属性值了
非常感谢你。
页:
1
[2]