zmeng 发表于 2003-12-16 11:29:00

有没有办法用VLISP程序添加文件支持路径!!!!!!!

秋枫 发表于 2021-8-19 12:07:09

本帖最后由 秋枫 于 2021-8-19 12:08 编辑

秋枫 发表于 2003-12-16 20:08
;;;AddSupportPath
;;;添加文件夹到AutoCAD支持搜索路径中的指定位置
;;;参数


(defun strsplit (str pat / i j n lst)
    (cond
      ((/= (type str) (type pat) 'STR))
      ((= str pat) '(""))
      (T
         (setq i 0
               n (strlen pat)
         )
         (while (setq j (vl-string-search pat str i))
             (setq lst (cons (substr str (1+ i) (- j i)) lst)
                   i   (+ j n)
             )
         )
         (reverse (cons (substr str (1+ i)) lst))
      )
    )
)
(defun strjoin (Lst Delimiter / return)
    (setq return "")
    (foreach str Lst
      (setq return (strcat return Delimiter str))
    )
    (substr return 2)
)


@尘缘一生

you_boss 发表于 2021-8-30 22:47:41

秋枫 发表于 2021-8-19 12:07
@尘缘一生

大佬原谅我通过这种方式给您留言(新手权限太低)想问问您能不能发一下安装向导的脚本文件,我用inno setup 解开您发布的程序有些乱码,我的邮箱1655179357@qq.com,感谢!

尘缘一生 发表于 2020-3-20 03:23:00

秋枫 发表于 2003-12-16 20:08
;;;AddSupportPath
;;;添加文件夹到AutoCAD支持搜索路径中的指定位置
;;;参数


大师的代码,这地方显示个笑脸,是哪个变量?


BDYCAD 发表于 2003-12-16 11:37:00

可以:
如下所示:
(setenv "ACAD" (strcat"D:\\Program Files\\BDYCAD;" (getenv "ACAD")));(加在前面的)
或者(setenv "ACAD" (strcat   (getenv "ACAD")"D:\\Program Files\\BDYCAD;"));(加在后面的)



"D:\\Program Files\\BDYCAD;" =要加的支持路徑哦



不明白你為何要這樣做的原因和用處呀? 手動加不就行了嗎? 另外如果一定要程序來加應加以識別這個路徑在支持路徑中有沒有的. 不然執行一次就多加一個給你. 所以個人認為用手動加上就不煩了. 

zmeng 发表于 2003-12-16 12:46:00

谢谢,也同时谢谢你的忠告!!!

秋枫 发表于 2003-12-16 20:08:00

;;;AddSupportPath
;;;添加文件夹到AutoCAD支持搜索路径中的指定位置
;;;参数
;;;文件夹路径及插入的位置(0时插入前端)
;;;示例
;;;(addSupportPath "c:\\myFolder" 2)
;;;注意
;;;位置参数为空时将文件夹添加到路径最后。位置参数为0时将文件夹添加到路径最前端。
(defun addSupportPath (dir pos / tmp c)
(setq        tmp ""
        c   -1
)
(if (not pos)
    (setq tmp (strcat (getenv "ACAD") ";" dir))
    (mapcar '(lambda (x)
             (setq tmp (if (= (setq c (1+ c)) pos)
                           (strcat tmp ";" dir ";" x)
                           (strcat tmp ";" x)
                       )
             )
             )
          (parse (getenv "ACAD") ";")
    )
)
(setenv "ACAD" tmp)
(princ)
)


;;;removeSupportPath
;;;从AutoCAD支持搜索路径中移去指定文件夹
;;;参数
;;;所要移去的文件夹
;;;示例
;;;(removeSupportPath "c:\myFolder")
(defun removeSupportPath (dir / tmp)
(setq tmp "")
(mapcar '(lambda (x)
             (if (/= (strcase x) (strcase dir))
             (setq tmp (strcat tmp x ";"))
             )
           )
          (parse (getenv "ACAD"))
)
(setenv "ACAD" (substr tmp 1 (1- (strlen tmp))))
(princ)
)

;;;resetPath
;;;恢复AutoCAD的支持搜索路径为其默认路径
(defun resetPath ()
(setenv "ACAD" "")
(mapcar '(lambda (x)
             (if (wcmatch (strcase x t) "*autodesk shared*")
             (addSupportPath x 0)
             )
           )
          (parse (getenv "PATH") ";")
)
(princ)
)

(defun Parse        (Str Delimiter / SearchStr StringLen return n char)
        (setq SearchStr Str)
        (setq StringLen (strlen SearchStr))
        (setq return '())


        (while (> StringLen 0)
                (setq n 1)
                (setq char (substr SearchStr 1 1))
                (while (and (/= char Delimiter) (/= char ""))
                        (setq n (1+ n))
                        (setq char (substr SearchStr n 1))
                ) ;_ end of while
                (setq return (cons (substr SearchStr 1 (1- n)) return))
                (setq SearchStr (substr SearchStr (1+ n) StringLen))
                (setq StringLen (strlen SearchStr))
        ) ;_ end of while
        (reverse return)
) ;_ end of defun

BDYCAD 发表于 2003-12-16 20:57:00

想不到秋楓還做得這麼先進, 真值得學習. 好!

龙龙仔 发表于 2003-12-18 07:56:00

BDYCAD:
這3個函數
ADDSUPPORTPATH
REMOVESUPPORTPATH
RESETPATH
是出自ACADX網站,當你在網上再久一點,你會知道很多程序的出處!
會發現那些是新技巧或老經驗!

BDYCAD 发表于 2003-12-18 13:54:00

龍龍仔再次向你代表我深深的謝意: )

xujinhua 发表于 2012-5-2 21:19:24

学到东西了..谢谢

ebigsong 发表于 2012-5-2 22:50:35

高手汇集了

︶ㄣ与狼共舞 发表于 2013-12-11 14:45:11

秋枫 发表于 2003-12-16 20:08 static/image/common/back.gif
;;;AddSupportPath
;;;添加文件夹到AutoCAD支持搜索路径中的指定位置
;;;参数


学习永无止境!
页: [1] 2
查看完整版本: 有没有办法用VLISP程序添加文件支持路径!!!!!!!