shakuhachi 发表于 2022-7-6 09:35:32

在文件上搜索字符串

我到处都在搜索,但找不到lisp例程,所以我不妨问问。
 
假设我有一个名为“Mech-Poject1”、“Project1 Mech Job#”和“Job#-Mech”的文件。我们没有一个命名文件的标准,所以我很难去掉文件名并在上面寻找“MECH”这个词。
 
使用lisp例程,我如何知道当前图形的文件名上是否有单词“MECH”。如果我在其中一个图形中,我计划修改我的“qsave and save”命令以执行额外的命令/lisp例程。
 
更清楚地说,如果我在使用文件名上的字符串“MECH”绘制机械图形,它将运行一个例程,在超级种子文件夹上创建一个备份文件,上面有日期,然后执行保存命令。如果我打开一个名为“Elec Project”的图形并点击save。因为文件名上没有字符串“mech”,所以它只会保存图形。
 
非常感谢您的帮助。

LibertyOne 发表于 2022-7-6 09:45:37

您必须调用系统变量DWGNAME
(getvar“DWGNAME”)
结果是一个字符串,然后必须使用字符串“mech”进行过滤

shakuhachi 发表于 2022-7-6 09:57:02

我知道如何使用dwgname或vl filename base获取文件名。我只是不知道如何检查文件名上是否有字符串“mech”,因为它可以在文件名的第一个、中间或最后一个字符串中。我不知道如何启动我的代码。如果它只是文件名上的前4个字符串或最后4个字符串,我只能搜索整个文件名,但我做不到。

BlackBox 发表于 2022-7-6 10:12:13

请尝试以下操作,而不是使用substr:
 

(vl-load-com)
(vl-string-search "MECH" (strcase (getvar 'dwgname)))

 
这将找到字符串,无论位置如何(即开始、中间、结束等)。
 
希望这有帮助!

shakuhachi 发表于 2022-7-6 10:17:02

谢谢LibertyOne和RenderMan。这就是我一直在寻找的。一直在考虑一个复杂的代码,但一个简单的vlisp函数做得很好。我现在可以睡个好觉了。
 

BlackBox 发表于 2022-7-6 10:27:51

有时我们忽略了一些小事。。。很乐意帮忙。

alanjt 发表于 2022-7-6 10:40:51

您也可以使用wcmatch
如。
(wcmatch (strcase (getvar 'dwgname) "*MECH*")
页: [1]
查看完整版本: 在文件上搜索字符串