早教吧作业答案频道 -->其他-->
LispCAD求助高手!怎么通过代码实现连续画直线?我想实现一个功能,举例,输入一组长度数字(10203040202352)其中每组有上限例如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) )
我想实现一个功能,举例,输入一组长度数字(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) )
▼优质解答
答案和解析
(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))
)
)
不知道是不是你想要的
;循环读入数据 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))
)
)
不知道是不是你想要的
看了 LispCAD求助高手!怎么...的网友还看了以下:
C++程序,限制输入长度,保留小数位数1.设圆半径r=1.5,圆柱高h=3,圆柱体积v用cin输入数 2020-03-30 …
matlab求助!matlab求函数值的问题y=2*x,然后求x=1:1:100时的y的值,最终需 2020-05-12 …
求助一个用两个重要极限求极限的问题!已解决如图倒数第3步怎么到倒数第二步的我认为应该是9*e的次方 2020-05-14 …
在总账系统中录入科目期初余额时,辅助账的期初余额要求在辅助项中输入,其借贷方累计发生额则可以直接输入 2020-05-31 …
求这个极限求助!当n趋向无穷大时求下列极限lim(n*ln(n))^(1/n)n乘以ln(n)再开 2020-07-13 …
求助数学高手证明X^3+X-3=0至少有一个正实根如题,我最近看到极限,可能用极限求吧.请指教为什 2020-07-15 …
如果从发电厂到用户的输电距离为10千米,限定导线上的电压损失为1000伏,功率损失不大于30千瓦,求 2020-11-30 …
电力电子技术题目求助.(关于升压斩波这一块)有一个Boost升压斩波电路,输入直流电压Ud=50V, 2020-11-30 …
几个简单的matlab程序编写~~求帮助·(1)编写函数编写一函数求输入两个正整数m和n,求其最大公 2020-12-08 …
(紧急求助)二输入端的与门一个输入端接高电平,另一个输入信号时,则输出与输入信号的关系是?A同相B反 2021-01-10 …