哪位高人帮我看一下这个程序
目的是在指定点把给定的长度分成多段线折线画出来。当屏幕视口适当时,可以正常画。但当屏幕视口缩小时,坐标点就错了,线就画错了。
哪位大侠帮我修改一下,谢谢了。
;;;-------------------------------------------------------------------------
; ;;画安装线段
;;;-------------------------------------------------------------------------
(defun C:AZXD(/ AZLp0 p1 p2 p3 p4 p5 p6 )
(setq AZL (getdist"请输入垂直线的长度")
AZL (/ AZL 51)
)
(repeat 20 ;循环20次
(if
(null
(if(setq p0(getpoint "\n请输入文字插入点: "))
(progn
(setq x0 (car p0)
y0 (cadr p0)
p1 (list (+ x0 (* AZL 5)) (+ y0 (* AZL 1)))
p2 (list (- x0 (* AZL 5)) (+ y0 (* AZL 3)))
p3 (list (+ x0 (* AZL 5)) (+ y0 (* AZL 5)))
p4 (list (- x0 (* AZL 5)) (+ y0 (* AZL 7)))
p5 (list (+ x0 (* AZL 5)) (+ y0 (* AZL 9)))
p6 (list (- x0 (/ AZL 100)) (+ y0 (* AZL 10)))
)
(command "pline" p0 p1 p2 p3 p4 p5 p6 "")
(princ)
)
)
)
(exit)
)
)
(princ)
)
关闭捕捉试试。 ... (command "pline" ...
当叫用 Command 时 捕捉设定作用中... 画线时我是需要捕捉的
帮忙帮到底,怎么设置呢?谢谢 (command "pline" p0 p1 p2 p3 p4 p5 p6 "")
我需要在画P0的时候开启捕捉,P1-P6时关闭捕捉
怎么弄啊?
(defun C:AZXD(/ AZLp0 p1 p2 p3 p4 p5 p6 )
(setq oldsnap (getvar "osmode"));----------------------记住捕捉状态
(setq AZL (getdist"请输入垂直线的长度")
AZL (/ AZL 51)
)
(repeat 20 ;循环20次
(setvar "osmode" oldsnap);------------------------在你需要时恢复捕捉
(if
(null
(if
(setq p0(getpoint "\n请输入文字插入点: "))
(progn
(setq x0 (car p0)
y0 (cadr p0)
p1 (list (+ x0 (* AZL 5)) (+ y0 (* AZL 1)))
p2 (list (- x0 (* AZL 5)) (+ y0 (* AZL 3)))
p3 (list (+ x0 (* AZL 5)) (+ y0 (* AZL 5)))
p4 (list (- x0 (* AZL 5)) (+ y0 (* AZL 7)))
p5 (list (+ x0 (* AZL 5)) (+ y0 (* AZL 9)))
p6 (list (- x0 (/ AZL 100)) (+ y0 (* AZL 10)))
)
(setvar "osmode" 0);-------------------程序运行时关掉
(command "pline" p0 p1 p2 p3 p4 p5 p6 "")
(princ)
)
)
)
(exit)
)
)
(princ)
(setvar "osmode" oldsnap);-------------------------在你需要时恢复捕捉
)
问题已解决,谢谢各位
页:
[1]