明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1789|回复: 4

[提问] 将指定路径下的所有目录添加到搜索路径

[复制链接]
发表于 2016-3-20 14:58:29 | 显示全部楼层 |阅读模式
麻烦帮忙看一下这个程序有什么问题,功能是将指定路径下的所有目录添加到搜索路径,参考了这个http://bbs.mjtd.com/thread-108706-1-1.html
(defun addsearchs(folderlst);;将folderlst里边的全路径目录添加到cad搜索支持
  (setenv"ACAD"(strcat(getenv "ACAD")(apply'strcat(mapcar'(lambda(x)(strcat";"x))folderlst))))
  )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 用法:(qf_getFolder msg)
;; 例子:(qf_getFolder "选择文件夹:")
;; 返回值:字符串,文件夹路径,如果点了cancel, 返回nil
(defun qf_getFolder (msg / WinShell shFolder path catchit)
(vl-load-com)
(setq winshell (vlax-create-object "Shell.Application"))
(setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
(setq
catchit (vl-catch-all-apply
'(lambda ()
(setq shFolder (vlax-get-property shFolder 'self))
(setq path (vlax-get-property shFolder 'path))
)
)
)
(if (vl-catch-all-error-p catchit)
nil
path
)
)

;;主程序
(defun c:tt()
(setq fold (qf_getFolder "选择文件所在目录:"))
(if fold
(progn
(setq file_list (GetFileList fold))
(if file_list

(addsearchs file_list)
)
)
)
(princ)
)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-3-20 15:47:55 | 显示全部楼层
GETFILELIST是什么函数??
发表于 2016-3-20 16:11:54 | 显示全部楼层
;; 未经测试,慎用!
  1. ;; 将folderlst里边的全路径目录添加到cad搜索支持
  2. (defun addsearchs (folderlst)
  3.   (setenv "ACAD"
  4.           (strcat (getenv "ACAD")
  5.                   (apply 'strcat
  6.                          (mapcar '(lambda (x) (strcat ";" x)) folderlst)
  7.                   )
  8.           )
  9.   )
  10. )

  11. ;; PathAll 指定目录下的所有子目录 (PathAll path)
  12. (defun PathAll (PathName / lst1 lst2 pa a pa1 b)
  13.   (setq lst1 (list PathName)
  14.         lst2 lst1
  15.   )
  16.   (while (setq pa (car lst1))
  17.     (setq lst1 (cdr lst1))
  18.     (foreach a (setq lst (cddr (vl-directory-files pa nil -1)))
  19.       (setq pa1 (strcat pa "/" a))
  20.       (if (setq b (cddr (vl-directory-files pa1 nil -1)))
  21.         (setq b (mapcar '(lambda (x) (strcat pa1 "/" x)) b)
  22.               lst2 (append b lst2)
  23.               lst1 (append b lst1)
  24.         )
  25.       )
  26.     )
  27.   )
  28.   (reverse lst2)
  29. )

  30. ;;主程序
  31. (defun c:tt ()
  32.   (if (setq lst (PathAll "d:\\xcad"))
  33.     (addsearchs lst)
  34.   )
  35.   (princ)
  36. )
发表于 2016-3-21 22:31:58 来自手机 | 显示全部楼层
院长真是乐于助人,致敬!来自: Android客户端
发表于 2016-3-22 14:06:54 | 显示全部楼层
目测比院长的代码慢十倍
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-27 09:28 , Processed in 0.183053 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表