Lisp CAD 求助高手!怎么通过代码实现连续画直线?我想实现一个功能,举例,输入一组长度数字(10 20 30 40 20 23 52)其中每组有上限例如10个长度,输入长度后,输入直线角度,最好默认不输入时为零
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 15:31:01
![Lisp CAD 求助高手!怎么通过代码实现连续画直线?我想实现一个功能,举例,输入一组长度数字(10 20 30 40 20 23 52)其中每组有上限例如10个长度,输入长度后,输入直线角度,最好默认不输入时为零](/uploads/image/z/14343616-64-6.jpg?t=Lisp+CAD+%E6%B1%82%E5%8A%A9%E9%AB%98%E6%89%8B%21%E6%80%8E%E4%B9%88%E9%80%9A%E8%BF%87%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E8%BF%9E%E7%BB%AD%E7%94%BB%E7%9B%B4%E7%BA%BF%3F%E6%88%91%E6%83%B3%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E5%8A%9F%E8%83%BD%2C%E4%B8%BE%E4%BE%8B%2C%E8%BE%93%E5%85%A5%E4%B8%80%E7%BB%84%E9%95%BF%E5%BA%A6%E6%95%B0%E5%AD%97%EF%BC%8810+20+30+40+20+23+52%EF%BC%89%E5%85%B6%E4%B8%AD%E6%AF%8F%E7%BB%84%E6%9C%89%E4%B8%8A%E9%99%90%E4%BE%8B%E5%A6%8210%E4%B8%AA%E9%95%BF%E5%BA%A6%2C%E8%BE%93%E5%85%A5%E9%95%BF%E5%BA%A6%E5%90%8E%2C%E8%BE%93%E5%85%A5%E7%9B%B4%E7%BA%BF%E8%A7%92%E5%BA%A6%2C%E6%9C%80%E5%A5%BD%E9%BB%98%E8%AE%A4%E4%B8%8D%E8%BE%93%E5%85%A5%E6%97%B6%E4%B8%BA%E9%9B%B6)
Lisp CAD 求助高手!怎么通过代码实现连续画直线?我想实现一个功能,举例,输入一组长度数字(10 20 30 40 20 23 52)其中每组有上限例如10个长度,输入长度后,输入直线角度,最好默认不输入时为零
Lisp CAD 求助高手!怎么通过代码实现连续画直线?
我想实现一个功能,举例,输入一组长度数字(10 20 30 40 20 23 52)其中每组有上限例如10个长度,输入长度后,输入直线角度,最好默认不输入时为零度,切每段直线的端点处加入4mm的圆圈,我的未完成代码:
(defun tes0();输入一组线长
)
(defun tes1();循环控制
(setq p0(getpoint"\n选择起始点"))
(setq ang (getangle p0"\n选择直线方向或输入直线角度"))
)
(defun tes2();pn线起始点控制
(setq p0(getpoint"\n选择起始点"))
(setq ang (getangle p0"\n选择直线方向或输入直线角度"))
(setq le (getdist"\n输入直线长度"))
)
(defun tes3();pd线终止点控制
)
(defun c:ww () ;;划线并添加圆圈
(setvar "blipmode" 0)
(setq pn(tes2))
(setq pd(tes3)) (setq #os (getvar "osmode")) ;;取得当前捕捉设置
(setq #k (getvar "clayer")) ;;取得当前图层
(setvar "clayer" "0") ;;切换到图层0
(command "circle" pd 1.5)
(setvar "clayer" #k) ;;恢复原来图层 (setvar "osmode" #os) ;;恢复捕捉设置
(command "line" pn pd) (command pause)
(princ) )
Lisp CAD 求助高手!怎么通过代码实现连续画直线?我想实现一个功能,举例,输入一组长度数字(10 20 30 40 20 23 52)其中每组有上限例如10个长度,输入长度后,输入直线角度,最好默认不输入时为零
(defun c:ww (/ group)
;循环读入数据 2可调为你想要的数据个数
(setq group '())
(repeat 2
(setq group (cons (getreal) group))
)
(setq group (reverse group))
\x05\x05
;根据数的个数循环处理每一个长度
(setq number (length group))
(repeat number
(setq item (car group))
(setq p1 (getpoint "选择起点"))
(setq ang 0)
(if (setq ang_test (getangle "选择角度"));默认ang为0 若有输入ang 则为ang值
(setq ang ang_test) \x05\x05\x05\x05\x05
)
(setq p2 (polar p1 ang item) );使用极坐标通过起点以及角度长度获取终点坐标
(command "line" p1 p2 "")
(command "circle" p2 4)
(setq group (cdr group))
)
)
不知道是不是你想要的