明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3230|回复: 6

怎样用lisp程序添加选项对话框的支持文件搜索路径和工作支持文件搜索路径

[复制链接]
发表于 2005-3-3 22:40 | 显示全部楼层 |阅读模式
怎样用lisp程序添加选项对话框的支持文件搜索路径和工作支持文件搜索路径

本帖被以下淘专辑推荐:

  • · 收集|主题: 58, 订阅: 4
发表于 2013-5-12 22:10 | 显示全部楼层
;;
(vl-load-com)
(princ "\n")
(setq path (getvar "lastprompt"))
(if (wcmatch (strcase path) "*(LOAD \"*")
  (setq        str  (vl-string-search "(LOAD \"" path)
        path (substr path
                     (+ str 8)
                     (- (vl-string-search "\")" path) str 7)
             )
  )
)
(setq path (vl-filename-directory (vl-string-translate "/" "\\" path))
      path (strcase path t)
)
(if (findfile (strcat path
                      (if (wcmatch path "*\\")
                        ""
                        "\\"
                      )
                      "模型工具箱.lsp"
              )
    )
  (progn
    ;; 加载搜索路径
    (foreach b '("MXGJX" "PAT")
      (setq a (vl-string-subst b "lsp" path))
      (if (not (wcmatch        (strcase (getenv "ACAD") t)
                        (strcat "*" (strcase a t) "*")
               )
          )
        (setenv "ACAD" (strcat a ";" (getenv "ACAD")))
      )
    )
    (setq str-xcad  "(vl-load-all \"模型工具箱.lsp\")"
          lst            '("(vl-load-all \"模型工具箱.lsp\")");自动加载列表
    )
    (if        (setq fl (findfile "acad.lsp"))
      (progn
        (setq fr (open fl "r"))
        (while (setq item (read-line fr))
          (setq l_str (append l_str (list item)))
        )
        (close fr)
        (setq l_str (append (vl-remove str-xcad l_str)
                            lst
                    )
              fr    (open fl "w")
        )
        (foreach itm l_str (write-line itm fr))
        (close fr)
      )
      (progn
        (setq fw (open (strcat path
                               (if (wcmatch path "*\\")
                                 ""
                                 "\\"
                               )
                               "acad.lsp"
                       )
                       "a"
                 )
        )
        (foreach a lst (write-line a fw))
        (close fw)
      )
    )
    (load "acad.lsp")
  )
)

(foreach a '(path path1 str str-xcad fl fr item l_str itm fw lst b)
  (set a nil)
)
回复 支持 0 反对 1

使用道具 举报

发表于 2005-3-5 14:30 | 显示全部楼层
转载自BDYCAD大侠的帖子. 发贴心情
例如: (setenv "ACAD" (strcat "D:\\Program Files\\BB;" (getenv "ACAD")))) D:\\Program Files\\BB = 要加载的文件路径 如果有多个路径可加在分号后面,别忘了最后一个路径后要加分号.
发表于 2005-3-7 11:49 | 显示全部楼层
好象不太安全(就是不一定会成功),写注册表如何?
发表于 2013-5-12 22:11 | 显示全部楼层
;;
(defun zclj ()
  (setvar "cmdecho" 0)
  (setq acadpath (getenv "ACAD"))
  (setq lsp (list "C:/Program Files/MXGJX"))
  (setq ls1 (car lsp))
  (setq HP2008lsp (strcat ls1 ";"))
  (setq lsp (vl-remove ls1 lsp))
  (while lsp
    (setq ls1 (car lsp))
    (setq HP2008lsp (strcat HP2008lsp ls1 ";"))
    (setq lsp (vl-remove ls1 lsp))
  )
  (setenv "ACAD" (strcat HP2008lsp acadpath))
  (getenv "ACAD")
)
(zclj)

;;
(defun zclj ()
  (setvar "cmdecho" 0)
  (setq acadpath (getenv "ACAD"))
  (setq lsp (list "C:/Program Files/MXGJX"))
  (setq ls1 (car lsp))
  (setq HP2004lsp (strcat ls1 ";"))
  (setq lsp (vl-remove ls1 lsp))
  (while lsp
    (setq ls1 (car lsp))
    (setq HP2004lsp (strcat HP2004lsp ls1 ";"))
    (setq lsp (vl-remove ls1 lsp))
  )
  (setenv "ACAD" (strcat HP2004lsp acadpath))
  (getenv "ACAD")
)
(zclj)


;;
(defun zclj ()
  (setvar "cmdecho" 0)
  (setq acadpath (getenv "ACAD"))
  (setq lsp (list "C:/JDP5X"))
  (setq ls3 (car lsp))
  (setq HP2004lsp (strcat ls3 ";"))
  (setq lsp (vl-remove ls3 lsp))
  (while lsp
    (setq ls3 (car lsp))
    (setq HP2004lsp (strcat HP2004lsp ls3 ";"))
    (setq lsp (vl-remove ls3 lsp))
  )
  (setenv "ACAD" (strcat HP2004lsp acadpath))
  (getenv "ACAD")
)
(zclj)
;;

(defun zclj ()
  (setvar "cmdecho" 0)
  (setq acadpath (getenv "ACAD"))
  (setq lsp (list "C:/Program Files/MXGJX"))
  (setq ls1 (car lsp))
  (setq HP2007lsp (strcat ls1 ";"))
  (setq lsp (vl-remove ls1 lsp))
  (while lsp
    (setq ls1 (car lsp))
    (setq HP2007lsp (strcat HP2007lsp ls1 ";"))
    (setq lsp (vl-remove ls1 lsp))
  )
  (setenv "ACAD" (strcat HP2007lsp acadpath))
  (getenv "ACAD")
)
(zclj)
;;
;;
(defun zclj ()
  (setvar "cmdecho" 0)
  (setq acadpath (getenv "ACAD"))
  (setq lsp (list "C:/Program Files/MXGJX/PAT"))
  (setq ls1 (car lsp))
  (setq HP2010lsp (strcat ls1 ";"))
  (setq lsp (vl-remove ls1 lsp))
  (while lsp
    (setq ls1 (car lsp))
    (setq HP2010lsp (strcat HP2010lsp ls1 ";"))
    (setq lsp (vl-remove ls1 lsp))
  )
  (setenv "ACAD" (strcat HP2010lsp acadpath))
  (getenv "ACAD")
)
(zclj)
;;

;;自动添加菜单和工具条       
(defun c:mu (/ pre_filedia CNT)
  (if (not (menugroup "MXGJX"))
    (progn
      (setq pre_filedia (getvar "filedia"))
      (setvar "filedia" 0)
      (vl-cmdf "menuload" "MXGJX")
      (setq CNT 1)
      (while (menucmd (strcat "P" (itoa CNT) ".1=?"))
        (setq CNT (1+ CNT))
      )
      (if (> CNT 1)
        (setq CNT (- CNT 1))
        (setq CNT 1)
      )
      (menucmd (strcat "P" (itoa CNT) "=+MXGJX.pop1"))
      (princ
        "\n菜单及工具条已成功加载,欢迎您再次使用!"
      )
      (setvar "filedia" pre_filedia)
    )
    (prompt "\n菜单已加载!")
  )
  (princ)
)
(c:mu)
;;卸载自定义菜单
(defun c:umu (/ pre_filedia)
  (if (menugroup "MXGJX")
    (progn
      (setq pre_filedia (getvar "filedia"))
      (setvar "filedia" 0)
      (vl-cmdf "menuunload" "MXGJX")
      (princ
        "\n菜单及工具条已成功卸载,欢迎您再次使用!"
      )
      (setvar "filedia" pre_filedia)
    )
    (prompt "\n未找到需要卸载的菜单!")
  )
  (princ)
)
发表于 2013-5-12 22:13 | 显示全部楼层
文件夹支持路径的顺序改下ls1 改成ls2 。。。。。。ls10......
发表于 2021-10-31 17:14 | 显示全部楼层
谢谢大大!!我看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-16 02:23 , Processed in 0.182353 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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