明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1373|回复: 9

[函数] 各位老大帮忙:求一个函数:有需要时才加载指定的lsp

[复制链接]
发表于 2011-1-16 14:26 | 显示全部楼层 |阅读模式
求一个函数:有需要时才加载指定的lsp……以前在明经里看到过,一下子找不到了。
就是说,平时该lsp或vlx不驻内存,只有在输入这个命令如 “tt”时,才加载tt.lsp,或TT.vlx。

另外能不能在引入lsp或vlx的时候,改掉函数名呢,比如TT.vlx,命令是“tt”,我想使用它时把命令变成“aa”,行不行?
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2011-1-16 14:28 | 显示全部楼层
本帖最后由 mandala 于 2011-1-16 14:28 编辑

找到一些很好的程序,可这些老大都把这东西编译成了vlx,没法合并,而且命令都是TT,TT,TT……晕死了。
发表于 2011-1-16 14:56 | 显示全部楼层
(defun c:aa ()  ;命令行输入aa,加载"文本查找和替换TTF.lsp",再输入"文本查找和替换TTF.lsp"的主函数执行
(load "文本查找和替换TTF.lsp")
)

 楼主| 发表于 2011-1-16 15:08 | 显示全部楼层
楼上这位老大,那么这个"文本查找和替换TTF.lsp" 呢???
发表于 2011-1-16 16:36 | 显示全部楼层
如果是lsp格式,,参考autoload
 楼主| 发表于 2011-1-16 16:42 | 显示全部楼层
等不及各位老大了,自己胡乱搞了一个,似乎能行:


  1. (defun c:kk()(load "tt.vlx")
  2.    (vl-load-com)
  3.    (defun SendKeys (keys / ws)
  4.         (setq ws (vlax-create-object "WScript.Shell"))
  5.         (vlax-invoke-method ws 'sendkeys keys)
  6.         (vlax-release-object ws)
  7.         (princ)
  8.    )
  9. (sendkeys "tt ")
  10. )

发表于 2011-9-12 20:49 | 显示全部楼层
5楼正解
(appload "tt.lsp" '("tt"))
发表于 2011-9-12 22:10 来自手机 | 显示全部楼层
全方位的按需加载,更内置了命令防冲突功能,参见fsxm.mjtd.com
发表于 2011-9-12 22:35 | 显示全部楼层
       如果把调用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.
发表于 2013-7-1 00:38 | 显示全部楼层
yjr111 发表于 2011-9-12 22:35
如果把调用autoload函数的表达式写在自动加载的acad2xxxdoc.lsp等文件内,那么在Autocad启动时,随着 ...

CAD2004提示
错误: no function definition: AUTOLOAD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 06:24 , Processed in 0.437181 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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