MarcoW 发表于 2022-7-6 12:08:51

Alanjt,
 
代码确实有效,它添加了一个支持文件搜索路径!谢谢你的意见,我可能会对这些问题稍微推敲一下”thingies。
 
如果你明白我的意思的话,没有一些代码可以阻止双路径。我试了两次,在选项对话框中得到了两次路径“C:\temp”。
 
尽管我不知道如何开始,但现在让我试着弄清楚,因为我一直都是一个全职的初学者,哈哈。
 
好的,但首先我把代码去掉了,所以我只需要剩下(想象一下我在这么大的例程中被搞糊涂了LOL)

(defun c:CES-Setup (/ #Files #Layout #Flag)
(vl-load-com)
(and
   (not
   (vl-catch-all-error-p
       (vl-catch-all-apply
         '(lambda ()
            (setq #Files(vla-get-files
                            (vla-get-preferences (vlax-get-acad-object))
                        ) ;_ vla-get-files
                  #Layout (vla-get-activelayout
                            (vla-get-activedocument (vlax-get-acad-object))
                        ) ;_ vla-get-activelayout
            ) ;_ setq
            (mapcar 'vl-mkdir (list "c:\\TEMP" "c:\\TEMP\\ACAD"))
            (vla-put-autosavepath #Files "c:\\TEMP\\ACAD")
            (vla-put-supportpath
            #Files
            (strcat ";c:\\temp"
                      ";"
                      (vla-get-supportpath #Files)
            ) ;_ strcat
            ) ;_ vla-put-supportpath
          ) ;_ lambda
       ) ;_ vl-catch-all-apply
   ) ;_ vl-catch-all-error-p
   ) ;_ not
   (alert
   (strcat
       "AutoCAD has been setup for Capital Engineering & Surveying, Inc. Standards.\n\n"
       "                      Please restart AutoCAD."
   ) ;_ strcat
   ) ;_ alert
) ;_ and
(princ)
) ;_ defun
(alert "Type: \"CES-SETUP\" to run setup.")
(princ)

 
(你知道,我现在认识的蓝色部分…)
 
不知何故,我需要toch检查当前的支持文件搜索文件夹是否与新文件夹匹配。如果他们匹配,就跳过那个。。。。
 
不,真的,我不知道。你能帮助我吗?

alanjt 发表于 2022-7-6 12:12:08

 
是的,我从不费心检查重复项(没有意义),因为它只在新安装时运行一次。
 
我建议使用wcmatch来查看现有支持路径中是否已经存在字符串。如果返回true,则不执行任何操作,如果为nil,则添加到支持路径。
 
我知道你说你认识蓝色部分,但只是为了澄清,它只是在c:\驱动器上创建“c:\\temp\\acad”目录。
 
顺便说一句,你可能想删除所有我公司特定的提示/标签。英雄联盟

MarcoW 发表于 2022-7-6 12:17:17

是的,我知道,但我只知道一小会儿:眨眼:
 
我以为你喜欢。。。不,我忘了。。。。
 
 
你说“如果字符串allready存在”。。。因此,使用wcmatch,我应该能够看到字符串“c:\temp”在路径中是否就绪。
但接下来的问题是如何做到这一点。我的意思是,首先我需要在一个列表中获取所有supportfile路径,对吗?

alanjt 发表于 2022-7-6 12:21:51

如。
(setq ExistingPaths ";c:\\folder1;c:\\folder2;c:\\folder3")

(setq NewPaths (list "c:\\folder3" "c:\\folder4" "c:\\folder5"))

(setq string "")

(foreach x NewPaths
(or (wcmatch ExistingPaths (strcat "*" x "*"))
   (setq string (strcat string ";" x))))

(vla-put-supportpath ...
页: 1 [2]
查看完整版本: 这个“Afrali”需要帮助