明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2500|回复: 9

[LISP]如何设置undo步数?

[复制链接]
发表于 2004-3-31 23:45:00 | 显示全部楼层 |阅读模式
(defun c:3circle()


;位置1


(setq pre_cmdecho (getvar "cmdecho"))


(setvar "cmdecho" 0)


(setq i 1)


(command "undo" "be")


(repeat 3


         (command ".circle" '(0 0 0) (* 10 i))


         (setq i (1+ i))


)


(command "undo" "e")


(setvar "cmdecho" pre_cmdecho)


)


为了一次u能够取消绘制的三个圆,设置了undo的起点和终点,但是这样无法恢复系统变量cmdecho的值。如果将undo的起点移至位置1,则无法屏蔽(command "undo" "be")的回显,可以不使用undo命令而使用系统变量实现期望功能吗?或有其他解决方案吗?

发表于 2004-4-1 00:00:00 | 显示全部楼层
看看表的结构(。。。(。。。(。。。         )。。。)。。。)


undo的位置也是一样的。在哪一环进,从哪一环出
 楼主| 发表于 2004-4-1 07:14:00 | 显示全部楼层
拜托无痕多解释几句嘛,不要惜字如金
发表于 2004-4-1 08:34:00 | 显示全部楼层
我這里調試時cmdecho的值是可以返回. 我就搞不明你的怎麼不返回了. 但你的程序最后那里應加上(princ)結束才完美點吧.
发表于 2004-4-1 08:36:00 | 显示全部楼层
你把(setvar "cmdecho" 0)也包含在undo的标记之内不就可以了吗?
 楼主| 发表于 2004-4-1 20:12:00 | 显示全部楼层
meflying的办法无法屏蔽(command "undo" "be")的回显。 BDYCAD,我试了,一旦用户u,的确无法恢复cmdecho的原值。 有没有别的方法,只能使用(command "undo" ...)吗?有没有实现同样功能的系统变量?
 楼主| 发表于 2004-4-2 07:34:00 | 显示全部楼层
为了实现当用户u时可以撤销一组命令,有无其他方法呢?
发表于 2004-4-2 08:29:00 | 显示全部楼层
其实我通过使用发现,这个变量其实不需要恢复,因为它不会影响平常的应用,而程序中如果要用它时,都会在程序中设定,,, 如果非要恢复,可以用ACTIVEX来设置 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vla-StartUndoMark doc)
...
(vla-EndUndoMark doc)
 楼主| 发表于 2004-4-2 10:32:00 | 显示全部楼层
收到
发表于 2004-4-2 12:45:00 | 显示全部楼层
用vlax-add-cmd将你的程序加载到CAD的命令栈中不是很方便吗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 17:37 , Processed in 0.196739 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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