循环不工作时
大家好,我需要一些关于AutoLISP脚本的帮助。我在一家装饰公司工作,正在努力简化我们的一些布局程序。
我遇到的问题是,当程序进入我的循环时,它不能正常工作。每个循环迭代都应该稍微增加x和y值,就像一个数组一样。阵列在所有迭代中正确循环,但它不会在适当的点中绘制线。例如,一条长度为10000、甲板尺寸为500的线应该有20个迭代,因此20条线像阵列一样布置。它将循环预成形20次,但不会在应该绘制的点处绘制20条线。我已经检查了行值是否正确递增,它们确实是,这一定是因为我使用line命令的方式有问题。
我附上了lsp文件和一个带有一些线条的图形,以供选择,以了解我的意思。任何帮助都会很好,我被难住了。
甲板线。lsp
甲板试验。图纸 只快速查看了一下代码,但由于您使用(命令)函数绘制线条,请确保禁用了对象捕捉。我的猜测是,正在运行捕捉,并且您正在绘制的线正在捕捉到其他对象,而不是到提供的坐标。 我的程序运行良好。我认为你的问题可能是每条线的绘制方向。在下图中,左边的图中的线是沿同一方向绘制的。右边的一个,一个从右向左画,另一个从左向右画。
谢谢你们的回复,我遇到的问题是OSNAPs——我甚至没有考虑其他问题,但这也是我现在必须解决的问题。 我几乎在每一次Lisp程序的时候都会用到这个
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
;;;at end
(setvar "osmode" oldsnap)
如果例程在最后一行执行之前结束,最好也有一个错误处理程序,但如果没有,那么应该考虑只关闭对象捕捉,而不是将osmode的值设置为0。这样,如果最后一行从未执行,则不会丢失对象捕捉设置。
;;; example from http://forums.autodesk.com/t5/AutoCAD-2011/Aperture-Box-and-OSMODE/m-p/2673449#M1148
;;; turns off running snaps
(setvar "OSMODE" (logior (getvar "OSMODE") 16384))
;;; restores running snaps
(setvar "OSMODE" (logand (getvar "OSMODE") (~ 16384)))
我无法告诉你有多少次我的OSNAP问题困扰了我的Lisp程序(好吧,从技术上来说,恰恰相反……)。起初,我在代码中关闭了它们,但我办公室里有这么多不同的人使用这么多不同版本的AutoCAD,每个版本都根据他们的个人喜好进行调整,更不用说我自己的经验不足了,我的代码中有很多错误,这意味着OSNAP关闭并保持关闭状态。错误处理很好,但我总是忘记将其放入代码中。
我的解决方案是:在运行LISP之前将F3混合。
页:
[1]