这样是否可以得到当前使用的vlx或lsp文件所在路径?
本帖最后由 mandala 于 2011-9-8 16:06 编辑拼凑的这个lsp貌似可以获得当前运行的vlx或lsp所在的路径,请各位大侠看看是否靠得住?
注:主贴的程序很烂,看8楼的就可以。
;;返回:一个字符串。
(defun vlxpath()
(last(StrParse (GetLspPath) ";")))
;;子程序GetLspPath,寻找当前使用的vlx文件路径:
;;如果需要lsp文件的路径,将子程序中两个vlx改成lsp。
(defun GetLspPath()
(setq lsppath
(vl-registry-read
"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\vlx"
(substr
(vl-registry-read
"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\vlx"
"MRUList"
)
1
1
)
)
)
(setenv "ACAD" (strcat (getenv "ACAD") ";" (vl-filename-directory lsppath)))
)
;;子程序strparse,将由某字符分隔的字串组成表
;;参数:
;;Str:字符串
;;Delimiter:分隔符号
;;;用法 (StrParse "0001 566786.336 3378751.937 5.014" " ")
;;; 返回:("0001" "566786.336" "3378751.937" "5.014")
(defun strparse
(str delimiter / searchstr stringlen return n char nn)
(setq searchstr str)
(setq stringlen (strlen searchstr)
nn stringlen) ;_ 结束setq
(setq return '())
(while (> stringlen 0)
(setq n 1)
(setq char (substr searchstr 1 1))
(while (and (/= char delimiter) (<= n nn))
(setq n (1+ n))
(setq char (substr searchstr n 1))) ;_ end of while
(setq return (cons (substr searchstr 1 (1- n)) return))
(setq searchstr (substr searchstr (1+ n) stringlen))
(setq stringlen (strlen searchstr))) ;_ end of while
(if (= " " delimiter)
(setq return (vl-remove "" return))) ;_ 结束if
(reverse return)) ;_ 结束defun
试了一下,还行,得到的全路径文件名称,稍作处理就很好。 xianaihua 发表于 2011-9-8 11:57 static/image/common/back.gif
试了一下,还行,得到的全路径文件名称,稍作处理就很好。
请教“稍作处理就很好”是什么意思? 不能解决不是通过对话框加载的程序。 windows7 下不行.拖入文件到图面应该也不行. xianaihua 发表于 2011-9-8 11:57 static/image/common/back.gif
试了一下,还行,得到的全路径文件名称,稍作处理就很好。
也请教一下,啥叫“稍作处理就很好啊”? xshrimp 发表于 2011-9-8 14:32 static/image/common/back.gif
windows7 下不行.拖入文件到图面应该也不行.
嗯,拖入文件到cad不行。不知道为什么。windows7下不行大概是因为windows7的注册表不同吧。 本帖最后由 mandala 于 2011-9-8 16:05 编辑
靠,只记得拼凑了,根本没来得及看lsp的内容。
其实根本不必这么麻烦,只要这样就可以了:
;;子程序GetLspPath,寻找当前使用的vlx文件路径:
;;如果需要lsp文件的路径,将子程序中两个vlx改成lsp。
(defun GetLspPath()
(setq lsppath
(vl-registry-read
"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\vlx"
(substr
(vl-registry-read
"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\vlx"
"MRUList"
)
1
1
)
)
)
(vl-filename-directory lsppath)
)
申明一下,这个程序是zzxxqq版主写滴,我只是打打酱油。 mandala 发表于 2011-9-8 16:02 static/image/common/back.gif
靠,只记得拼凑了,根本没来得及看lsp的内容。
其实根本不必这么麻烦,只要这样就可以了:
我查看了我的注册表,这个方法不对。
我也试过了。
页:
[1]
2