关于云线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命令调用时都会更改顺序?
谢谢~
try
(command "revcloud" "a" 1000 1000 "s" "c" )
(while (= (logand (getvar "CmdActive") 1) 1) (command pause)) ; add this line 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有什么特别的考虑吗?
谢谢~ 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
Andyhon 发表于 2015-10-2 19:34 static/image/common/back.gif
CMDACTIVE System Variable
(Read-only)
不太明白,这不就是autocad帮助文件里有关cmdactive系统变量的说明部分?
回复给我的意思是? 与捕捉相仿, OsMode的值是各捕捉模式的总和... Andyhon 发表于 2015-10-2 21:36 static/image/common/back.gif
与捕捉相仿, OsMode的值是各捕捉模式的总和...
明白了,谢谢了。 还是不能框选全部~~~~~~~
页:
[1]