明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1104|回复: 8

[已解答] 请问我这个程序为什么每次加载第一次失败,第二次才能成功呢?

[复制链接]
发表于 2015-8-10 17:11:42 | 显示全部楼层 |阅读模式
程序如下:
  1. (defun create_toolbar (/ file lst x)
  2.   (vl-load-com)
  3.   (if (not (menugroup "NICETOOLBAR"))
  4.     (progn
  5.       (alert "\n程序自动创建"NICETOOLBAR"工具栏,请稍后")
  6.       (setq file (open "d:/nice/support/NICETOOLBAR.mnu" "W"))
  7.       (foreach x '(
  8.           "***MENUGROUP=NICETOOLBAR\n\n***TOOLBARS\n**NICETOOLBAR"
  9.           "ID_ZCT001   [_Toolbar("NICE_图框目录工具", _Floating, _Hide, 10, 340, 1)]"
  10.           "ID_ZCT010   [_Button("插入图框", "insertframe.bmp", "insertframe.bmp")]^C^Cnice_insertframe_frame"
  11.           "ID_ZCT011   [_Button("改图图框", "insertframe_change.bmp", "insertframe_change.bmp")]^C^Cnice_insertfram_modify"
  12.           "ID_ZCT012   [_Button("填写图框", "framefillin.bmp", "framefillin.bmp")]^C^Cnice_framefillin"
  13.           "ID_ZCT013   [_Button("点取图框将图签内容匹配给另一个图框", "framematch.bmp", "framematch.bmp")]^C^Cnice_framematch"
  14.           "ID_ZCT014   [_Button("图框及框内图纸移动", "framemove.BMP", "framemove.BMP")]^C^Cnice_move_frame"
  15.           "ID_ZCT015   [_Button("图框页码批量修改", "pagenum.bmp", "pagenum.bmp")]^C^Cnice_numbered"
  16.           "ID_ZCT016   [_Button("插入目录", "directoryinsert.bmp", "directoryinsert.bmp")]^C^Cnice_insertdirectory_frame"
  17.           "ID_ZCT017   [_Button("点取图框将图签内容匹配给一个目录", "directorymatch.bmp", "directorymatch.bmp")]^C^Cnice_directorymatch"
  18.           "ID_ZCT018   [_Button("生成目录", "directorymake.bmp", "directorymake.bmp")]^C^Cnice_makediractory_frame"
  19.           "ID_ZCT019   [_Button("卸载NICE_图框目录工具", "uninstall.bmp", "uninstall.bmp")]^C^Cnice_uninstall"
  20.         )
  21.         (princ (strcat x "\n") file)
  22.       )
  23.       (close file)
  24.       (command "menuload" "NICETOOLBAR.mnu")
  25.     )
  26.   )
  27.   (command "TOOLBAR" "NICE_图框目录工具" "S")
  28.   (princ)
  29. )
  30. (defun C:nice_uninstall ()
  31.   (alert "即将卸载工具条\n感谢您的使用。\n有任何意见请反馈至kele99kele@163.com\n\n                               by【九群】")
  32.   ;(command "TOOLBAR" "nice_图框目录工具" "H")
  33.   (nice_delpath "D:\\nice\\support")
  34.   (nice_delpath "D:\\nice")
  35.   (command "CUIUNLOAD" "nicetoolbar")
  36.   (princ)
  37. )
  38. (defun nice_delpath (path / temp)
  39.   (setq temp (getenv "ACAD"))
  40.   (setq temp (vl-string-subst ";" path temp))
  41.   (setq temp (vl-string-subst ";" ";;;" temp))
  42.   (setq temp (vl-string-subst ";" ";;" temp))
  43.   (setenv "ACAD" temp)
  44. )
  45. (defun nice_makpath ()
  46.   (setq oldacad (getenv "ACAD")) (princ)
  47.   (if (wcmatch oldacad "*D:\\nice\\support*") ()
  48.     (
  49.       (vl-load-com)
  50.       (vl-mkdir "D:\\nice\\support")
  51.       (setq path "D:\\nice;D:\\nice\\support")
  52.       (setenv "ACAD" (strcat oldacad ";" path))
  53.     )   
  54.   )
  55.   (princ)
  56. )
  57. (nice_makpath)
  58. (create_toolbar)
  59. (load "图框工具.vlx")
发表于 2015-8-10 19:11:49 | 显示全部楼层
你是指加载vlx失败吗?
我记得环境变量不能立即生效。
 楼主| 发表于 2015-8-10 20:50:38 | 显示全部楼层
edata 发表于 2015-8-10 19:11
你是指加载vlx失败吗?
我记得环境变量不能立即生效。

不光加载vlx失败,是提示函数错误,连toolbar也没有加载就退出了,但是第二次appload就全都正常了,实在不知道为什么,第一次失败,第二次成功,而且每次都是一样
发表于 2015-8-10 23:01:04 | 显示全部楼层
如果不设置 环境变量而用CAD系统自己生成一个临时文件名来写可不可能就不会出现这种问题了?

点评

(defun nice_delpath (path / temp) 是这个子程序么?  发表于 2015-8-10 23:17
 楼主| 发表于 2015-8-10 23:16:15 | 显示全部楼层
llsheng_73 发表于 2015-8-10 23:01
如果不设置 环境变量而用CAD系统自己生成一个临时文件名来写可不可能就不会出现这种问题了?

可否指点下是哪句有可能有问题,怎么改可以最大可能的避免这个问题呢?
发表于 2015-8-10 23:47:33 | 显示全部楼层
vl-mkdir一次只能创建一级目录,
直接用这个   (vl-mkdir "D:\\nice\\support")不能创建
(vl-mkdir "D:\\nice")
(vl-mkdir "D:\\nice\\support")
就可以了


点评

谢谢您的耐心帮助  发表于 2015-8-11 12:54
发表于 2015-8-10 23:56:20 | 显示全部楼层
楚留香 发表于 2015-8-10 23:47
vl-mkdir一次只能创建一级目录,
直接用这个   (vl-mkdir "D:\\nice\\support")不能创建
(vl-mkdir "D:\ ...

  (vl-mkdir "D:\\nice\\support")确实不能创建直接成功。但现在的问题是为什么会第一次出错,第二次就正常
 楼主| 发表于 2015-8-11 00:31:23 | 显示全部楼层
llsheng_73 发表于 2015-8-10 23:56
(vl-mkdir "D:\\nice\\support")确实不能创建直接成功。但现在的问题是为什么会第一次出错,第二次就正 ...

我好像找到问题了,是不是出在if条件这里
我改成if  (progn xxx好像就可以了,你们试试行不行
发表于 2015-8-11 09:30:05 | 显示全部楼层
本帖最后由 llsheng_73 于 2015-8-11 09:38 编辑
kele99kele 发表于 2015-8-11 00:31
我好像找到问题了,是不是出在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))
    )   
  )

点评

谢谢您的耐心帮助  发表于 2015-8-11 12:53
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-16 04:25 , Processed in 0.240800 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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