作业帮 > 语文 > 作业

Lisp CAD 我想实现连续直线.

来源:学生作业帮 编辑:作业帮 分类:语文作业 时间:2024/05/11 00:05:27
Lisp CAD 我想实现连续直线.
之前你帮我请教这个问题时可能没有说清楚,所以朋友们帮忙编辑的答案没有彻底解决我的问题,我说一下我的控制流程,通过第一次输入角度(默认零度)控制一组线角度,也就是这组线角度相同,然后输入这组线每段长度,则生成直线是一组每段特定长度直线,且每段直线端点加上一个直径4圆圈,
lyt,你现在实现了连续画线,但是每次都是重新选择端点,能否实现只选择一次第一点,然后连续画线呢
(defun c:ww (/ group)
;输入角度 默认0
(setq ang 0)
(if (setq ang_test (getangle "选择角度"));默认ang为0 若有输入ang 则为ang值
(setq ang ang_test) 
)
;循环读入数据 2可调为你想要的数据个数
(setq group '())
(repeat 2
(setq group (cons (getreal "输入长度") group))
)
(setq group (reverse group))
;根据数的个数循环处理每一个长度
(setq number (length group))
(repeat number
(setq item (car group))
(setq p1 (getpoint "选择起点"))
(setq p2 (polar p1 ang item) );使用极坐标通过起点以及角度长度获取终点坐标
(command "line" p1 p2 "")
(command "circle" p2 2)
(setq group (cdr group))
)
)

把原来角度语句提前就好了 你看看流程对不 或者还需要什么功能
再问: 你好,lyt,你现在实现了连续画线,但是每次都是重新选择端点,能否实现只选择一次第一点,然后连续画线呢?
再答: (defun c:ww (/ group) ;输入角度 默认0 (setq ang 0) (if (setq ang_test (getangle "选择角度"));默认ang为0 若有输入ang 则为ang值 (setq ang ang_test) ) ;循环读入数据 2可调为你想要的数据个数 (setq group '()) (repeat 2 (setq group (cons (getreal "输入长度") group)) ) (setq group (reverse group)) ;根据数的个数循环处理每一个长度 (setq number (length group)) (setq p1 0) (repeat number (setq item (car group)) (if (= p1 0) (setq p1 (getpoint "选择起点")) ) (setq p2 (polar p1 ang item) );使用极坐标通过起点以及角度长度获取终点坐标 (command "line" p1 p2 "") (setq p1 p2) (command "circle" p2 2) (setq group (cdr group)) ) ) 你看是这样么