找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 972|回复: 10

[求助] [求助]:怎样实现LISP的自动执行?

[复制链接]
发表于 2003-10-30 22:31:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
对于LISP,往往我们讨论最多的是怎样自动加载。在得到一个圆满的
答案之后,我又有了新的疑问:“怎样才能在AUTOCAD R14中开启某张DWG图就自动执行某个特定的LISP?” 注意:不是自动加载!!!
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-11-2 00:56:43 | 显示全部楼层
这似乎是不大可能的,不过有一种变通的方法,就是在acad.lsp或acad.mnl中检查你打开的文件名,如果符合某种条件就加载那个lsp。你以为呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-2 21:24:28 | 显示全部楼层
能不能说的仔细点,老大?怎样在acad.lsp或acad.mnl中检查打开的文件名,如果符合某种条件就加载那个lsp?赐教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-5 10:07:26 | 显示全部楼层
呵呵,不好意思,这么长时间才来回复:
具体的方法是在acad.lsp或其它的自动加载的lsp中添加如下代码:

  1. (defun s::startup ()
  2.   (if (= (getvar "dwgname") "特定的图.dwg")
  3.     (load "特定的lsp")
  4.     )
  5. )

其中"特定的图.dwg")就是你要加载lap的图,比如你要为abc.dwg加载123.lsp则:

  1. (defun s::startup ()
  2.   (if (= (getvar "dwgname") "abc.dwg")
  3.     (load "123.lsp")
  4.     )
  5. )


这里要说明的是s::startup 是一个特殊的函数,他不需要你输入,他是自动执行的,这也是你的要求得以实现的原因。

更正一下,其实也不需要这样啦
其实只要在acad.lsp的最后加上:
(if (= (getvar "dwgname") "abc.dwg")
(load "123.lsp")
)
就行了,呵呵。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-5 10:21:34 | 显示全部楼层
从这个问题引申开去:
我们还可以对图形名增加一些模糊判断,比如说图名中包含某个或某些特定的字符等等。

从这个问题引申开去:
我们还可以对图形名增加一些模糊判断,比如说图名中包含某个或某些特定的字符等等。


不好意思,前面看错了,说的是自动“运行”不是加载,但还是可行的:
(if (= (getvar "dwgname") "图名")
(progn
(load "某.lsp") ;如果已经加载就可以省掉
(执行函数)  ;就是DEFUN后面跟的函数,如果是c:***,这里就要写成(c:***)
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-6 10:02:55 | 显示全部楼层
zhynt斑竹,我照你的方法试着写了一个。可以自动执行,如下:
(defun s::startup ()
   (load "c:\\wd.lsp")
   (if (= (getvar "DWGTITLED") 1)
       ((c:wd)))
   )      
   (princ)
)
但是出现问题:Command: error: bad function
((C:WD))
(IF (= (GETVAR "DWGTITLED") 1) ((C:WD)))
(S::STARTUP)
*Cancel*     能不能抑制后面的出现。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-7 18:43:02 | 显示全部楼层
((c:wd)))干吗要双括号啊?

不错的想法,打开cad不运行,只有打开图才运行。
(defun s::startup ()
(if (= (getvar "DWGTITLED") 1)
(progn
(load "c:\\wd.lsp")
(c:wd)
)
)
(princ)
)

与s::startup函数类似的还有s::save以及s::exit
前者当保存图形时运行,后者当退出时运行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-12 10:32:35 | 显示全部楼层
我去掉了双括号,但还是会出现(S::STARTUP),何故?
向雷锋同志学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-12 10:38:57 | 显示全部楼层
我没有这个问题啊?你是放在哪个lsp里?
把你的wd,lsp传上来我看看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-12 11:33:16 | 显示全部楼层
我的wd.lsp是放在C盘的根目录下,而且在CAD中我把C盘加在了支持搜索文件夹里面。
以下的我放在了ACADR14.LSP里面,(defun s::startup ()
(if (= (getvar "DWGTITLED") 1)
(progn
(load "c:\\wd.lsp")
(c:wd)
)
)
(princ)
)
WD。LSP只是我随手写的一个小LISP,运行绝对没有问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-12 11:55:53 | 显示全部楼层
去研究一下前段子出现的acad.lsp病毒,它用的就是上面办法.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 19:20 , Processed in 0.193581 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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