很高兴我找到了这个论坛! 非常欢迎你们,我希望我激发了你们对LISP的兴趣 你真的有。事实上,我将看看是否可以修改您的代码以删除其中的一个输入选项。我们总是需要更改一个特定的标签,所以我想我可以去掉这个提示。 祝你好运如果你需要帮助,就喊出来 好的,李:这个Lisp程序的编辑有问题。我似乎做得不对。我试图更新上面的LISP,使其始终更改名为LINE#的属性,并使数字长度的默认值为3。但我似乎总是把事情搞砸。(幸运的是,我足够聪明,可以保留一份我一直要回去的原件。)有什么提示吗? 试试教程。。我知道他们帮了我。。在学习过程中,您可能需要重读几次(我重读了大约20次我发出的4行命令)
这些是李·麦克推荐我去看AfraLISP或JeffreySanders的教程 只需删除这些参数的提示即可:
(defun c:AttNum ( / *error* _StartUndo _EndUndo _PadLeft doc ss lst len ) (vl-load-com)
;; © Lee Mac 2010
(defun *error* ( msg )
(if doc (_EndUndo doc))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **")))
(princ)
)
(defun _StartUndo ( doc ) (_EndUndo doc)
(vla-StartUndoMark doc)
)
(defun _EndUndo ( doc )
(if (= 8 (logand 8 (getvar 'UNDOCTL)))
(vla-EndUndoMark doc)
)
)
(defun _PadLeft ( str cha len )
(if (< (strlen str) len)
(_PadLeft (strcat cha str) cha len)
str
)
)
(setq doc(vla-get-ActiveDocument (vlax-get-acad-object)))
(setq *tag "LINE#" len 3)
(setq *pre (getstring t "\nSpecify Prefix <None> : "))
(setq *num
(1-
(cond
(
(getint
(strcat "\nSpecify Starting Number <"
(itoa
(setq *num
(1+
(cond ( *num ) ( 0 ))
)
)
)
"> : "
)
)
)
( *num )
)
)
)
(if (ssget "_:L" '((0 . "INSERT") (66 . 1)))
(progn
(vlax-for o (setq ss (vla-get-ActiveSelectionSet doc))
(setq lst
(cons
(cons (vlax-get o 'InsertionPoint) o) lst
)
)
)
(vla-delete ss)
(_StartUndo doc)
(mapcar
(function
(lambda ( block )
(mapcar
(function
(lambda ( attrib )
(if (eq *tag (strcase (vla-get-TagString attrib)))
(vla-put-TextString attrib
(strcat *pre
(_PadLeft (itoa (setq *num (1+ *num))) "0" (cond ( len ) ( 0 )))
)
)
)
)
)
(vlax-invoke (cdr block) 'GetAttributes)
)
)
)
(vl-sort lst
(function
(lambda ( a b ) (< (caar a) (caar b)))
)
)
)
(_EndUndo doc)
)
)
(princ)
)
但未经测试。 好的,我这么做是希望有人能进一步帮助我。
我需要修改Lisp程序,就像LeeMac在这个线程中提供的那样。我只需要删除一些用户输入,并将其默认为我指定的属性。但是我能找到的关于如何学习LISP的唯一方法是关于AutoLisp的。有什么东西不需要我花18年的时间去学习吗? 试试AFRALISP。
这完全取决于你,学生眨眼:
页:
1
[2]