Lee Mac 发表于 2022-7-6 13:27:37

我甚至在帖子中加入了一个测试函数,向大家展示如何使用它

AQucsaiJr 发表于 2022-7-6 13:32:59

我一定错过了什么。所以我提供的LISP,你只需调用它,它要求替换字符串,然后用什么替换它。我不知道我在你身上哪里出了问题,但我不知道该怎么说。
 
P、 我没有编写REPSTRING LISP。这是我在论坛上发现的Lisp程序。

Lee Mac 发表于 2022-7-6 13:34:32

如果你看整个LISP,有两个函数定义。一个是子函数,另一个是测试函数。
 
在test函数中,您可以看到我如何使用两个参数(“Lee”和“Mac”)调用rstring(子函数)。
 
您可以修改测试功能以满足您的需要,即包括提示等。

AQucsaiJr 发表于 2022-7-6 13:37:47

我懂了。。。让我试试。

NBC 发表于 2022-7-6 13:41:40

要获得上面的代码,李为您创建的代码;只需更改底部“”标记内的文本。将“Lee”更改为任何您想要替换的文本,并将“Mac”更改为您想要的文本。
然后简单地加载lsp,并进行类型测试,它应该可以工作。不管怎么说,这对我来说是真的

Lee Mac 发表于 2022-7-6 13:44:19

请仔细阅读以下内容:
 
http://www.afralisp.net/lispa/lisp5.htm

Lee Mac 发表于 2022-7-6 13:46:37

下面是一些提示,只是为了消除混淆
 

(defun rstring (old new / ss sel)
(vl-load-com)
(setq old (strcase old))
(if (setq ss
       (ssget "_X"
         '((-4 . "<OR")
             (0 . "*TEXT")
               (-4 . "<AND")
               (0 . "INSERT")
               (66 . 1)
               (-4 . "AND>")
         (-4 . "OR>"))))
   (progn
   (vlax-for Obj (setq sel
                     (vla-get-ActiveSelectionSet
                     (vla-get-ActiveDocument
                         (vlax-get-acad-object))))
       (cond ((eq "AcDbBlockReference"
                (vla-get-ObjectName Obj))
            (foreach att (append
                           (vlax-invoke Obj 'GetAttributes)
                               (vlax-invoke Obj 'GetConstantAttributes))
                (if (eq old (strcase
                              (vla-get-TextString att)))
                  (vla-put-TextString att new))))
             (t (if (eq old (strcase
                              (vla-get-TextString Obj)))
                  (vla-put-TextString Obj new)))))
   (vla-delete sel))
   (princ "\n** No Text or Attributed Blocks Found **"))
(princ))

(defun c:repstring (/ old new)
(setq old (getstring t "\nOld String: ")
       new (getstring t "\nNew String: "))
(rstring old new)
(princ))

AQucsaiJr 发表于 2022-7-6 13:49:04

啊哈。。。。我误解了你的意思。我想我试着像其他Lisp程序一样使用它。我现在明白了。谢谢你的详细解释。抱歉给你带来了困惑。

AQucsaiJr 发表于 2022-7-6 13:53:46

你继续让我惊讶,李。这很好用。我为我的无知道歉。我读了这条帖子,看看我是否失去了你,似乎我忽略了一个帖子。在LISP结束时,我能够从您的测试示例中找到它,我只是在一开始对它视而不见。谢谢你对我所有问题的快速回复。干杯:)

Lee Mac 发表于 2022-7-6 13:55:16

没问题——正如我所说,关于AfraLISP的文章应该回答您需要了解的关于子功能/主功能等的所有问题。
 
页: 1 [2]
查看完整版本: 全局文本替换(REPSTRING