找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1240|回复: 10

[讨论]:关于undo的两个问题

[复制链接]

已领礼包: 2674个

财富等级: 家财万贯

发表于 2005-7-24 10:23:27 | 显示全部楼层 |阅读模式

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

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

×
本人在编程中遇到两个有关undo命令的问题:
1.有时需要在程序开始部分使用undo,begin,在结束部分使用undo,end来撤消整个命令的操作。问题在于:如果要使undo,begin不显示在命令行的话,必须将cmdecho设为0;而进行撤消后,程序是撤消到cmdecho设为0之后的,这样就更改了用户的cmdecho值,怎么能避免这种情况的发生?
2.程序中使用undo以返回某步的操作时,undo对鼠标中键的操作(如平移、缩放)是敏感的,有什么方法能监测到鼠标中键的使用?如同line命令中的undo一样

另外:本人在启动组加载的常用工具里使用autoload对一些其他工具进行了预加载,但CAD每次在启动时都提示autoload命令没定义,但在其的作用却有的,即使用那些命令却是可以的,这是什么原因?
我个人猜测是不是启动组中的文件比acad14.lsp加载得早?好象对启动组文件的加载顺序问题没什么地方提到过
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-7-24 10:26:12 | 显示全部楼层
好象没写完呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2674个

财富等级: 家财万贯

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

使用道具 举报

发表于 2005-8-1 12:57:41 | 显示全部楼层
实例:
[php](defun c:test ()
  (setq ce (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (command ".undo" "BE")
  ……
  ……
  ……
  (command ".undo" "E")
  (setvar "CMDECHO" ce)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2674个

财富等级: 家财万贯

 楼主| 发表于 2005-8-2 15:28:13 | 显示全部楼层
斑竹,问题是如果在程序运行后undo的话,它就到了你程序的第四行了,在此之前已经将cmdecho设为0了,结果就是改变了用户的cmdecho值了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-2 21:29:29 | 显示全部楼层
把(setvar "CMDECHO" ce) 写在(command ".undo" "E") 可不可以?
(defun c:test ()
  (setq ce (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (command ".undo" "BE")
  ……
  ……
  ……
  (setvar "CMDECHO" ce)
   (command ".undo" "E")

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

使用道具 举报

已领礼包: 2674个

财富等级: 家财万贯

 楼主| 发表于 2005-8-10 15:59:59 | 显示全部楼层
大家还是没明白我的意思
以上为例:
(defun c:test ()
(setq ce (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(command ".undo" "BE") <---------------
……
……
……
(setvar "CMDECHO" ce)
(command ".undo" "E")
)
如果用了undo,就将回到箭头的地方,而前面的(setvar "CMDECHO" 0) 已经改变了用户参数,这能避免吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-10 16:40:22 | 显示全部楼层
最初由 oyxx_1023 发布
[B]把(setvar "CMDECHO" ce) 写在(command ".undo" "E") 可不可以?


这样为什么不行?

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

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2005-8-11 09:35:58 | 显示全部楼层
使用vlax的方法:

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2006-6-24 20:07:49 | 显示全部楼层
最初由 e2002 发布
[B]使用vlax的方法:

  1. (vlax-StartUndoMark oCurrentDoc)
  2. (vlax-EndUndoMark oCurrentDoc)
复制代码
[/B]


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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 20:02 , Processed in 0.199704 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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