waders 发表于 2022-7-5 22:22:05

wcmatch区分大小写

嘿,有一个常规,我有问题修改。我需要它不区分大小写,从xx01ls重命名外部参照。图纸至LS。原因是偶尔有人会将外部参照命名为XX01LS。dwg和代码正在查找XX01ls。图纸。请参阅下面的代码。谢谢
 

(defun c:refls (/ ref refnamepath Oldname)
(COMMAND "CLAYER" "XREF-LS")
(setq ref (CAR (vl-directory-files dir "*ls.dwg")))
(if (/= ref nil)
   (progn
   (setq refnamepath (strcat dir "\\" ref))
   (COMMAND "-XREF" "Overlay" refnamepath "0,0" "1" "1" "0")
   (vl-load-com)
   (vlax-for blk (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(if
(and
    (equal (vla-get-IsXref blk) :vlax-true)
    (wcmatch (setq OldName (vla-get-Name blk)) "*LS")
    )
(vla-put-Name blk "LS"))
)
   )
   )
)

BlackBox 发表于 2022-7-5 22:39:11

在获取blk变量的Name属性时,请考虑STRCASE函数。

waders 发表于 2022-7-5 22:39:29

好的,但我应该把它放在哪里?我知道用setq放在哪里,但我以前从未用过wcmatch。

7o7 发表于 2022-7-5 22:50:00

你可以这样放置strcase。

(wcmatch (setq OldName (strcase (vla-get-Name blk))) "*LS")

BlackBox 发表于 2022-7-5 22:59:46

 
OldName变量的用途是什么?

7o7 发表于 2022-7-5 23:09:22

 
我不知道,也许作者想为下一个函数保存旧名称,就像“dir”变量来自哪里一样,可能来自前一个函数。我只是展示了strcase func放在哪里。

waders 发表于 2022-7-5 23:20:47

谢谢7o7,这似乎可以做到。
 
我不确定为什么我需要OldName变量,因为我没有在07年编写这部分代码,但我需要更新它。无论如何,我认为原因是它需要做一些事情来重命名外部参照。在are项目中,我们使用它来帮助管理层。是的,“dir”变量位于代码的前端。如果你愿意的话,我可以发布整个代码。但除了这次更新。我正在为此添加更多内容。
 
再次感谢您的关注和帮助。

7o7 发表于 2022-7-5 23:24:18

欢迎您的帮助,很高兴!
页: [1]
查看完整版本: wcmatch区分大小写