明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1027|回复: 4

[已解答] 一个undo的问题请教

[复制链接]
发表于 2015-9-5 17:10:37 | 显示全部楼层 |阅读模式
为啥undo后, cmdecho 变为0呢? 程序执行前cmdecho是1
(setq cmd (getvar "cmdecho"))
(setvar 'cmdecho 0)
(command "_.undo" "be")
(command ............)
(command ............)
(command "_.undo" "e")
(setvar "cmdecho" cmd)

应该是要把(command "_.undo" "be") 放在前面 , 可是这样, 这句的回显就会出来 , 有什么好的窍门?

发表于 2015-9-5 17:33:14 | 显示全部楼层
cmdecho其实不重要,他基本上只有command函数有效,只要你确认在调用command的时候是关掉的,就可以了,也不影响你的命令行。是吧。
其实这个想不出现这样的逻辑问题,就考虑用vla函数
  1. (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
  2. (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
  3. (if (= 8 (logand 8 (getvar 'UNDOCTL)))
  4.       (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
  5.       )
 楼主| 发表于 2015-9-5 18:35:03 来自手机 | 显示全部楼层
edata 发表于 2015-9-5 17:33
cmdecho其实不重要,他基本上只有command函数有效,只要你确认在调用command的时候是关掉的,就可以了,也不 ...

谢谢edata大师, 请问(= 8 (logand 8 (getvar 'UNDOCTL))) 这一句是干什么的呢?
发表于 2015-9-5 18:49:21 | 显示全部楼层
'UNDOCTL 是undo编组状态系统变量,
(logand 8 (getvar 'UNDOCTL))判断变量是否含有8的值。
如果有=8则 表示  一个编组处于当前活动状态 即:undo没有结束。
关于UNDOCTL
UNDOCTL 概念   操作步骤   快速参考  




(只读)类型: 整数
保存位置: 未保存
初始值: 21

指示 UNDO 命令的“自动”、“控制”和“编组”选项的状态。系统将使用下列位码值之和将该设置存储为一个位码:

0
UNDO 关闭

1
UNDO 打开

2
只能放弃一条命令

4
打开“自动”

8
一个编组处于当前活动状态

16
将缩放和平移操作编组为单个操作


 楼主| 发表于 2015-9-6 08:06:02 | 显示全部楼层
edata 发表于 2015-9-5 18:49
'UNDOCTL 是undo编组状态系统变量,
(logand 8 (getvar 'UNDOCTL))判断变量是否含有8的值。
如果有=8则 表 ...

谢谢,受教了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-30 14:29 , Processed in 0.144938 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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