Ark Angel 发表于 2022-7-5 19:20:03

https://www.cadtutor.net/forum/attachment.php?attachmentid=55091&cid=1&stc=1
我不知道你是否能看到这个,但左边是输入值的未爆炸块,右边是已爆炸块。我想在B后面的数字上加302。图中有大约400个相同的块,它们都需要在值上加302。寻找简单(快速)的解决方法。我有大约10张这些图纸需要更改,每个都有不同的值,有些需要添加32,有些需要添加24,有些需要添加619等等。

Tharwat 发表于 2022-7-5 19:22:50

试试这个:
 

(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)

Ark Angel 发表于 2022-7-5 19:26:06

我不太喜欢运行lsp例程。。。。。我该怎么做。lsp代替。txt文件

Tharwat 发表于 2022-7-5 19:28:41

用新文件打开记事本,复制并粘贴文件中的代码,然后用您喜欢的扩展名保存。lsp然后返回Autocad并运行命令appload或ap,然后选择以前保存的文件,然后成功,键入test以运行lisp例程。

Ark Angel 发表于 2022-7-5 19:32:28

它只是在文本末尾添加了“302”。i、 e.12345变为12345302,而不是12647
 
12345
+302
-------
12647

Tharwat 发表于 2022-7-5 19:36:12

 
你刚刚回答了我之前问你的问题。
 
我现在要走了,如果明天之前没有人给你一个解决方案,我会回来给你写一个新的程序。

Ark Angel 发表于 2022-7-5 19:40:45

为你的时间干杯。。。对不起,我花了这么长时间解释我需要什么。
 
拉特尔斯。

Ark Angel 发表于 2022-7-5 19:41:41

有人对这个有什么想法吗???

Tharwat 发表于 2022-7-5 19:45:04

对不起,我迟了回复,我必须先完成我的紧急工作。
 
试试这个程序,让我知道。
 

(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)

Ark Angel 发表于 2022-7-5 19:47:51

谢谢你。。。我稍后会试一试。。。被调到另一份工作。
页: 1 [2]
查看完整版本: 块属性