明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1297|回复: 7

[提问] 关于云线revcloud的使用

[复制链接]
发表于 2015-10-1 18:46 | 显示全部楼层 |阅读模式
在编写一个小插件,用到了revcloud这个命令,但在调式的时候发现,revcloud这个命令会在程序全都走完后才开始执行,原程序如下:
  1. (defun c:tt ( / cla la )
  2.   (setvar "cmdecho" 0)
  3.   (setq cla (getvar "clayer"))
  4.   (setq la "云线")
  5.   (if (= (tblobjname "layer" la) nil)
  6.      (command "layer" "n" la "c" 6 la "p" "n" la  "")
  7.   )
  8.   (command "revcloud" "a" 1000 1000 "s" "c" )
  9.   (setvar "clayer" cla )
  10.   (setvar "cmdecho" 1)
  11. )
程序本想更改一下云线所在的图层,但这个程序执行调试过程中发现,(command "revcloud" "a" 1000 1000 "s" "c" )这名命令是在程序走完所有语句后才开始返回AutoCAD界面进行画云线,为什么会出现这种情况?
如果在(command "revcloud" "a" 1000 1000 "s" "c" )这个语句之前画一个矩形后,命令更改成
(command "revcloud" "a" 1000 1000 "s" "c" "o" "l"  "")这样就可以按顺序运行语句,除了这种方法外,是否有其它的解决办法?

是不是有类似的需要不断输入点取信息的cad命令在采用command命令调用时都会更改顺序?

谢谢~
发表于 2015-10-2 08:22 | 显示全部楼层
try
(command "revcloud" "a" 1000 1000 "s" "c" )
(while (= (logand (getvar "CmdActive") 1) 1) (command pause))   ; add this line
 楼主| 发表于 2015-10-2 19:03 | 显示全部楼层
Andyhon 发表于 2015-10-2 08:22
try
(command "revcloud" "a" 1000 1000 "s" "c" )
(while (= (logand (getvar "CmdActive") 1) 1) (com ...

谢谢,完美地解决了问题。
学到了位运算logand。
好奇问一下,为什么不直接
(while (= (getvar "CmdActive") 1  (command pause)),要采用函数logand?
CmdActive系统变量中只有值1是奇数,其它均是偶数,如果要判断奇数采用logand挺合适,但本例中采用logand有什么特别的考虑吗?
谢谢~
发表于 2015-10-2 19:34 | 显示全部楼层
CMDACTIVE System Variable

(Read-only)
Type: Integer
Not saved

Stores the bitcode that indicates whether an ordinary command, transparent command, script, or dialog box is active. The value is the sum of the following:


1 Ordinary command is active

2 Ordinary command and a transparent command are active

4 Script is active

8 Dialog box is active

16 DDE is active

32 AutoLISP is active (only visible to an ObjectARX-defined command)

64 ObjectARX command is active
 楼主| 发表于 2015-10-2 20:48 | 显示全部楼层
Andyhon 发表于 2015-10-2 19:34
CMDACTIVE System Variable

(Read-only)

不太明白,这不就是autocad帮助文件里有关cmdactive系统变量的说明部分?
回复给我的意思是?
发表于 2015-10-2 21:36 | 显示全部楼层
与捕捉相仿, OsMode的值是各捕捉模式的总和...
 楼主| 发表于 2015-10-3 07:53 | 显示全部楼层
Andyhon 发表于 2015-10-2 21:36
与捕捉相仿, OsMode的值是各捕捉模式的总和...

明白了,谢谢了。
发表于 2021-9-4 13:46 | 显示全部楼层
还是不能框选全部~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 22:21 , Processed in 0.487355 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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