https://stackoverflow.com/a/9495670/12407473
从上面的问题中,当我尝试使用代码时,我得到了
“错误:没有函数定义:STR”。
谁能告诉我为什么它对我不起作用?谢谢!
(with-open-file (str "/.../filename.txt"
:direction :output
:if-exists :supersede
:if-does-not-exist :create)
(format str "write anything ~%"))
答案 0 :(得分:0)
正如其他人在评论中所指出的那样,您使用的示例代码是Common LISP,而不是AutoLISP(AutoCAD使用的LISP的方言)。因此,在AutoLISP语言中未定义诸如str
,with-open-file
和format
之类的功能。
在AutoLISP中,一般方法如下:
(if (setq des (open "C:\\YourFolder\\YourFile.txt" "w"))
(progn
(write-line "Your text string" des)
(close des)
)
)
评论,即:
;; If the following expression returns a non-nil value
(if
;; Assign the result of the following expression to the symbol 'des'
(setq des
;; Attempt to acquire a file descriptor for a file with the supplied
;; filepath. The open mode argument of "w" will automatically create
;; a new file if it doesn't exist, and will replace an existing file
;; if it does exist. If a file cannot be created or opened for writing,
;; open will return nil.
(open "C:\\YourFolder\\YourFile.txt" "w")
) ;; end setq
;; Here, 'progn' merely evaluates the following set of expressions and
;; returns the result of the last evaluated expression. This enables
;; us to pass a set of expressions as a single 'then' argument to the
;; if function.
(progn
;; Write the string "Your text string" to the file
;; The write-line function will automatically append a new-line
;; to the end of the string.
(write-line "Your text string" des)
;; Close the file descriptor
(close des)
) ;; end progn
;; Else the file could not be opened for writing
) ;; end if