autolisp绘制金刚石图案
第一次运行时,绘制出的图形是正确的,再次运行时图形就不完整了,不知怎么回事?下面是源代码(defun c:stone ()
(setq a 500 b 500 r 100)
(setq n 25 angl (/ (* pi 2) n))
(setq i 0)
(while (< i n)
(setq j (1+ i))
(while (< j n)
(command "pline" (list (+ a (* r (sin (* i angl)))) (- b (* r (cos (* i angl)))))
(list (+ a (* r (sin (* j angl)))) (- b (* r (cos (* j angl)))))
"c")
(setq j (1+ j))
)
(setq i (1+ i))
)
)
运行结果挺壮观的! 把变量置为局部变量,生成图元建议用entmake,速度会快n倍
(defun c:tt (/ a b r n angl i j)
(setq pt (getpoint "\n请指定绘图中点:"))
(if pt
(progn
(setq r (getreal "\n请输入图形半径<100>:"))
(if (null r)(setq r 100.))
(setq a (car pt) b (cadr pt))
(setq n 25 angl (/ (* pi 2) n))
(setq i 0)
(while (< i n)
(setq j (1+ i))
(while (< j n)
(entmake (list '(0 . "LINE")
'(100 . "AcDbEntity")
'(100 . "AcDbLine")
(cons 10
(list (+ a (* r (sin (* i angl))))
(- b (* r (cos (* i angl))))
)
)
(cons 11
(list (+ a (* r (sin (* j angl))))
(- b (* r (cos (* j angl))))
)
)
'(210 0. 0. 1.)
)
)
(setq j (1+ j))
)
(setq i (1+ i))
)
)
)
)
仲文玉 发表于 2012-12-29 11:05 static/image/common/back.gif
把变量置为局部变量,生成图元建议用entmake,速度会快n倍
用entmake速度就是快,不知我出错的原因是否就没把变量设为局部变量的原因? 是的,楼上正解。
正如楼上所说,用entmake好得多,我比较了下快近20倍!
页:
[1]