乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 84|回复: 5

非递归返回指定目录下所有子目录

[复制链接]

61

主题

718

帖子

13

银币

中流砥柱

Rank: 25

铜币
960
发表于 2022-5-12 17:38:00 | 显示全部楼层 |阅读模式
  1. (defun xdirectory(folder);;;好象不含隐藏目录
  2.   (setq folder(list(list folder)))
  3.   (while(car(setq folder(cons(apply'append(mapcar'(lambda(x)(mapcar'(lambda(y)(strcat x"\"y))(cddr(vl-directory-files X nil -1))))
  4.              (car folder)))folder))))(apply'append folder))
  5. (defun SubFolers(folder / folders *Fso fold xx);;;包含隐藏目录
  6.   (defun xx(/ lst)
  7.     (vlax-for x(vlax-get-property(vlax-invoke-method *fso 'getfolder fold)'SubFolders)
  8.       (setq lst(cons(vlax-get-property x 'path)lst)))
  9.     (reverse lst))
  10.   (if(VL-FILE-DIRECTORY-P folder)
  11.     (progn
  12.       (setq *Fso(vlax-get-or-create-object"Scripting.FileSystemObject")
  13.             folders(list(vlax-get-property(vlax-invoke-method *fso 'getfolder folder)'path))i 0)
  14.       (while(setq fold(nth i folders))
  15.         (setq folders(append folders(append(xx)))i(1+ i)))
  16.       (vlax-release-object *Fso)
  17.       folders)))
回复

使用道具 举报

15

主题

227

帖子

20

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
276
发表于 2022-5-14 23:05:00 | 显示全部楼层
感谢大佬的共享!
回复

使用道具 举报

2

主题

10

帖子

5

银币

初来乍到

Rank: 1

铜币
17
发表于 2022-5-19 08:44:00 | 显示全部楼层
多谢73大佬,这个功能很实用
回复

使用道具 举报

0

主题

15

帖子

5

银币

初来乍到

Rank: 1

铜币
14
发表于 2022-5-19 09:15:00 | 显示全部楼层
感谢大佬的共享!
回复

使用道具 举报

0

主题

60

帖子

766

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2022-7-5 22:34:00 | 显示全部楼层

前辈,帮忙看一下,我拼凑的这个,拖拽获取当前lsp文件所在目录并添加到CAD搜索路径,在CAD2010上完美运行,但是CAD2006上就会出问题;
;CAD2006下路径较深就会多出来一个双引号
输出结果:"D:\Downloads\【办公软件】\AutoCAD
(vl-load-com)
(while (= (logand (getvar "CmdActive") 1) 1)(command)) ;结束已有命令
(princ "\n")
(setq path (getvar "lastprompt"))
(if (wcmatch (strcase path) "*(LOAD \"*")
  (setq str (vl-string-search "(LOAD \"" path)
         path (substr path
                     (+ str 8)
                     (- (vl-string-search "\")" path) str 7) ;为lastprompt提取的命令去头去尾
                )
  )
)
(setq path (vl-filename-directory (vl-string-translate "/" "\\" path))) ;转换路径,去掉文件名及扩展名,提纯路径
(setenv "ACAD" (strcat (getenv "ACAD") ";" (vl-string-right-trim "\"" path))) ;删除多余的双引号后插入搜索目录末尾,06上未生效
(princ)
因工作需要,需要大量使用CAD2006,麻烦帮忙看一下该怎么调整?
回复

使用道具 举报

0

主题

60

帖子

766

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2022-7-5 22:36:00 | 显示全部楼层
还有这种方式,也是CAD2010正常,CAD2006路径较深就会提示  ; 错误: 参数类型错误: (or stringp symbolp): nil
;;添加到搜索目录,支持appload加载、命令行(load "xx")加载和直接拖拽加载
;;CAD2010正常,CAD2006没反应
(vl-load-com)
(defun set_path (/ str str1 str2 str3 n1 n2)
(while (= (logand (getvar "CmdActive") 1) 1)(command)) ;结束已有命令
(princ "\n")
      (setq str (getvar "lastprompt"))               ;lastprompt方式,获得最后一行命令,例如:(LOAD "D:/Downloads/添加路径.lsp")
        (if (wcmatch (strcase str) "*(LOAD \"*")
        (setq
        n1 (vl-string-search "(LOAD \"" str)   
        str1 (substr str (+ n1 8))                 
        n2 (vl-string-search "\")" str1)         
        str2 (substr str1 1 (1+ n2))              
        str3 (vl-filename-directory (vl-string-translate "/" "\\" str2))
        )
       )
(setenv "ACAD" (strcat (getenv "ACAD") ";" (vl-string-right-trim "\"" str3)))
)
(set_path)
(setq set_path "文件路径已添加到搜索目录!")
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-18 12:20 , Processed in 0.449561 second(s), 65 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表