明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1790|回复: 3

[求助]返回当前路径并添加到CAD支持目录,退出时又怎样删除这个目录呢?

[复制链接]
发表于 2008-4-7 20:25 | 显示全部楼层 |阅读模式
  1. (defun getpath (/ nowdwg path1)
  2.   (setq nowdwg (getvar "dwgname"))
  3.   (setq path1 (findfile nowdwg))
  4.   (setq path1 (substr path1 1 (- (strlen path1) (strlen nowdwg))))
  5.   path1
  6. )
  7. ;上面这段代码可以得到当前图形的路径。怎样将其添加到CAD的支持路径呢?
  8. ;又看到MJTD上下面的这段代码,但感觉会有\\与\的问题,没有详细试验。
  9. ;
  10. ;
  11. (defun c:test041 (/ a pa lst ls1 path)
  12.   (setq a    (getenv "ACAD")
  13. pa   (getstring "\\n盘符 : ")
  14. ;;要增加的路径,由用户自己改写
  15. lst  (list ":\\block\\a1" ":\\block\\a2" ":\\block\\a3" ":\\bk\\b1" ":\\bk\\b2" ":\\bk\\b3" ":\\bk\\pat"
  16.                 ;;
  17. ) ;_ 结束list
  18. ;_ 结束list
  19. ls1  (car lst)
  20. path (strcat ";" pa ls1)
  21. lst  (vl-remove ls1 lst)
  22.   ) ;_ 结束setq
  23.   (while lst
  24.     (setq ls1  (car lst)
  25.    path (strcat path (strcat ";" pa ls1))
  26.    lst  (vl-remove ls1 lst)
  27.     ) ;_ 结束setq
  28.   ) ;_ 结束while
  29.   (setenv "ACAD" (strcat a path))
  30.   (getenv "ACAD")
  31. )
现在的问题是,即使我将当前目录添加进CAD支持目录,又怎样将其删除呢?若不删除,那CAD的支持路径就会无限膨胀了。
发表于 2008-4-7 22:11 | 显示全部楼层
另外想问一下,在CAD命令行中键入SH得到的路径,有时是当前文件的路径,有时又不是。它到底是怎么定的呢?
发表于 2008-4-7 22:35 | 显示全部楼层
本帖最后由 作者 于 2008-4-7 22:54:20 编辑

原来如此简单。
  1. (defun getpath (/ nowdwg pathnow)
  2.   (setq nowdwg (getvar "dwgname"))
  3.   (setq pathnow (findfile nowdwg))
  4.   (setq pathnow (substr pathnow 1 (- (strlen pathnow) (strlen nowdwg))))
  5.   pathnow
  6. )
  7. (defun addacad (/ path)
  8.   (setq oldacad (getenv "ACAD"))
  9.   (setq path (getpath))
  10.   (setenv "ACAD" (strcat oldacad ";" path))
  11.   (princ)
  12. )
  13. ;如果要删除加载的当前目录,在程序运行完成之后再加一句
  14. (setenv "ACAD" oldacad)
  15. ;即可
目前虽然得到了结果,但感觉仍是知其不知其所以然。
另外因后续程序可能需要用到oldacad,这里不能将其当作局部变量清除掉,怎么解决这个问题呢,在主程序里把它当成局部变量吗?
所以仍期望高人指点一二,不甚感激!
 楼主| 发表于 2008-4-14 21:23 | 显示全部楼层
4.7日直接(setenv "ACAD" oldacad),这就需要保留局部变量到程序结束。
再经过几日的思考,算是找到一个比较好一些的方案,如下,请前辈们指点。
  1. ;获取当前文件路径
  2.  ;By Dinosaur Deng 2008.4.7
  3. (defun getpath (/ nowdwg pathnow)
  4.   (setq nowdwg (getvar "dwgname"))
  5.   (setq pathnow (findfile nowdwg))
  6.   (setq pathnow (substr pathnow 1 (- (strlen pathnow) (strlen nowdwg))))
  7.   pathnow
  8. ) ;_ 结束defun
  9.  ;将当前打开文件目录添加至CAD支持目录
  10.  ;By Dinosaur Deng 2008.4.7
  11. (defun addacad (/ path oldacad)
  12.   (setq oldacad (getenv "ACAD"))
  13.   (setq path (getpath))
  14.   (setenv "ACAD" (strcat oldacad ";" path))
  15.   (princ)
  16. ) ;_ 结束defun
  17.  ;删除当前打开文件目录在CAD支持目录
  18.  ;By Dinosaur Deng 2008.4.7,2008.4.14修改
  19. (defun removeacad (/ nowacad path newacad)
  20.   (setq nowacad (getenv "ACAD"))
  21.   (setq path (getpath))
  22.   (setq newacad(vl-string-subst "" (strcat ";" path) nowacad))
  23.   (setenv "ACAD" newacad)
  24.   (princ)
  25. ) ;_ 结束defun
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 23:50 , Processed in 0.160992 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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