Autolisp函数产生不同的
问题的根源是辅助函数drawportsegment:(defun drawportsegment (loc portspacing / portw porth test)
(setq
portw 2.0
porth 1.0)
(command "rectangle"
(list (- (car loc) (/ portw 2.0)) (cadr loc) 0.0)
(list (+ (car loc) (/ portw 2.0)) (- (cadr loc) porth) 0.0))
(command "line"
(list (car loc) (- (cadr loc) porth) 0.0)
(list (car loc) (- (cadr loc) portspacing) 0.0)
"")
)
由于是相关信息,我编写的与drawportsegment接口的测试函数是testdps:
(defun c:testdps (/ loc portspacing)
(setq
loc (getpoint "\nwhere?")
portspacing 2.0)
(drawportsegment loc portspacing))
以下是该功能在屏幕上运行与在屏幕下运行的直接比较:
http://i.imgur.com/aJ2cq2v.png
我不理解为什么会生成图A,因为从代码来看,我认为总是会生成图B。
感谢所有帮助! (setvar 'osmode 0) 解释:当对象在屏幕上时,OSNAP处于活动状态,如果您获取当前osmode并将其设置为变量,然后在程序运行时将osmode更改为0,那么它将不会捕捉到对象,然后将其恢复到原来的状态。 它成功了-谢谢! 没问题 有一个建议是,在许多情况下,osmode的更改非常常见。
(setq oldsnap (getvar 'osmode))
(setvar 'osmode 0)
....
your code
...
(setvar 'osmode oldsnap)
页:
[1]