关于退出一段时间的问题
你好,在我的一段代码中,我使用了以下内容:
(princ "\nSpecify insertion point")
(while
(not
(command "_.insert" BlockName "_s"
(getvar "DIMSCALE") pause pause)
)
;_not
) ;_while
这很好,但我有两个问题,我相信我应该能够回答自己,但我就是不明白。
1、代码中NOT的用法是什么?我知道我需要它在那里,但我如何阅读它的方式,我可以理解。
ie.“不”该做什么?这感觉毫无意义,这当然是愚蠢的,因为没有它,它根本就不会停留在循环中。
2.我只能在wich之前退出,因为我的错误捕捉工作正常,并且在恢复变量时节省了我的时间。(感谢Lee Macs关于错误捕捉的教程)。
但我发现退出更自然,因为我的鼠标右键。
我们将一如既往地感谢您的帮助! 1) (命令)始终返回nil。(not)如果测试返回零,则返回T。因此,只要测试返回nil或没有使用esc键,循环就会继续
2) 您需要彻底检查整个代码段,才能按enter键退出
也许 吧:
(while(getpoint“\n插入点:”)。。。。
-大卫 你好,Marco,
命令函数始终返回nil,因此,通过使用逻辑not函数,while测试条件始终得到满足,因此您仍处于循环中。
另一种方法可能是:
(setq LastEntity T
Scale (getvar 'DIMSCALE)
BlockName"MyBlock.dwg"
)
(while (not (equal LastEntity ThisEntity))
(setq LastEntity (entlast))
(command "_.-insert" BlockName "_S" scale pause pause)
(setq ThisEntity (entlast))
)
但是,由于您使用INSERT命令插入块,因此在提示输入点时不允许空输入,因此再次需要Esc退出循环。
避免使用Esc的一种可能的替代方法是使用getpoint/getangle提示:
(setq Scale (getvar 'DIMSCALE)
BlockName "test.dwg"
)
(while
(and
(setq pt (getpoint "\nSpecify Point: "))
(setq an (getangle "\nSpecify Angle: " pt))
)
(command "_.-insert" BlockName "_S" scale pt (angtos an))
)
李 @李和大卫
感谢您的回复!现在我知道了。。。一旦你知道这很容易
我用grread(类似(=(cadr gr)13)运行了它,但由于我希望能够使用OSNAP,我将它改回了常规插入。
使用getpoint的另一部分也是我所拥有的,但这并不能在屏幕上拖动鼠标时预览块。
该喝咖啡了。
页:
[1]