找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2394|回复: 13

[求助] [求助]:?执行自定义lisp中途退出会出错?

[复制链接]
发表于 2002-8-18 23:27:25 | 显示全部楼层 |阅读模式

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

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

×
在命令行输入自定义的lisp(都是网站上下的)后,在没有执行或者没有执行完毕该命令之前退出(按Esc键)。此时ORTHO(正交)模式和OSNAP(对象捕捉)模式经常会无故的退出。特别是OSNAP模式,退出的概率很高!不得不让我一遍一遍的重新设置!



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

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-8-18 23:37:53 | 显示全部楼层

Re: [求助]:?执行自定义lisp中途退出会出错?

最初由 活塞 发布
[B]在命令行输入自定义的lisp(都是网站上下的)后,在没有执行或者没有执行完毕该命令之前退出(按Esc键)。此时ORTHO(正交)模式和OSNAP(对象捕捉)模式经常会无故的退出。特别是OSNAP模式,退出的概率很高!不得不... [/B]

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

使用道具 举报

 楼主| 发表于 2002-8-19 01:09:45 | 显示全部楼层
为什么不能保证?在理论上有可能保证吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-8-19 02:00:13 | 显示全部楼层
最初由 活塞 发布
[B]为什么不能保证?在理论上有可能保证吗? [/B]

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

使用道具 举报

发表于 2002-8-19 09:19:38 | 显示全部楼层
这个做法是很简单的。你看看autocad中的标准lisp命令的源文件即可。比如3darray之类的。
一般网上的小程序是应急而作,考虑周全的话程序会复杂一点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-8-19 12:19:40 | 显示全部楼层
随手写的程序一般不会加出错处理的,其实加上也很简单。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-8-21 23:27:58 | 显示全部楼层
常用的 os 配置可以 做个简单的lsp,或者写到菜单里面
如: (defun c:osn ()(command "_.osnap" "end,mid,int,per,qua,nod"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-8-22 08:06:30 | 显示全部楼层
最初由 活塞 发布
[B]为什么不能保证?在理论上有可能保证吗? [/B]

整理了一下,用以下格式就可以了,可以UNDO。

  1. ;;;
  2. ;;;  Error routine.
  3. ;;;
  4. (defun ai_error        (s)                        ; If an error (such as CTRL-C) occurs
  5.   (if (not (member s '("函数已取消" "控制台中断")))
  6.     (princ (strcat "\n错误: " s))
  7.   )
  8.   (if undo_init
  9.     (ai_undo_pop)
  10.   )                                        ; Deal with UNDO
  11.   (if old_error
  12.     (setq *error* old_error)
  13.   )                                        ; Restore old *error* handler
  14.   (if old_cmd
  15.     (setvar "cmdecho" old_cmd)
  16.   )                                        ; Restore cmdecho value
  17.   (princ)
  18. )
  19. ;;;
  20. ;;; A function that turns on UNDO so that some existing routines will work.
  21. ;;; Do not use with new routines as they should be designed to operate with
  22. ;;; any UNDO setting.
  23. ;;;
  24. (defun ai_undo_on ()
  25.   (setq undo_setting (getvar "undoctl"))
  26.   (cond
  27.     ((= 2 (logand undo_setting 2))        ; Undo is one
  28.      (command "_.undo" "_control" "_all" "_.undo" "_auto" "_off")
  29.     )
  30.     ((/= 1 (logand undo_setting 1))        ; Undo is disabled
  31.      (command "_.undo" "_all" "_.undo" "_auto" "_off")
  32.     )
  33.   )
  34. )
  35. ;;;
  36. ;;; Return UNDO to the initial setting.  Do not use with new routines as they
  37. ;;; should be designed to operate with any UNDO setting.
  38. ;;;
  39. (defun ai_undo_off ()
  40.   (cond
  41.     ((/= 1 (logand undo_setting 1))
  42.      (command "_.undo" "_control" "_none")
  43.     )
  44.     ((= 2 (logand undo_setting 2))
  45.      (command "_.undo" "_control" "_one")
  46.     )
  47.   )
  48. )
  49. ;;;
  50. ;;; UNDO handlers.  When UNDO ALL is enabled, Auto must be turned off and
  51. ;;; GROUP and END added as needed.
  52. ;;;
  53. (defun ai_undo_push ()
  54.   (setq undo_init (getvar "undoctl"))
  55.   (cond
  56.     ((and (= 1 (logand undo_init 1))        ; enabled
  57.           (/= 2 (logand undo_init 2))        ; not ONE (ie ALL is ON)
  58.           (/= 8 (logand undo_init 8))        ; no GROUP active
  59.      )
  60.      (command "_.undo" "_group")
  61.     )
  62.     (T)
  63.   )
  64.   ;; If Auto is ON, turn it off.
  65.   (if (= 4 (logand 4 undo_init))
  66.     (command "_.undo" "_auto" "_off")
  67.   )
  68. )

  69. ;;;
  70. ;;; Add an END to UNDO and return to initial state.
  71. ;;;
  72. (defun ai_undo_pop ()
  73.   (cond
  74.     ((and (= 1 (logand undo_init 1))        ; enabled
  75.           (/= 2 (logand undo_init 2))        ; not ONE (ie ALL is ON)
  76.           (/= 8 (logand undo_init 8))        ; no GROUP active
  77.      )
  78.      (command "_.undo" "_end")
  79.     )
  80.     (T)
  81.   )
  82.   ;; If it has been forced off, turn it back on.
  83.   (if (= 4 (logand undo_init 4))
  84.     (command "_.undo" "_auto" "_on")
  85.   )
  86. )
  87. ;;; ==================== end load-time operations ===========================
  88. ;;;
  89. ;;;******************************** MODES ********************************
  90. ;;;
  91. ;;; System variable save

  92. (defun MODES (a)
  93.   (setq MLST '())
  94.   (repeat (length a)
  95.     (setq MLST (append MLST (list (list (car a) (getvar (car a))))))
  96.     (setq a (cdr a))
  97.   )
  98. )

  99. ;;;******************************** MODER ********************************
  100. ;;;
  101. ;;; System variable restore

  102. (defun MODER ()
  103.   (repeat (length MLST)
  104.     (setvar (caar MLST) (cadar MLST))
  105.     (setq MLST (cdr MLST))
  106.   )
  107. )

  108. ;;;******************************** 3DAERR *******************************
  109. ;;;
  110. ;;; Standard error function

  111. (defun 3DAERR (st)                        ; If an error (such as CTRL-C) occurs
  112.                                         ; while this command is active...
  113.   (if (/= st "函数已取消")
  114.     (princ (strcat "\n错误: " st))
  115.   )
  116.   (command "_.UNDO" "_E")
  117.   (ai_undo_off)
  118.   (moder)                                ; Restore system variables
  119.   (setq *error* olderr)                        ; Restore old *error* handler
  120.   (princ)
  121. )
  122. [COlor=red];;主程序[/color]
  123. (defun c:xxx ()
  124.   (setq        olderr        *error*
  125.         *error*        3daerr
  126.   )
  127.   (modes '("cmdecho" "blipmode"        "highlight" "orthomode"        "ucsfollow"
  128.            "gridmode"
  129.           )
  130.   )
  131.   (setvar "CMDECHO" 0)

  132.   (ai_undo_on)                                ; Turn UNOD on
  133.   (command "_.UNDO" "_GROUP")
  134. [color=blue];;加入你自己的程序
  135. .
  136.   .
  137.   .
  138.   .
  139.   .
  140.   .
  141. ;;程序结束[/color]
  142.   (command "_.UNDO" "_E")
  143.   (ai_undo_off)                                ; Return UNDO to initial state
  144.   (moder)                                ; Restore system variables
  145.   (setq *error* olderr)                        ; Restore old *error* handler
  146.   (princ)
  147. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-8-22 08:48:43 | 显示全部楼层
江南的东西蛮实用,我试了。谢谢!
eachy的lisp我不知该如何使用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-8-22 09:04:35 | 显示全部楼层
eachy不是把格式都写出来了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-8-23 10:52:09 | 显示全部楼层
不知要把eachy的格式加在哪里使用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-9-3 23:31:59 | 显示全部楼层
我需要学的东西实在太多了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-9-4 00:00:26 | 显示全部楼层
用eachy的这个程序,别忘了加载晓东的api涵数.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-31 13:16:33 | 显示全部楼层
太感谢了.斑主
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 08:23 , Processed in 0.590360 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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