找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5534|回复: 64

[每日一码] VLISP目录,文件操作函数

  [复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-9-10 17:56:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

VLISP目录,文件操作函数

VLISP目录,文件操作函数


  1.   (defun GetFolder (/ Dir Item Path)
  2.     (cond
  3.       ((setq Dir (vlax-invoke
  4.                    (vlax-get-or-create-object "Shell.Application")
  5.                    'browseforfolder
  6.                    0
  7.                    "Select folder with DWG files:"
  8.                    1
  9.                    ""
  10.                  )
  11.        )
  12.        (cond
  13.          ((not
  14.             (vl-catch-all-error-p
  15.               (vl-catch-all-apply 'vlax-invoke-method (list Dir 'Items))
  16.             )
  17.           )
  18.           (setq        Item (vlax-invoke-method
  19.                        (vlax-invoke-method Dir 'Items)
  20.                        'Item
  21.                      )
  22.           )
  23.           (setq Path (vla-get-path Item))
  24.           (if
  25.             (not (member (substr Path (strlen Path) 1) (list "/" "\\")))
  26.              (setq Path (strcat Path "\\"))
  27.           )                                ;end if
  28.          )
  29.        )                                ;end cond
  30.       )
  31.     )                                        ;end cond
  32.     Path
  33.   )                                        ;end GetFolder

  34.   (defun vl-findfile (Location / DirList Path AllPath)
  35.     (MakeDirList Location)
  36.     (setq DirList (cons Location DirList))
  37.     (foreach Elem DirList
  38.       (if (setq Path (vl-directory-files Elem "*.dwg"))
  39.         (foreach Item Path
  40.           (setq AllPath (cons (strcat Elem "/" Item) AllPath))
  41.         )
  42.       )                                        ;end if
  43.     )
  44.     (reverse AllPath)
  45.   )                                        ;end vl-findfile
  46.   (defun MakeDirList (Arg / TmpList)
  47.     (setq TmpList (cddr (vl-directory-files Arg nil -1)))
  48.     (cond
  49.       (TmpList
  50.        (setq
  51.          DirList (append
  52.                    DirList
  53.                    (mapcar '(lambda (z) (strcat Arg "/" z)) TmpList)
  54.                  )
  55.        )
  56.        (foreach Item TmpList (MakeDirList (strcat Arg "/" Item)))
  57.       )
  58.     )                                        ;end cond
  59.   )                                        ;end MakeDirList



下面命令是上面几个函数的组合应用,获取一个目录下(可以包括子目录,有选项)的所有DWG文件列表并返回。

[it618postdisplay>0]
  1. (defun c:tt ()
  2.   (setq dwgpath (getfolder))
  3.   (initget "Yes No")
  4.   (setq subdir (cond
  5.                  ((getkword "\nLooking for subfolders? No,[Yes]: "))
  6.                  (t
  7.                    "Yes"
  8.                  )
  9.                )
  10.   )
  11.   (if (equal subdir "Yes")
  12.     (setq files (vl-findfile (substr dwgpath 1 (1- (strlen dwgpath)))))
  13.     (setq files (mapcar
  14.                   '(lambda (x)
  15.                      (strcat dwgpath x)
  16.                    )
  17.                   (vl-directory-files dwgpath "*.dwg" 1)
  18.                 )
  19.     )
  20.   )
  21. )


[/it618postdisplay]

("C:\\Program Files (x86)\\AutoCAD 2008\\Sample\\3D House.dwg" "C:\\Program
Files (x86)\\AutoCAD 2008\\Sample\\Architectural - Annotation Scaling and
Multileaders.dwg" "C:\\Program Files (x86)\\AutoCAD 2008\\Sample\\Blocks and
Tables - Imperial.dwg" "C:\\Program Files (x86)\\AutoCAD 2008\\Sample\\Blocks
and Tables - Metric.dwg" "C:\\Program Files (x86)\\AutoCAD
2008\\Sample\\colorwh.dwg" "C:\\Program Files (x86)\\AutoCAD
2008\\Sample\\db_samp.dwg" "C:\\Program Files (x86)\\AutoCAD
2008\\Sample\\Lineweights.dwg" "C:\\Program Files (x86)\\AutoCAD
2008\\Sample\\Plot Screening and Fill Patterns.dwg" "C:\\Program Files
(x86)\\AutoCAD 2008\\Sample\\Tablet.dwg" "C:\\Program Files (x86)\\AutoCAD
2008\\Sample\\TrueType.dwg" "C:\\Program Files (x86)\\AutoCAD
2008\\Sample\\Visualization - Aerial.dwg" "C:\\Program Files (x86)\\AutoCAD
2008\\Sample\\Visualization - Condominium with Skylight.dwg" "C:\\Program Files
(x86)\\AutoCAD 2008\\Sample\\Visualization - Conference Room.dwg" "C:\\Program
Files (x86)\\AutoCAD 2008\\Sample\\Visualization - Sun and Sky Demo.dwg")


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 5604个

财富等级: 富甲天下

发表于 2016-9-10 18:12:04 | 显示全部楼层
非常实用程序,感谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9052个

财富等级: 富甲天下

发表于 2016-9-10 18:31:38 | 显示全部楼层
感谢楼主分享,回覆学习!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2016-9-10 18:50:38 | 显示全部楼层
最近都在收代码..楼大爆发了呀...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2016-9-10 20:24:41 | 显示全部楼层
谢谢楼主,很实用的一个代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2016-9-10 21:43:22 | 显示全部楼层
感谢楼主分享,回覆学习!!!!!感谢楼主分享,回覆学习!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2016-9-10 21:44:29 | 显示全部楼层
感谢楼主分享,回覆学习!!!!!感谢楼主分享,回覆学习!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-9-10 22:40:40 | 显示全部楼层
谢谢楼主分享,学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2016-9-10 23:48:20 | 显示全部楼层

谢谢楼主分享,学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2016-9-11 10:24:02 | 显示全部楼层
很给力,谢谢楼主。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3191个

财富等级: 富可敌国

发表于 2016-9-13 16:54:17 | 显示全部楼层
好好学习天天向上,手段好丰富
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-12-29 17:10:54 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3919个

财富等级: 富可敌国

发表于 2016-12-29 19:57:16 | 显示全部楼层
回复学习学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 557个

财富等级: 财运亨通

发表于 2016-12-29 21:31:43 | 显示全部楼层
谢谢分享,学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2963个

财富等级: 家财万贯

发表于 2016-12-30 09:28:00 | 显示全部楼层
回复学习收藏谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 05:12 , Processed in 0.476687 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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