各位老大帮忙:求一个函数:有需要时才加载指定的lsp
求一个函数:有需要时才加载指定的lsp……以前在明经里看到过,一下子找不到了。就是说,平时该lsp或vlx不驻内存,只有在输入这个命令如 “tt”时,才加载tt.lsp,或TT.vlx。
另外能不能在引入lsp或vlx的时候,改掉函数名呢,比如TT.vlx,命令是“tt”,我想使用它时把命令变成“aa”,行不行? 本帖最后由 mandala 于 2011-1-16 14:28 编辑
找到一些很好的程序,可这些老大都把这东西编译成了vlx,没法合并,而且命令都是TT,TT,TT……晕死了。 (defun c:aa ();命令行输入aa,加载"文本查找和替换TTF.lsp",再输入"文本查找和替换TTF.lsp"的主函数执行
(load "文本查找和替换TTF.lsp")
)
楼上这位老大,那么这个"文本查找和替换TTF.lsp" 呢??? 如果是lsp格式,,参考autoload 等不及各位老大了,自己胡乱搞了一个,似乎能行:
(defun c:kk()(load "tt.vlx")
(vl-load-com)
(defun SendKeys (keys / ws)
(setq ws (vlax-create-object "WScript.Shell"))
(vlax-invoke-method ws 'sendkeys keys)
(vlax-release-object ws)
(princ)
)
(sendkeys "tt ")
)
5楼正解
(appload "tt.lsp" '("tt")) 全方位的按需加载,更内置了命令防冲突功能,参见fsxm.mjtd.com 如果把调用autoload函数的表达式写在自动加载的acad2xxxdoc.lsp等文件内,那么在Autocad启动时,随着acad2xxxdoc.lsp等文件的自动加载,被调用的autoload函数还可以加载一些LISP文件。调用autoload函数格式如下:
(aotoload LISP文件名命令表)
该函数要求LISP文件必须在AUTOCAD支持的文件搜索路径下,命令表列出了在该LISP文件中定义的部分的AUTOCAD命令名。无论是否加载成功,该函数均返回nil。
autoload与load的不同之处是:执行完调用该函数的表达式之后,AUTOCAD只是记录了被加载的LISP文件名和相应的命令表,而LISP文件本身并没有被加载。只有等到命令表内的任意一个命令被调用之后,这个LISP文件才被真正加载,这时该LISP文件所定义的全部AUTOCAD命令才处于可以被调用状态。也就是说,如果某个LISP文件所定义的命令没有被调用,那么这个LISP文件就暂时不被加载到内存,从而节省了内存空间。
例如,文件file1.lsp定义了cmd1、cmd2等多个AUTOCAD命令,该文件存放在AUTOCAD的SUPPORT目录下。在命令行用autoload加载file1.lsp的表达式如下:
命令:(autoload "file1.lsp" '("cmd1" "cmd2"))
此后,如果调用file1.lsp文件定义的命令表之外的命令,会显示”未知命令“xxx".按F1查看帮助。”的出错信息,因为该LISP文件尚未被真正加载。如果调用命令表内的任意一个命令,例如调用cmd1,file1.lsp文件才被AUTOCAD真正加载,随后该文件定义的所有命令均可以被调用。
如果将表达式(autoload "file1.lsp" '("cmd1" "cmd2")),追加到acad2xxxdoc.lsp等文件的后面,即可在启动autocad时,间接自动地加载了file1.lsp. yjr111 发表于 2011-9-12 22:35 static/image/common/back.gif
如果把调用autoload函数的表达式写在自动加载的acad2xxxdoc.lsp等文件内,那么在Autocad启动时,随着 ...
CAD2004提示
错误: no function definition: AUTOLOAD
页:
[1]