[求助][autolisp]刚学,试编个画五角星的lip,但不成功,求解,谢[新问题]
本帖最后由 作者 于 2008-6-1 15:08:39 编辑 <br /><br /> <p>刚学autolisp,试编个画五角星的lip,但不成功,求解,谢</p><p>写的程序如下:</p><p>(defun c:wu()</p><p> </p><p>;以下p1值须由使用者输入,p2、p3、p4、p5自动运算</p><p>(setq p1 (getpoint "请输入第一点:"))</p><p>(setq l (getreal "请输入五角星每边长度:"))</p><p>(setq p2 (polar p1 (* pi (/ -36 180)) l))</p><p>(setq p3 (polar p2 (* pi (/ 108 180)) l))</p><p>(setq p4 (polar p3 (* pi (/ -108 180)) l))</p><p>(setq p5 (polar p4 (* pi (/ 36 180)) l))</p><p>;按p1、p2、p3、p4、p5画线</p><p>(command "pline" p1 p2 p3 p4 p5 "c")</p><p>(prin1)</p><p>)</p><p><br/>但不能实现我要的功能,请高人解答,谢谢。。。</p><p>图形如下:</p><p></p> <p>已得解</p><p>(setq p2 (polar p1 (* pi (/ -36 180)) l))<br/>(setq p3 (polar p2 (* pi (/ 108 180)) l))<br/>(setq p4 (polar p3 (* pi (/ -108 180)) l))<br/>(setq p5 (polar p4 (* pi (/ 36 180)) l))</p><p>的180换成180.0就ok了。。。。</p> <p>又写了一个,不同方式画,呵呵</p><p></p><p>(defun c:wu2()</p><p>;设计思想:<br/>;第一点指定五星的中心点cen,<br/>;输入外接圆半径r,<br/>;五等分取点p1、p2、p3、p4、p5,点1角度定为90度,每点间角度为360/5=72度<br/>;pi *((90+72)/180)<br/>;连接点画出五角星</p><p>(setq cen (getpoint "\n请指定五角星中心点"))<br/>(setq r (getreal "\n请输入五角星外接圆半径:"))<br/>(setq p1 (polar cen (* pi 0.5) r))<br/>(setq p2 (polar cen (* pi (/ (+ 90 (* 72 1)) 180.0)) r))<br/>(setq p3 (polar cen (* pi (/ (+ 90 (* 72 2)) 180.0)) r))<br/>(setq p4 (polar cen (* pi (/ (+ 90 (* 72 3)) 180.0)) r))<br/>(setq p5 (polar cen (* pi (/ (+ 90 (* 72 4)) 180.0)) r))<br/>(command "line" p1 p3 p5 p2 p4 "c")<br/>(prin1)</p><p>)<br/></p> <p></p><p></p><p>如果我想画如上图的五角星,若不添加其它点,可以用画完成后剪掉中间的线不,我刚学,呵呵</p> <p>我只知道可以的.</p><p>我也刚学所以.........</p> <div>(defun c:xing()<br/>(while</div><div>(progn<br/>(if (setq pt0 (getpoint "\n请输入五角星起点:"))<br/>(setq dist1 (getdist "\n请输入边长:"))<br/>)<br/>)<br/>(setq List1 (list pt0))<br/>(setq i 0)<br/>(repeat 5<br/>(setq Pt0 (polar pt0 (* (/ pi 5) (* i 6)) dist1))<br/>(setq List1 (append List1 (list Pt0)))<br/>(setq i (+ i 1))<br/>)<br/>(command "PLINE" (foreach Pt List1 (command Pt)))<br/>)<br/>(princ)<br/>)</div><p> </p>
页:
[1]