请问我这个程序为什么每次加载第一次失败,第二次才能成功呢?
程序如下:(defun create_toolbar (/ file lst x)(vl-load-com)
(if (not (menugroup "NICETOOLBAR"))
(progn
(alert "\n程序自动创建\"NICETOOLBAR\"工具栏,请稍后")
(setq file (open "d:/nice/support/NICETOOLBAR.mnu" "W"))
(foreach x '(
"***MENUGROUP=NICETOOLBAR\n\n***TOOLBARS\n**NICETOOLBAR"
"ID_ZCT001 "
"ID_ZCT010 ^C^Cnice_insertframe_frame"
"ID_ZCT011 ^C^Cnice_insertfram_modify"
"ID_ZCT012 ^C^Cnice_framefillin"
"ID_ZCT013 ^C^Cnice_framematch"
"ID_ZCT014 ^C^Cnice_move_frame"
"ID_ZCT015 ^C^Cnice_numbered"
"ID_ZCT016 ^C^Cnice_insertdirectory_frame"
"ID_ZCT017 ^C^Cnice_directorymatch"
"ID_ZCT018 ^C^Cnice_makediractory_frame"
"ID_ZCT019 ^C^Cnice_uninstall"
)
(princ (strcat x "\n") file)
)
(close file)
(command "menuload" "NICETOOLBAR.mnu")
)
)
(command "TOOLBAR" "NICE_图框目录工具" "S")
(princ)
)
(defun C:nice_uninstall ()
(alert "即将卸载工具条\n感谢您的使用。\n有任何意见请反馈至kele99kele@163.com\n\n by【九群】")
;(command "TOOLBAR" "nice_图框目录工具" "H")
(nice_delpath "D:\\nice\\support")
(nice_delpath "D:\\nice")
(command "CUIUNLOAD" "nicetoolbar")
(princ)
)
(defun nice_delpath (path / temp)
(setq temp (getenv "ACAD"))
(setq temp (vl-string-subst ";" path temp))
(setq temp (vl-string-subst ";" ";;;" temp))
(setq temp (vl-string-subst ";" ";;" temp))
(setenv "ACAD" temp)
)
(defun nice_makpath ()
(setq oldacad (getenv "ACAD")) (princ)
(if (wcmatch oldacad "*D:\\nice\\support*") ()
(
(vl-load-com)
(vl-mkdir "D:\\nice\\support")
(setq path "D:\\nice;D:\\nice\\support")
(setenv "ACAD" (strcat oldacad ";" path))
)
)
(princ)
)
(nice_makpath)
(create_toolbar)
(load "图框工具.vlx") 你是指加载vlx失败吗?
我记得环境变量不能立即生效。 edata 发表于 2015-8-10 19:11 static/image/common/back.gif
你是指加载vlx失败吗?
我记得环境变量不能立即生效。
不光加载vlx失败,是提示函数错误,连toolbar也没有加载就退出了,但是第二次appload就全都正常了,实在不知道为什么,第一次失败,第二次成功,而且每次都是一样 如果不设置 环境变量而用CAD系统自己生成一个临时文件名来写可不可能就不会出现这种问题了? llsheng_73 发表于 2015-8-10 23:01 static/image/common/back.gif
如果不设置 环境变量而用CAD系统自己生成一个临时文件名来写可不可能就不会出现这种问题了?
可否指点下是哪句有可能有问题,怎么改可以最大可能的避免这个问题呢? vl-mkdir一次只能创建一级目录,
直接用这个 (vl-mkdir "D:\\nice\\support")不能创建
(vl-mkdir "D:\\nice")
(vl-mkdir "D:\\nice\\support")
就可以了
楚留香 发表于 2015-8-10 23:47 static/image/common/back.gif
vl-mkdir一次只能创建一级目录,
直接用这个 (vl-mkdir "D:\\nice\\support")不能创建
(vl-mkdir "D:\ ...
(vl-mkdir "D:\\nice\\support")确实不能创建直接成功。但现在的问题是为什么会第一次出错,第二次就正常
llsheng_73 发表于 2015-8-10 23:56 static/image/common/back.gif
(vl-mkdir "D:\\nice\\support")确实不能创建直接成功。但现在的问题是为什么会第一次出错,第二次就正 ...
我好像找到问题了,是不是出在if条件这里
我改成if(progn xxx好像就可以了,你们试试行不行 本帖最后由 llsheng_73 于 2015-8-11 09:38 编辑
kele99kele 发表于 2015-8-11 00:31 http://bbs.mjtd.com/static/image/common/back.gif
我好像找到问题了,是不是出在if条件这里
我改成if(progn xxx好像就可以了,你们试试行不行
(if (wcmatch oldacad "*D:\\nice\\support*") ()
(
(vl-load-com)
(vl-mkdir "D:\\nice\\support")
(setq path "D:\\nice;D:\\nice\\support")
(setenv "ACAD" (strcat oldacad ";" path))
)
)
这个地方确实有问题。。。同时楚留香提到的问题也应该考虑,最后修改如下
(if(not (wcmatch oldacad "*D:\\nice\\support*") )
(progn
(vl-load-com)
(vl-mkdir "D:\\nice")
(vl-mkdir "D:\\nice\\support")
(setq path "D:\\nice;D:\\nice\\support")
(setenv "ACAD" (strcat oldacad ";" path))
)
)
页:
[1]