我不知道你是否能看到这个,但左边是输入值的未爆炸块,右边是已爆炸块。我想在B后面的数字上加302。图中有大约400个相同的块,它们都需要在值上加302。寻找简单(快速)的解决方法。我有大约10张这些图纸需要更改,每个都有不同的值,有些需要添加32,有些需要添加24,有些需要添加619等等。
试试这个:
(defun c:Test (/ st s)
;; Tharwat 04.Aug.2015 ;;
(if (and (/= "" (setq st (getstring "\nEnter a string to add to attributes in blocks:")))
(princ "\nSelect Attributed Blocks")
(setq s (ssget "_:L" '((0 . "INSERT")(66 . 1))))
)
((lambda (i / sn)
(while (setq sn (ssname s (setq i (1+ i))))
(mapcar '(lambda (u) (vla-put-textstring u (strcat (vla-get-textstring u) st)))
(vlax-invoke (vlax-ename->vla-object sn) 'getattributes)
)
))
-1)
)
(princ)
) (vl-load-com)
我不太喜欢运行lsp例程。。。。。我该怎么做。lsp代替。txt文件 用新文件打开记事本,复制并粘贴文件中的代码,然后用您喜欢的扩展名保存。lsp然后返回Autocad并运行命令appload或ap,然后选择以前保存的文件,然后成功,键入test以运行lisp例程。 它只是在文本末尾添加了“302”。i、 e.12345变为12345302,而不是12647
12345
+302
-------
12647
你刚刚回答了我之前问你的问题。
我现在要走了,如果明天之前没有人给你一个解决方案,我会回来给你写一个新的程序。 为你的时间干杯。。。对不起,我花了这么长时间解释我需要什么。
拉特尔斯。 有人对这个有什么想法吗??? 对不起,我迟了回复,我必须先完成我的紧急工作。
试试这个程序,让我知道。
(defun c:Test (/ s val)
;; Tharwat 06.Aug.2015 ;;
(if (and (/= ""
(setq
val (getstring
"\nEnter a number to add to attributes in blocks :"
)
)
)
(numberp (read val))
(princ "\nSelect Attributed Blocks")
(setq s (ssget "_:L" '((0 . "INSERT") (66 . 1))))
)
((lambda (i / sn str l no st)
(while (setq sn (ssname s (setq i (1+ i))))
(mapcar
'(lambda (u)
(setq str (vla-get-textstring u)
l nil
no nil
st nil
l (vl-string->list str)
)
(mapcar '(lambda (n)
(if (< 47 n 58)
(setq no (append no (list n)))
(setq st (append st (list n)))
)
)
l
)
(if no
(vla-put-textstring
u
(vl-string-subst
(itoa (+ (read val) (read (vl-list->string no))))
(vl-list->string no)
str
)
)
)
)
(vlax-invoke (vlax-ename->vla-object sn) 'getattributes)
)
)
)
-1
)
)
(princ)
)(vl-load-com)
谢谢你。。。我稍后会试一试。。。被调到另一份工作。
页:
1
[2]