大家帮我看看这个怎么实现,谢谢
我是新手,看了好多教程都还是不明白,各位大虾帮帮小弟! <P>应该是在给出初始点后,程序不断的给getreal函数,向用户要输入吧,</P><P>最好加上initget防止空和负值,然后根据输入绘图。</P> <P>我这样子行吗?</P>
<P>(defun c:com(/ PBASE PA PB PC PD PE PF PG PH PJ PK PL H L1 L2 D1 D2 D3)<BR>(setq PBASE (getpoint "\n输入左下角基点坐标:"))<BR>(setq H (getreal "输入H的值: "))<BR>(setq L1 (getreal "输入L1的值: "))<BR>(setq L2 (getreal "输入L2的值: "))<BR>(setq D1 (getreal "输入D1的值: "))<BR>(setq D2 (getreal "输入D2的值: "))<BR>(setq D3 (getreal "输入D3的值: "))<BR>(setq PA (list (car PBASE) (+ (cadr PBASE) (/ (- D1 D3) 2))))<BR>(setq PB (list (+ (car PA) H) ((cadr PA))))<BR>(setq PC (list (car PB) (+ (cadr PB) D3)))<BR>(setq PD (list (car PA) (+ (cadr PA) D3)))<BR>(setq PE (list (car PBASE) (+ (cadr PBASE) D1)))<BR>(setq PF (list (+ (car PBASE) L1) (+ (cadr PBASE) D1)))<BR>(setq PG (list (+ (car PBASE) L1) (cadr PBASE)))<BR>(setq PH (list (+ (car PBASE) L1) (+ (cadr PBASE) (/ (- D1 D3) 2))))<BR>(setq PJ (list (car PH) (+ (cadr PH) D2))<BR>(setq PK (list (+ (car PJ) L2) (cadr PK)))<BR>(setq PL (list (+ (car PH) L2) (cadr PH)))<BR>(command "pline" PBASE PA PB PC PD PE PF PG "c")<BR>(command "pline" PH PJ PK PL "c")<BR>)</P>
<P>我是菜鸟,很多都不懂的说!</P> 老是提示函数错误,不知道为什么! <P>我觉得用list不好,容易出错,</P>
<P>用polar函数比较好。</P>
<P>技巧是不断的写出来的,我就不给代码了,你自己改吧。</P> 谢谢,就把list改称polar就可以了吗? <P>程序已经可以运行但是在参数的计算上,你出现了错误,请检查改正,在传上来分享。:)</P>
<P>(defun c:com ( / os cmd PBASE PA PB PC PD PE PF PG PH PJ PK PL H L1 L2 D1 D2 D3)<BR>(first_set)<BR>(setq PBASE (getpoint "\n输入左下角基点坐标:"))<BR>(setq H (getreal "输入H的值: "))<BR>(setq L1 (getreal "输入L1的值: "))<BR>(setq L2 (getreal "输入L2的值: "))<BR>(setq D1 (getreal "输入D1的值: "))<BR>(setq D2 (getreal "输入D2的值: "))<BR>(setq D3 (getreal "输入D3的值: "))<BR>(setq PA (list (car PBASE) (+ (cadr PBASE) (/ (- D1 D3) 2))))<BR>(setq PB (list (+ (car PA) H) (cadr PA)))<BR>(setq PC (list (car PB) (+ (cadr PB) D3)))<BR>(setq PD (list (car PA) (+ (cadr PA) D3)))<BR>(setq PE (list (car PBASE) (+ (cadr PBASE) D1)))<BR>(setq PF (list (+ (car PBASE) L1) (+ (cadr PBASE) D1)))<BR>(setq PG (list (+ (car PBASE) L1) (cadr PBASE)))<BR>(setq PH (list (+ (car PBASE) L1) (+ (cadr PBASE) (/ (- D1 D3) 2))))<BR>(setq PJ (list (car PH) (+ (cadr PH) D2)))<BR>(setq PK (list (+ (car PJ) L2) (cadr PK)))<BR>(setq PL (list (+ (car PH) L2) (cadr PH)))<BR>(command "pline" PBASE PA PB PC PD PE PF PG "c")<BR>(command "pline" PH PJ PK PL "c")<BR> (end_recover)<BR>)</P>
<P><BR>(defun first_set ()<BR> (command "_.undo" "be")<BR> (setq os (getvar "osmode"))<BR> (setq cmd (getvar "cmdecho"))<BR> (setvar "osmode" 0)<BR> (setvar "cmdecho" 0)<BR> <BR>)</P>
<P>(defun end_recover ()<BR> (setvar "osmode" os)<BR> (setvar "cmdecho" cmd)<BR> (command "_.undo" "e")<BR>)</P>
<P>(princ)<BR>(prompt "\nType com to run")<BR>(princ)<BR></P> <P class=MsoNormal align=left><FONT face=华文行楷 size=5>语法 </FONT></P>
<P class=MsoNormal align=left><FONT face=华文行楷 size=5> </FONT><FONT size=3>(polar pt angle distance)</FONT></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><FONT face=华文行楷 size=5>功能及参数</FONT></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><FONT face=华文行楷 size=5> </FONT><FONT size=3>此函数将返回距</FONT><FONT size=3> UCS </FONT><FONT size=3>某</FONT><FONT size=3> pt </FONT><FONT size=3>某</FONT><FONT size=3> angle </FONT><FONT size=3>某</FONT><FONT size=3> distance </FONT><FONT size=3>的</FONT><FONT size=3> UCS3D </FONT><FONT size=3>点。</FONT><FONT size=3>angle </FONT><FONT size=3>是从</FONT><FONT size=3> X </FONT><FONT size=3>轴开始的角度</FONT><FONT size=3>, </FONT><FONT size=3>以逆时针方向递增。虽然</FONT><FONT size=3>pt</FONT><FONT size=3>可能是</FONT><FONT size=3>3D</FONT><FONT size=3>点</FONT><FONT size=3>, angle </FONT><FONT size=3>则永远相对于目前的基准绘图平面。</FONT></P>
<P class=MsoFooter style="LAYOUT-GRID-MODE: both"><FONT face=华文行楷 size=5>范例</FONT></P>
<P class=MsoFooter style="LAYOUT-GRID-MODE: both"><FONT size=3> (polar '(1 1 3.5) 0.785398 1.414214)</FONT><FONT size=3></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left> 将返回:</P>
<P class=MsoNormal style="MARGIN-LEFT: 62.6pt; TEXT-INDENT: -62.6pt; TEXT-ALIGN: left" align=left></FONT><FONT size=3> (2.0 2.0 3.5)</FONT></P> <P>谢谢各位大虾</P>
<P>我这样成功实现了,谢谢各位指点</P>
<P>(defun c:com(/ PBASE PA PB PC PD PE PF PG PH PJ PK PL H L1 L2 D1 D2 D3)<BR>(setq PBASE (getpoint "\n输入左下角基点坐标:"))<BR>(setq H (getreal "输入H的值: "))<BR>(setq L1 (getreal "输入L1的值: "))<BR>(setq L2 (getreal "输入L2的值: "))<BR>(setq D1 (getreal "输入D1的值: "))<BR>(setq D2 (getreal "输入D2的值: "))<BR>(setq D3 (getreal "输入D3的值: "))<BR>(setq PA (polar PBASE (/ pi 2) (/ (- D1 D3) 2)))<BR>(setq PB (polar PA 0 H))<BR>(setq PC (polar PB (/ pi 2) D3))<BR>(setq PD (polar PA (/ pi 2) D3))<BR>(setq PE (polar PBASE (/ pi 2) D1))<BR>(setq PF (polar PE 0 L1))<BR>(setq PG (polar PBASE 0 L1))<BR>(setq PH (polar PG (/ pi 2) (/ (- D1 D2) 2)))<BR>(setq PJ (polar PH (/ pi 2) D2))<BR>(setq PK (polar PJ 0 L2))<BR>(setq PL (polar PH 0 L2))<BR>(command "pline" PBASE PA PB PC PD PE PF PG "c")<BR>(command "pline" PH PJ PK PL "c")<BR>)</P> 为什么我有时候画出来的是这样的??
页:
[1]
2