明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: liminnet

龙龙仔大哥,为什么我得到一个表啦,却不能循环呀?

  [复制链接]
发表于 2008-9-10 08:07:00 | 显示全部楼层
liminnet发表于2008-9-8 11:45:00(defun recdir (d)  (setq lst nil)  (mapcar '(lambda (x)      (if (= (vl-filename-extension x) \".lsp\")      &nbsp
  1. (defun C:TT_LAI (/ LST)
  2.   (RECDIR "G:\")
  3.   ;;(RECDIR "c:\\Program Files\\AutoCAD 2008\")
  4. )
  5. (defun RECDIR (D / X)
  6.   (mapcar '(lambda (X)
  7.       (if (wcmatch (strcase X) "*.LSP")
  8.         (setq LST (cons (strcat D X) LST))
  9.       )
  10.       (if (and (vl-file-directory-p (strcat D X))
  11.         (/= X ".")
  12.         (/= X "..")
  13.    )
  14.         (RECDIR (strcat D X "\"))
  15.       )
  16.     )
  17.    (vl-directory-files D)
  18.   )
  19.   LST
  20. )
 楼主| 发表于 2008-9-10 09:11:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-9-10 09:30:00 | 显示全部楼层
(defun caoyin->regdir (d / lst lst_data x tt)
  (setvar "cmdecho" 0)
  (if (not (member (substr d (strlen d)) '("\\" "/")))
      (setq d (strcat d "\\"))
  )
  (foreach x (vl-directory-files d)
      (if (and (setq tt (vl-filename-extension x))
               (member (strcase tt) (list ".LSP" ".VLX" ".FAS"))
          )
          (setq lst (cons (strcat d x) lst))
      )
  )
  (foreach lst_data lst (load lst_data))
  (setvar "cmdecho" 1)
  lst
)
 楼主| 发表于 2008-9-10 09:41:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-9-10 12:32:00 | 显示全部楼层

(defun C:TT_LAI (/ LST )
   (setq aa (RECDIR "c:\\Program Files\\AutoCAD 2008\\"))
   ;;(RECDIR "c:\\Program Files\\AutoCAD 2008\\")
)

发表于 2008-9-10 13:12:00 | 显示全部楼层
(defun C:TT_LAI (/ LST aa)
   (setq aa (RECDIR "c:\\Program Files\\AutoCAD 2008\\"))
   ;;(RECDIR "c:\\Program Files\\AutoCAD 2008\\")
)
括号里的变量是受保护的,运行完会变回原值。
 楼主| 发表于 2008-9-10 13:42:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2008-9-10 13:50:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-9-10 15:39:00 | 显示全部楼层
(defun RECDIR (d / lst lst_data x tt)
  (setvar "cmdecho" 0)
  (if (not (member (substr d (strlen d)) '("\\" "/")))
      (setq d (strcat d "\\"))
  )
  (foreach x (vl-directory-files d)
      (if (and (setq tt (vl-filename-extension x))
               (member (strcase tt) (list ".LSP" ".VLX" ".FAS"))
          )
          (setq lst (cons (strcat d x) lst))
      )
  )
  (foreach lst_data lst (load lst_data))
  (setvar "cmdecho" 1)
  lst
)

(defun c:tt_lai (/ )
   (setq aa (recdir "c:\\program files\\autocad 2008\\support\\"))
)
试过了,可以的。
估计是你那个目录下本来就没有lsp.xlx.fas文件,所以没有值。帮你换了个文件夹。
发表于 2008-9-10 17:36:00 | 显示全部楼层
liminnet发表于2008-9-10 13:42:00龙大哥,各位大哥,在(defun RECDIR (D / X)主程序中最后加那天个LST是什么意义呀,不加有什么 不同,我不是很明白它的作用

加了之后程序内的 LST 和全局变量 LST (假如有) 相互不相关,例:

(setq a 1)

(defun test1 (/ a) (if (not a) (setq a 0)(setq a (1+ a))))

(test1)-----> 0

!a----------->1

-------------------------------------------------------------------------------------------

(setq a 1)

(defun test2 () (if (not a) (setq a 0)(setq a (1+ a))))

(test2)-----> 2

!a----------->2

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

本版积分规则

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

GMT+8, 2025-6-18 19:25 , Processed in 0.158437 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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