BenjaminXM 发表于 2015-10-1 18:46:44

关于云线revcloud的使用

在编写一个小插件,用到了revcloud这个命令,但在调式的时候发现,revcloud这个命令会在程序全都走完后才开始执行,原程序如下:(defun c:tt ( / cla la )
(setvar "cmdecho" 0)
(setq cla (getvar "clayer"))
(setq la "云线")
(if (= (tblobjname "layer" la) nil)
   (command "layer" "n" la "c" 6 la "p" "n" la"")
)
(command "revcloud" "a" 1000 1000 "s" "c" )
(setvar "clayer" cla )
(setvar "cmdecho" 1)
)程序本想更改一下云线所在的图层,但这个程序执行调试过程中发现,(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命令调用时都会更改顺序?

谢谢~

Andyhon 发表于 2015-10-2 08:22:38

try
(command "revcloud" "a" 1000 1000 "s" "c" )
(while (= (logand (getvar "CmdActive") 1) 1) (command pause))   ; add this line

BenjaminXM 发表于 2015-10-2 19:03:38

Andyhon 发表于 2015-10-2 08:22 static/image/common/back.gif
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有什么特别的考虑吗?
谢谢~

Andyhon 发表于 2015-10-2 19:34:07

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

BenjaminXM 发表于 2015-10-2 20:48:38

Andyhon 发表于 2015-10-2 19:34 static/image/common/back.gif
CMDACTIVE System Variable

(Read-only)


不太明白,这不就是autocad帮助文件里有关cmdactive系统变量的说明部分?
回复给我的意思是?

Andyhon 发表于 2015-10-2 21:36:27

与捕捉相仿, OsMode的值是各捕捉模式的总和...

BenjaminXM 发表于 2015-10-3 07:53:05

Andyhon 发表于 2015-10-2 21:36 static/image/common/back.gif
与捕捉相仿, OsMode的值是各捕捉模式的总和...

明白了,谢谢了。

akingaa 发表于 2021-9-4 13:46:50

还是不能框选全部~~~~~~~
页: [1]
查看完整版本: 关于云线revcloud的使用