(defun addsearchs(folderlst);;将folderlst里边的全路径目录添加到cad搜索支持
(setenv"ACAD"(strcat(getenv "ACAD")(apply'strcat(mapcar'(lambda(x)(strcat";"x))folderlst))))
)
;;folderlst应该包括盘,比如下边这样的表("E:\\Game\\WULIN" "E:\\Game\\WULIN\\733" "D:\\WULIN\\734" "E:\\Game\\WULIN\\735" "E:\\Game\\WULIN\\DXYVTG")
;;把目录添加到CAD的搜索支持里边后,要通过vla-add block的方法插入图形文件就好办了
(defun xdirectory(folder / a b);;;指定目录folder下的所有子目录
(if(setq b(if(wcmatch folder",*/,*\")folder(strcat folder"\"))a(cddr(vl-directory-files b nil -1)))
(cons folder(apply'append(mapcar'(lambda(x)(xdirectory(strcat b x)))a)))
(list folder)))
下边这个不是我自己写的,只是改了一个可以选择的处理方式,比如对嵌套坐标点表和别的嵌套表我们通常希望的处理结果要有所不同,当然两种处理方法都有好多源码,其中不乏好贴,但结合在一起的没怎么看到
(defun ListAll(tlst f / aaa lst);;f为t时全部压平,nil时保留一层
(defun aaa (tlst)
(foreach b tlst
(if(if f(listp b)(and(listp b)(listp(car b))))(aaa b)(setq lst(cons b lst)))))
(if(listp tlst)(if(setq lst (aaa tlst))(reverse lst)))
)
;;(ListAll'(0 1(a b(c d) e f)(g h) 4 5)nil)==>(0 1 (A B (C D) E F) (G H) 4 5)
;;(ListAll'(0 1(a b(c d) e f)(g h) 4 5)t)===>(0 1 A B C D E F G H 4 5)
;;;(ListAll'(0 1((a b)((c d)(e f)))((g h) 4 5))nil)===>(0 1 (A B) (C D) (E F) (G H) 4 5)