收藏 分销(赏)

LISP文件加载设置.docx

上传人:pc****0 文档编号:8733512 上传时间:2025-02-28 格式:DOCX 页数:4 大小:15.31KB 下载积分:10 金币
下载 相关 举报
LISP文件加载设置.docx_第1页
第1页 / 共4页
LISP文件加载设置.docx_第2页
第2页 / 共4页


点击查看更多>>
资源描述
下面开始编写初始化LISP程序。这里,我们创建一个LISP程序,命名为:Loadtbox.lsp,这个程序将负责把菜单、主程序等加载到系统中。 以下是这个Loadtbox.lsp的写法。我尽量在注释中解释: ;; 首先定义初始化函数 (defun InittboxApplication (/ ;; 内部函数 GetMyApplicationPath GettboxPath strParse StrUnParse tbox_AddSupportPath Load_tboxMenu tbox_placemenu ;; 局部变量 tbox_cmdecho_save ) ;;; 取得本程序的路径. ;;; 文件路径从注册表中读取,这些信息由安装程序负责写入注册表 ;;; --------------------------------------------------------------------------------- (defun GetMyApplicationPath (AppID) (vl-registry-read (strcat "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" AppID "_is1" ) "Inno Setup: App Path" ) ) (defun GettboxPath () (GetMyApplicationPath "Lisp工具箱") ) ;;; 解析字符串为表(函数来自明经通道转载) ;;; --------------------------------------------------------------------------------- (defun strParse (Str Delimiter / SearchStr StringLen return n char) (setq SearchStr Str) (setq StringLen (strlen SearchStr)) (setq return '()) (while (> StringLen 0) (setq n 1) (setq char (substr SearchStr 1 1)) (while (and (/= char Delimiter) (/= char "")) (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 (reverse return) ) ;_ end of defun ;;; 反解析表为字符串(函数来自明经通道转载) ;;; --------------------------------------------------------------------------------- (defun StrUnParse (Lst Delimiter / return) (setq return "") (foreach str Lst (setq return (strcat return Delimiter str)) ) ;_ end of foreach (substr return 2) ) ;_ end of defun ;;; 添加支持文件搜索路径 ;;; --------------------------------------------------------------------------------- ;;; note: 第二个参数如果为真, 插最前,否则插最后 ;;; (defun tbox_AddSupportPath (PathToAdd isFirst / supportlist) (if (not (vl-string-search (strcase (strcat pathToAdd ";")) (strcase (strcat (getenv "ACAD") ";")) ) ) ; 保证不重复添加 (progn (setq supportlist (strparse (getenv "ACAD") ";")) (setq supportlist (vl-remove-if-not 'vl-file-directory-p supportlist ) ) ; 移除不存在的文件夹 (if isFirst (setq supportlist (cons PathToAdd supportlist)) (setq supportlist (append supportlist (list PathToAdd))) ) (setenv "ACAD" (strUnParse supportlist ";")) ) ) ) ;; 根据不同的AutoCAD版本加载不同的菜单文件。 (defun Load_tboxMenu (/ acadver) (setq acadver (atof (getvar "acadver"))) (cond ((and (>= acadver 15.0) (< acadver 16.0)) (command "_menuload" "tbox.mnu") ) ((and (>= acadver 16.0) (<= acadver 16.1)) (command "_menuload" "tbox16.mnu") ) ((>= acadver 16.2) (command "_menuload" "tbox2006.mnu")) ) ) ;; 这个函数用来插入菜单条 ;; The following code "placemenu" from LUCAS(龙龙仔) (defun tbox_placemenu (/ n) (if (menugroup "tbox") (progn (setq n 1) (while (< n 24) (if (menucmd (strcat "P" (itoa n) ".1=?")) (setq n (+ n 1)) (progn (if (> n 3) (setq n (- n 2)) (setq n 3) ) ;if ;; 如需插入多条菜单,以反序在这里写: ;; 因只有一条下拉菜单,因此这里4,3,2条注释掉 ;; (menucmd (strcat "p" (itoa n) "=+tbox.pop4")) ;; (menucmd (strcat "p" (itoa n) "=+tbox.pop3")) ;; (menucmd (strcat "p" (itoa n) "=+tbox.pop2")) (menucmd (strcat "p" (itoa n) "=+tbox.pop1")) (setq n 25) ) ;progn ) ;if ) ;while ) ;progn ) ;if (princ) ) ;;; ----------------------------------------------------- ;;; main: ;;; ----------------------------------------------------- (setq tbox_cmdecho_save (getvar "cmdecho")) (setvar "cmdecho" 0) ;; 添加搜索路径 (tbox_AddSupportPath (GettboxPath) nil) ;; 如果菜单组还没有被加载,则加载之 (if (not (menugroup "tbox")) (Load_tboxMenu) ) ;; 插到合适的位置 ;;; (tbox_placemenu) (setvar "cmdecho" tbox_cmdecho_save) (setq tbox_cmdecho_save nil) (princ) ) ;_end of defun inittboxApplication (inittboxApplication) ;; 加载主程序 ;; 为节省内存,这里也可以以autoload函数形式定义 ;; 有几条写几条 (load "tbox.vlx") (princ) 至此,所有的要添加支持路径、添加菜单的工作在LISP中都做好了。下面运行本人制作的安装程序制作向导:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服