找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2456|回复: 15

[求助] [求助]:让vlisp程序自动加载出现了问题

[复制链接]
发表于 2003-2-22 14:41:05 | 显示全部楼层 |阅读模式

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

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

×
我做了以下操作

在acad.mnu中最后处加上如下代码
(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.lsp")

这四个文件都在C:\Program Files\ACAD2000\SUPPORT\chmotor目录下,并且我在support file search path 中加入了这个路径。

还在C:\Program Files\ACAD2000\SUPPORT\chmotor中建了1个acad.lsp文件,在里面加上
(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.lsp")
然后在tools-->options-->system中选择了load acad.lsp with every drawing

双保险了!
我如果从acad.exe 启动cad2000时,这四个程序都能生效并正常使用,可是如果通过直接点击一个cad图形文件打开cad2000的话,在启动的时候就会由个错误提示
Opening an AutoCAD 2000 format file.
Regenerating model.
; error: syntax error
; error: syntax error
AutoCAD menu utilities loaded.
Command:
启动cad2000后,这四个程序都不能用,
显示错误提示:Unknown command "CIRCLEZHOU".  Press F1 for help.


请大侠指点!我已经昏了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-22 14:56:55 | 显示全部楼层
晓东工具箱中是这样自动加载的
<normalfont>
1 菜单中只写命令,不用Load,如:

  1. ID_CU_CL2PL      [连接线段(&L)]^C^C_c_l2pl
  2. ID_CU_QXHB       [合并线段(&J)]^C^C_curve_join
  3.                  [--]
  4. ID_CU_XKPP       [加粗曲线(&M)]^C^C_plw_match
  5. ID_CU_delspl     [删超短线(&E)]^C^C_XDTB_CurveDelSL
  6.                  [--]
  7. ID_CU_plarea     [曲线统计(&T)]^C^C_plarea
  8. ID_CU_CLEN       [PL线长和(&D)]^C^C_cal_clen
  9. ID_CU_CUDIST     [测量长度(&S)]^C^C_XDTB_CurveLength
  10. ID_CU_CUAREA     [曲线面积(&U)]^C^C_XDTB_CurveArea
复制代码

2 加载命令放在同名的MNL中,用AutoLoad

  1. ;;The follow code Writen by QiuFeng
  2. ;; 此处自动加载一个命令的lisp程序,
  3. ;; !!!命令名必须与程序名相同,不然会导致溢出
  4. (_Autoload_All_XdSoft_SingleCommand_Lisp
  5.   '("cline"            "mk_wipeout"    "modify_z"            "outline"
  6.     "pldel"            "s_trim"            "slbmagic"            "solid2pl"
  7.     "ssgetf"            "swl2dote"            "swltrim"            "stopl"
  8.     "win_bat_modw"  "draworder_by_layer"
  9.    )
  10. )
  11. ;; 此处自动加载一个程序中含有多个命令的程序
  12. (autoload "obj_block"
  13.           '("blk_trim"              "BLK_XCLIP"        "blk_rclip"
  14.             "del_blk_subent"  "mod_blk_subent"        "tjblk"
  15.             "regen_ss"              "add_blk_ss"        "blk_num"
  16.             "expblk2"              "blk_scl"                "BLK_ADDATTRIB"
  17.            )
  18. )
复制代码

3 程序中判断Lsp、Arx文件是否加载,


  1. ;;Writen By Eachy
  2. (defun $xdrx_load ($name / el)
  3.   ;;判断一个ARX程序是否加载
  4.   (if (= (type $name) 'STR)
  5.     (setq el (list $name))
  6.     (setq el $name)
  7.   )
  8.   (foreach n el
  9.     (if        (wcmatch (strcase n) "*.ARX")
  10.       (if (not (member (strcase n t)
  11.                        (mapcar '(lambda (x) (strcase x t)) (arx))
  12.                )
  13.           )
  14.         (arxload n)
  15.       )
  16.       ;;判断一个LSP程序是否加载
  17.       (if (and (not (member n _xdatoml))
  18.                (load n)
  19.           )
  20.         (setq _xdatoml (cons n _xdatoml))
  21.       )
  22.     )
  23.   )
  24.   (princ)
  25. )

</normalfont>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-22 15:37:33 | 显示全部楼层
斑竹你写的东西我看不太懂啊,我有这几个程序
(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.lsp")

要在任何时候都自动加载,应该怎么写?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-22 16:08:55 | 显示全部楼层
就是说,你不应该加在mnu文件中,而应该放在 MNL 文件中。MNU文件不是写lsp代码的。

acad.mnu -> acad.mnl

acad.mnu中最后处加上如下代码
(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.lsp")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-22 16:34:48 | 显示全部楼层
谢谢!我按您的要求,把acad.mnu中加入的代码删掉,然后在acad.mnl的最后面加上(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.lsp")

可是在通过点击一个DWG图形文件打开acad2000的时候还是报错
Opening an AutoCAD 2000 format file.
Regenerating model.
; error: syntax error
; error: syntax error
AutoCAD menu utilities loaded.; error: syntax error
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-22 17:45:02 | 显示全部楼层
试把 acad.MNC, MNS, MNR 三个文件备份一下,删除之。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-2-22 18:08:12 | 显示全部楼层
最初由 yinwh 发布
[B]谢谢!我按您的要求,把acad.mnu中加入的代码删掉,然后在acad.mnl的最后面加上(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.lsp")

可是在?.. [/B]

先试试注释掉加载,看看双击DWG启动时有错误吗。
2000下用VLsp的程序最前面加(vl-load-com)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-22 23:34:48 | 显示全部楼层
(vl-load-com)
是什么意思?
我用的是win98  acad2000中英文版混用

是否在每个lisp程序的最前面要加上这行代码?


我今天写程序的时候又碰到另外一个问题:
在写字程序的时候格式是
  (defun abc(自变量)
....

          )

可是在我的子程序中不仅有自变量,还有若干起辅助作用的局部变量,需要另外声明吗?格式是怎样的?

请不吝赐教!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-23 10:08:53 | 显示全部楼层
提示是语法错误,应该在acad.mnu去除相应几行,然后用menu命令重新加载acad.mnu,acad将重新编译菜单。
建议将这几句写成“(defun c:xx()(load "xxxxxx.lsp")(c:xx)”的形式,使用是自动加载。
另:如果局部变量在主程序(外部函数)中已经声明,定义内部函数时可以不声明,但如果内部函数中局部变量相互冲突,在各自的函数中也应该声明,声明后的局部变量当函数执行后退出(nil)。声明的格式同外部函数一样,为:
(defun abc(变元 / 局部变量)   ;注意“/”前后各有一空格
...
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-23 10:57:52 | 显示全部楼层
我把cad2000删除后重装了!是连文件夹都一起删除了

然后在acad.mnl最后面加上
(defun c:xx()
(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.lsp")
)
(c:xx)


问题依旧啊,通过acad.exe启动就正常,通过dwg文件打开就提示

; error: syntax error
; error: syntax error
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-23 11:04:12 | 显示全部楼层
那换一种方法,不要写代码加载。使用AutoCAD中的启动组:
命令;appload
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-23 12:06:28 | 显示全部楼层
最初由 yinwh 发布
我把cad2000删除后重装了!是连文件夹都一起删除了

然后在acad.mnl最后面加上
(defun c:xx()
(load "circlezhou.lsp")
(load "chmotor_line.lsp")
(load "chmotor_huazhou.lsp")
(load "chmotor_chgltype.l...


你再检查一下dwg所在目录是否有acad*.lsp,如果有,删除之。否则,如果秋枫的办法还不行,方便的话,将你的几个Lisp文件传上来,大家帮助检查一下。

另:我漏写了一个括号,我指的c:xx是程序xxxxxx.lsp中定义的外部函数,如c:cir。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-24 10:07:43 | 显示全部楼层
我用秋枫的方法试了一下,现在可以了!!

我有5个程序,4个是好的,在加载这个程序的时候有错误提示,请帮我看一下错在哪里?我觉得没错啊,因为我用手动加载的时候,是正常的啊

  1. (setvar "cmdecho" 0)
  2. (command "linetype" "l" "dianhuaxian" "" "")
  3. (command "linetype" "l" "xuxian" "" "")
  4. (command "layer" "m" 2 "l" "xuxian" "" "lw" "0.2" "" "")
  5. (command "layer" "m" 3 "l" "dianhuaxian" "" "lw" "0.2" "" "")
  6. (command "layer" "m" 4 "l" "continuous" "" "lw" "0.2" "" "")
  7. (command "layer" "m" 1 "l" "continuous" "" "lw" "0.35" "" "")


xuxian 和dianhuaxian 我都已经定义好了
*dianhuaxian,Center ____ _ ____ _ ____ _ ____ _ ____ _ ____
A, 31.75, -6.35, 6.35, -6.35
*xuxian,Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _
A, 12.7, -6.35

为了测试,我是直接把里面原有的线型改了个名字

错误提示如下:

Opening an AutoCAD 2000 format file.
Regenerating model.
Invalid option keyword.
; error: Function cancelled
Enter an option [?/Create/Load/Set]:
Command:
AutoCAD menu utilities loaded.
AutoCAD Express Tools Menu loaded.
Invalid option keyword.
; error: Function cancelled
Enter an option [?/Create/Load/Set]:

可奇怪的是,虽然有错误提示,但xuxian和dianhuaxian还是加载上去了,这些错误提示是什么意思呢?
请各位帮帮忙,谢谢了!

还有:我如果想把配置移植到另外几台机子上,又不想在每台机子上一条一条 的加到启动组,因为以后程序可能会很多,我该怎么做?同时需要移植的还有对应这些程序而定制的工具条按钮。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-24 14:58:34 | 显示全部楼层
我建议你还是去看看这方面的书籍,系统的学习学习。
关于工具条的问题,你可以打开菜单文件,看看定制前后的异同,研究一下吧,通过研究你的认识会更加深刻的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-24 15:43:34 | 显示全部楼层
能不能推荐一本书??我这里能买到的书都太浅了。。

如果有好的介绍,请写一下书名和出版商以及作者

我现在手上只有一本铁道出版社的autolisp&dcl基础篇
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 14:54 , Processed in 0.312897 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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