P、 我没有编写REPSTRING LISP。这是我在论坛上发现的Lisp程序。 如果你看整个LISP,有两个函数定义。一个是子函数,另一个是测试函数。
在test函数中,您可以看到我如何使用两个参数(“Lee”和“Mac”)调用rstring(子函数)。
您可以修改测试功能以满足您的需要,即包括提示等。 我懂了。。。让我试试。 要获得上面的代码,李为您创建的代码;只需更改底部“”标记内的文本。将“Lee”更改为任何您想要替换的文本,并将“Mac”更改为您想要的文本。
然后简单地加载lsp,并进行类型测试,它应该可以工作。不管怎么说,这对我来说是真的 请仔细阅读以下内容:
http://www.afralisp.net/lispa/lisp5.htm 下面是一些提示,只是为了消除混淆
(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))
啊哈。。。。我误解了你的意思。我想我试着像其他Lisp程序一样使用它。我现在明白了。谢谢你的详细解释。抱歉给你带来了困惑。 你继续让我惊讶,李。这很好用。我为我的无知道歉。我读了这条帖子,看看我是否失去了你,似乎我忽略了一个帖子。在LISP结束时,我能够从您的测试示例中找到它,我只是在一开始对它视而不见。谢谢你对我所有问题的快速回复。干杯:) 没问题——正如我所说,关于AfraLISP的文章应该回答您需要了解的关于子功能/主功能等的所有问题。
李
页:
1
[2]