在使用lsp时第一个循环可以正常运行,第二个循环无法运行,最后的成果应该是类似干字的半边的图形
(defun c:cxx()
(setq h (getreal "主管长="))
(setq l (getreal "支管长="))
(setq x (getint "支管数为:"))
(setq y (getint "节点数为:"))
(setq p0 (getpoint "输入起始点: "))
(setq p1(polar p0 (* 0.5 pi) h))
(command "line" p0 p1 )
(repeat x
(command
(setq p1(polar p1 (* 0.5 pi) h))
)
)
(setq p3 (entget p1))
(setq p2(polar p3 (* 2 pi) l))
(command "line" p3 p2)
(repeat y
(command
(setq p2 (polar p2 (* 2 pi) l))
)
)
)
lisp 如何实现双循环
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
在这段代码中,第一个循环是循环x次,每次绘制一条线段连接起始点和终点,终点在起始点的正下方;第二个循环是循环y次,每次绘制一条线段连接上一次终点和新的终点,终点在上一次终点的正下方。 如果第二个循环无法运行,可能是因为上一个循环结束后没有正确更新终点变量。 以下是一个可能的修正代码:(defun c:cxx() (setq h (getreal "主管长=")) (setq l (getreal "支管长=")) (setq x (getint "支管数为:")) (setq y (getint "节点数为:")) (setq p0 (getpoint "输入起始点: ")) (setq p1 (polar p0 (* 0.5 pi) h)) (command "line" p0 p1) (repeat x (setq p1 (polar p1 (* 0.5 pi) h)) (command "line" p0 p1) ) (setq p2 p1) (repeat y (setq p2 (polar p2 (* 2 pi) l)) (command "line" p1 p2) ) )在这个修正版的代码中,第一个循环结束后更新了p2的数值,使得第二个循环可以正确运行。您可以尝试运行这段修正后的代码,看看是否可以得到预期的结果。
解决 无用评论 打赏 举报