monk 发表于 2022-7-6 08:13:44

将VAR插入路径

快一点。。。
 
是否可以将存储的VAR粘贴到路径中?即
 
I存储
 
(setq usr(getvar“LOGINNAME”))
 
稍后,我想将日志文件写入路径:
 
(setq f(“C:\\%usr%.txt”))
 
或者像这样的。。。

Tharwat 发表于 2022-7-6 08:23:41

我认为strcat函数可以帮你解决这个问题。
 
例如。

(setq usr (getvar 'loginname))
(setq f (strcat "C:\\" usr ........ and so on

monk 发表于 2022-7-6 08:26:16

谢谢,我刚刚读了一些其他的例子,“strcat”跳了出来。
 
(只是写我的第一行代码……哎呀!)

Tharwat 发表于 2022-7-6 08:28:57

很高兴听到这个消息,如果你需要帮助,就闭嘴。

monk 发表于 2022-7-6 08:34:36

只是看看如何删除“.”(句号)来自用户名。我正在将一些文本输出到给定位置的文本文件,但文本文件名基于登录名。但是我不想要“monk.monk.txt”!
感谢指点。当我有它的工作,我会张贴起来!

monk 发表于 2022-7-6 08:40:21

工作至今!很可能会将其作为某个子程序。
 
(defun C:saveSupportPaths (/ usr files paths f)
(vl-load-com)
(setq files (vla-get-files (vla-get-preferences (vlax-get-acad-object))))
(setq paths (vla-get-supportpath files))
(setq f (open (strcat "C:\\Users\\monk.monk\\Desktop\\"(getvar "LOGINNAME")".txt")"w"))
(write-line paths f)
(close f)
(princ)
)

Lee Mac 发表于 2022-7-6 08:48:01

有很多方法可以实现这一点,这里只有一个:
 
这里是另一个:
 
(vl-string-translate "." " " (getvar 'LOGINNAME))

monk 发表于 2022-7-6 08:50:08

谢谢李。(我现在经常使用你的网站!)
 
按照你的建议,我要一个肉店。我对上面代码的唯一想法是,如果路径不存在或不可用,会发生什么?程序是挂起还是停止?我需要添加错误部分吗?

Lee Mac 发表于 2022-7-6 08:55:19

 
如果路径:
 
"C:\\Users\\monk.monk\\Desktop"不存在,当试图在不存在的路径上创建文本文件时,open函数将返回nil。
 
现在,由于变量“f”为nil,write line传递了一个null文件描述符参数,因此会将字符串写入命令行,而不是文件(因为文件描述符参数是可选的)。
 
但是,当传递空文件描述符时,关闭函数将出错:
 
为了避免这些错误,包括一个简单的条件语句:
 
当然,这不包括从文件路径字符串中删除无效字符的代码。

monk 发表于 2022-7-6 09:02:59

那位先生很完美。
 
我正在尽可能多地阅读。我正在使用你的网站,afralisp,visual lisp开发者圣经。你能想到其他资源吗?硬拷贝很好。我想要一个所有功能的参考/字典等,但那将是巨大的!
页: [1] 2
查看完整版本: 将VAR插入路径