找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 784|回复: 8

[LISP函数]:选择目录函数

[复制链接]
发表于 2004-8-4 10:34:41 | 显示全部楼层 |阅读模式

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

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

×

  1. (defun Sel-dir (/            action-list2file            list-drives
  2.                 update-dia  step1back        DATA            DCL
  3.                 DDIA1            DPATHDIR        DPLC            DSUB
  4.                 FLAG1            LISTVL        RSLT
  5.                )
  6.   (defun action-list2file (data filex / ff xx)
  7.     (if        (setq ff (open filex "w"))
  8.       (progn
  9.         (foreach xx data (write-line xx ff))
  10.         (setq ff (close ff))
  11.         (while (null (findfile filex)))
  12.       )
  13.     )
  14.     (findfile filex)
  15.   )
  16.   (defun list-drives (/ c i)
  17.     (setq i 66)
  18.     (repeat 24
  19.       (setq c (chr (setq i (1+ i))))
  20.       (if (findfile (strcat c ":\\."))
  21.         (setq rslt (cons (strcat c ":") rslt))
  22.       )
  23.     )
  24.     (setq rslt (reverse rslt))
  25.   )
  26.   (defun update-dia (/ flag1)
  27.     (setq dplc (atoi $value))
  28.     (if        (not dsub)
  29.       (setq listvl (strcat (nth dplc rslt) "\"))
  30.       (setq listvl (strcat (nth dplc dsub) "\"))
  31.     )
  32.     (if        (= listvl "..\")
  33.       (step1back)
  34.       (if dpathdir
  35.         (setq dpathdir (strcat dpathdir listvl))
  36.         (setq dpathdir listvl)
  37.       )
  38.     )
  39.     (if        (/= flag1 "no")
  40.       (progn
  41.         (setq dsub (vl-directory-files dpathdir nil -1))
  42.         (if (= dsub nil)
  43.           (setq dsub (list ".."))
  44.           (if (not (member ".." dsub))
  45.             (setq dsub (reverse (append (reverse dsub) (list ".."))))
  46.           )
  47.         )
  48.         (setq dsub (vl-remove "." dsub))
  49.         (start_list "lbox1" 3)
  50.         (mapcar 'add_list dsub)
  51.         (end_list)
  52.         (set_tile "error" dpathdir)
  53.       )
  54.       (progn
  55.         (start_list "lbox1" 3)
  56.         (mapcar 'add_list rslt)
  57.         (end_list)
  58.         (setq dpathdir nil)
  59.         (setq dsub nil)
  60.         (set_tile "error" "")
  61.       )
  62.     )
  63.   )
  64.   (defun step1back (/ cnt1)
  65.     (setq cnt1 (1- (strlen dpathdir)))
  66.     (while (and (/= (substr dpathdir cnt1 1) "\") (> cnt1 1))
  67.       (setq dpathdir (substr dpathdir 1 (1- cnt1))
  68.             cnt1     (1- cnt1)
  69.       )
  70.     )
  71.     (if        (<= cnt1 1)
  72.       (setq flag1 "no")
  73.     )
  74.   )

  75.   (setq        data (list
  76.                "dcl_settings : default_dcl_settings { audit_level=0;}"
  77.                "SelDir:dialog {label=\042Select Directory\042;"        ":row {"
  78.                ":list_box {key=\042lbox1\042; width=45; height=15; multiple_select=true;fixed_width_font=true;}}"
  79.                "errtile;ok_cancel;}")
  80.         dcl  (strcat (vl-filename-directory (findfile "acad.exe"))
  81.                      "\\sel-dir.DCL"
  82.              )
  83.   )
  84.   (if (and (setq dcl (action-list2file data dcl))
  85.            (setq ddia1 (load_dialog dcl))
  86.            (new_dialog "SelDir" ddia1)
  87.       )
  88.     (progn
  89.       (list-drives)
  90.       (mode_tile "d-save" 1)
  91.       (mode_tile "lbox1" 2)
  92.       (start_list "lbox1" 3)
  93.       (mapcar 'add_list rslt)
  94.       (end_list)
  95.       (action_tile "lbox1" "(if (= $reason 4) (UPDATE-DIA))")
  96.       (action_tile "accept" "(done_dialog 1)")
  97.       (action_tile "cancel" "(progn(setq dpathdir nil)(done_dialog 0))")
  98.       (start_dialog)
  99.       (unload_dialog ddia1)
  100.       (vl-file-delete dcl)
  101.     )
  102.   )
  103.   dpathdir
  104. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-4 13:25:08 | 显示全部楼层
(sel-dir) 返回 nil?应该至少有个返回值吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-8-5 05:04:37 | 显示全部楼层
是呀,C,D..盘都没有了. 能详细说说程序的功能吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-5 08:34:24 | 显示全部楼层
收藏----选择檔案函数(作者:忘了記錄..)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-5 08:38:00 | 显示全部楼层
附圖:
可是程序沒有選擇磁碟機功能!
當然你可以自己加上去!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 221个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 08:26 , Processed in 0.390658 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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